Please find my comments inline.
On Fri, Feb 7, 2014 at 8:18 AM, Jason Ekstrand <[email protected]> wrote: > Hi Prabhu, > Could you be a little more specific as to what you are doing. It sounds > like you are either writing a client or trying to write the client-side > wayland bits for a driver stack. However, it's kind of hard from you > description to tell exactly what you're working on. Nevertheless, I will > try to answer your question as best I can. > => Adding support to EGL for wayland > > While Weston itself is single-threaded, the libwayland client library can > handle multiple threads rather well. Look into wl_event_queue which allows > you to manage what events get called on what thread. Also, any request can > be called from any thread. The only issue is in the synchronization that > your app may need to do (know when wl_surface.commit occurs relative to > wl_shell_surface.set_maximized for instance). If you want to get a frame > completion event in another thread, simply call wl_surface.frame, > wl_surface.commit and then add the callback you got from wl_surface.frame > to the wl_event_queue for that thread. > > Also, I'm confused by the relationship between your eglSwapBuffers calls > and your wl_surface.commit calls. eglSwapBuffers should be calling > wl_surface.commit before it returns. Sometimes this means the underlying > graphics drivers pass sync fences or do other things to keep from doing a > full glFinish and stalling the GPU. Therefore, in most cases, you shouldn't > need to be calling wl_surface.commit manually. Perhaps I'm just > misunderstanding something? > => I'm taking reference of dri2_swap_buffers_with_damage from http://cgit.freedesktop.org/mesa/mesa/tree/src/egl/drivers/dri2/platform_wayland.c. Assume 3D frame is complex and really takes more time for the 3D GPU to complete the frame, GPU will be still processing the frame after return from eglSwapBuffers. I will get notification of the frame completion in different thread. In my assumption calls following wl_surface.attach, wl_surface.damage, wl_surface.commit, wl_display.flush need to be called from in different thread. Can this possible by creating callback and setevent from different thread(frame completion thread). I assumg wl_surface.frame is the compositor frame completion event?? > > I hope that helps, > --Jason Ekstrand > > > On Fri, Feb 7, 2014 at 8:03 AM, Prabhu S <[email protected]> wrote: > >> Hello, >> eglSwapBuffers is a non blocking call. Normally, 3D GPU will be used both >> for content creation and composition, in that case everything will end up >> the GPU unit. So the end frame will be will be synchronized. (assuming 1 >> GPU unit). >> >> I have a scenario, where 3D GPU being used for creating content and blit >> engine used for Weston composition. I'm getting frame completion from 3D >> engine in different thread (not in the same thread eglSwapBuffers calling >> thread). Currently eglSwapBuffers calling thread need to wait for the frame >> completion and then call wl_surface_commit to notify Wayland compositor. >> This takes out most of the performance since GPUs are not active all the >> time. >> >> wl_surface_commit cannot be called from different thread AFAIK. Some >> advise, suggestions would be appreciated. >> >> Thanks >> Prabhu >> >> _______________________________________________ >> wayland-devel mailing list >> [email protected] >> http://lists.freedesktop.org/mailman/listinfo/wayland-devel >> >> >
_______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
