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
Solved! Go to Solution.
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
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
timesyssupport can you attend this case?
Unfortunately, we are not supporting OpenVG on this Vybrid part. Does the Freescale Vybrid team have any comment?
Thanks,
Timesys Support
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