OpenVG MQX Vybrid - buffer-handling / behaviour of eglMakeCurrent

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

OpenVG MQX Vybrid - buffer-handling / behaviour of eglMakeCurrent

Jump to solution
1,031 Views
slw
Contributor III

Hi,

My system includes the following components:

- Freescale MQX4.1

- Freescale Vybrid VF522

- OpenVG 0.7.0

I want to use OpenVG to render into 2 different layers. At the moment my solution is something like that (using layer 0 and layer 3):

...

fbdisp0 = fbws_open_display(0, &buf_info0);

fbdisp3 = fbws_open_display(3, &buf_info0);

fbws_create_window(fbdisp0, 0, 0, info.width, info.height);

fbws_create_window(fbdisp3, 0, 0, info.width, info.height);

eglBindAPI(EGL_OPENVG_API);

....

eglCreateContext(disp0, cfg[i], ...);

eglCreateContext(disp3, cfg[i], ...);

eglCreateWindowSurface(disp0, ....);

eglCreateWindowSurface(disp3, ....);

....

while(1)

{

     eglMakeCurrent(disp0, surf0, surf0, ctx0);

     .... calling vg-functions to render to layer 0.....

     eglSwapbuffers(disp0, surf0);

     eglMakeCurrent(disp3, surf3, surf3, ctx3);

     .... calling vg-functions to render to layer .....

     eglSwapbuffers(disp3, surf3);

}

The framebuffer-pointer from the single DCU-layer is switched correctly : buffer[0] > buffer[1] > buffer[2] > buffer[0] > buffer[1] .....

But the OpenVG-Library always renders his data to buffer[0].

The problem is still there when I only use 1 context, 1 layer, ... but using eglMakeCurrent.

Any hints ?

Regards

Sebastian

Labels (2)
1 Solution
547 Views
andre_silva
NXP Employee
NXP Employee

I contacted the Vybrid team and as you said, it is not supported. The solution can be provided, but in this case, customer needs to sign up for a special service.

regards,

Andre

View solution in original post

0 Kudos
4 Replies
547 Views
slw
Contributor III

Update:

When I change my code in the main-loop to that:

while(1)

{

     eglMakeCurrent(disp0, surf0, surf0, ctx0)

     .... calling vg-functions to render to layer 0.....

     eglSwapbuffers(disp0, surf0)

     .... calling vg-functions to render to layer 0.....

     eglSwapbuffers(disp0, surf0);

     .... calling vg-functions to render to layer 0.....

     eglSwapbuffers(disp0, surf0);

     eglMakeCurrent(disp3, surf3, surf3, ctx3)

     .... calling vg-functions to render to layer 3.....

     eglSwapbuffers(disp3, surf3)

     .... calling vg-functions to render to layer 3.....

     eglSwapbuffers(disp3, surf3);

     .... calling vg-functions to render to layer 3.....

     eglSwapbuffers(disp3, surf3);

}

then the 2 layers are shown correctly. It seems that eglMakeCurrent always resets the internal draw-buffer-index to 0.

Is this an error inside eglMakeCurrent-function or is it possible to set the internal draw-buffer-index ?

Regards

Sebastian

0 Kudos
547 Views
karina_valencia
NXP Apps Support
NXP Apps Support

timesyssupport can you attend this case?

0 Kudos
547 Views
timesyssupport
Senior Contributor II

Unfortunately, we are not supporting OpenVG on this Vybrid part. Does the Freescale Vybrid team have any comment?

Thanks,

Timesys Support

0 Kudos
548 Views
andre_silva
NXP Employee
NXP Employee

I contacted the Vybrid team and as you said, it is not supported. The solution can be provided, but in this case, customer needs to sign up for a special service.

regards,

Andre

0 Kudos