Bug 106319

Summary: [EFL] [WebGL] Remove any GLX dependencies from X11WindowResources.
Product: WebKit Reporter: Kalyan <kalyan.kondapally>
Component: WebKit EFLAssignee: Kalyan <kalyan.kondapally>
Status: RESOLVED FIXED    
Severity: Normal CC: laszlo.gombos, lucas.de.marchi, noam, ostap73, webkit.review.bot, zeno
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Bug Depends on: 105136    
Bug Blocks:    
Attachments:
Description Flags
patch
none
patch v2 none

Kalyan
Reported 2013-01-08 03:52:37 PST
After https://bugs.webkit.org/show_bug.cgi?id=105136, we have GLX dependencies in X11WindowResources class. This is wrong and we should try to avoid any GL calls here( We could be using either GLX or EGL). we differ the setgeometry calls till we actually blit the texture contents to FBO in our platformLayer(GraphicsContext3DPrivate). We eventually call swapbuffers after the blit operation anyway. So, is the issue here that the buffers are not resized properly before the blit operation happens ?? (i.e calling glviewport with right attributes in GLPlatformSurface::setGeometry).
Attachments
patch (2.67 KB, patch)
2013-01-08 19:35 PST, Kalyan
no flags
patch v2 (2.22 KB, patch)
2013-01-09 19:21 PST, Kalyan
no flags
Viatcheslav Ostapenko
Comment 1 2013-01-08 08:44:23 PST
(In reply to comment #0) > After https://bugs.webkit.org/show_bug.cgi?id=105136, we have GLX dependencies in X11WindowResources class. This is wrong and we should try to avoid any GL calls here( We could be using either GLX or EGL). > > we differ the setgeometry calls till we actually blit the texture contents to FBO in our platformLayer(GraphicsContext3DPrivate). We eventually call swapbuffers after the blit operation anyway. So, is the issue here that the buffers are not resized properly before the blit operation happens ?? (i.e calling glviewport with right attributes in GLPlatformSurface::setGeometry). As I wrote in 105136, glViewport doesn't help.
Kalyan
Comment 2 2013-01-08 09:03:29 PST
(In reply to comment #1) > (In reply to comment #0) > > After https://bugs.webkit.org/show_bug.cgi?id=105136, we have GLX dependencies in X11WindowResources class. This is wrong and we should try to avoid any GL calls here( We could be using either GLX or EGL). > As I wrote in 105136, glViewport doesn't help. K, I have a patch which does call swapbuffers in the platformLayer. This should handle all the cases i.e when surface is single buffered or double buffered and leave it to the surface to handle it as necessary. I haven't checked the issue with EGL but I assume the issue should be present(if the buffers are not being resized automatically). While using EGL, we are currently dependent on native window/pixmap (X11 in this case) to share content with UI process.
Kalyan
Comment 3 2013-01-08 19:35:23 PST
Kalyan
Comment 4 2013-01-09 19:21:23 PST
Created attachment 182047 [details] patch v2
Viatcheslav Ostapenko
Comment 5 2013-01-09 19:25:02 PST
Comment on attachment 182047 [details] patch v2 View in context: https://bugs.webkit.org/attachment.cgi?id=182047&action=review > Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:53 > + XFlush(m_sharedResources->x11Display()); For me XFlush didn't do anything good here. And glXSwapBuffers does it itself. At least mesa does (check mesa source at src/glx/glxcmds.c).
Kalyan
Comment 6 2013-01-09 19:29:04 PST
This patch handles only the GLX changes. EGL does seem to have the issue which needs to be handled separately. It would be good to have a layout test for this, to avoid breaking it.
Kalyan
Comment 7 2013-01-09 19:33:09 PST
(In reply to comment #5) > (From update of attachment 182047 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=182047&action=review > > > Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:53 > > + XFlush(m_sharedResources->x11Display()); > > For me XFlush didn't do anything good here. > And glXSwapBuffers does it itself. At least mesa does (check mesa source at src/glx/glxcmds.c). That is true. With EGL we would need this though or use EGLWAITCLIENT for example. This just ensures that the buffers on X are updated appropriately. This doesn't involve a round trip to XServer like XSync does, so shouldn't be that costly and doesn't add a overhead on glx side.
WebKit Review Bot
Comment 8 2013-01-09 19:44:21 PST
Comment on attachment 182047 [details] patch v2 Clearing flags on attachment: 182047 Committed r139276: <http://trac.webkit.org/changeset/139276>
WebKit Review Bot
Comment 9 2013-01-09 19:44:25 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.