Bug 108034 - [EFL][WebGL] Add proper checks to enable GraphicsSurface usage on EGL without XCompositeWindow.
Summary: [EFL][WebGL] Add proper checks to enable GraphicsSurface usage on EGL without...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit EFL (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Normal
Assignee: Kalyan
URL:
Keywords:
Depends on:
Blocks: 105286 105659
  Show dependency treegraph
 
Reported: 2013-01-27 10:47 PST by Kalyan
Modified: 2013-03-04 10:56 PST (History)
13 users (show)

See Also:


Attachments
Patch (6.57 KB, patch)
2013-02-25 04:06 PST, Kalyan
laszlo.gombos: review-
Details | Formatted Diff | Diff
patchv2 (5.12 KB, patch)
2013-02-28 21:21 PST, Kalyan
laszlo.gombos: review+
buildbot: commit-queue-
Details | Formatted Diff | Diff
patchforlanding (6.01 KB, patch)
2013-03-03 17:30 PST, Kalyan
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Kalyan 2013-01-27 10:47:08 PST
Currently, we set GRAPHICS_SURFACE to true if support for XCompositeWindow is identified during compile time. This is ok, when using GLX. With EGL and GLES2.0 we want to use XPixmap or some kind of Drm Buffer(if supported) instead of XCompositeWindow. We could support both Window and Pixmap for EGL but I think it is unnecessary overhead and we could just use XPixmap for both desktop and when using GLES2.0. Thus, it would be be better to introduce a new macro to identify XCompsiteWindow support and alwayse set GraphicsSurface.
Comment 1 Kalyan 2013-02-25 04:06:44 PST
Created attachment 190030 [details]
Patch
Comment 2 Laszlo Gombos 2013-02-28 11:06:29 PST
Comment on attachment 190030 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=190030&action=review

For now we should assume XCompositeWindow for USE(GLX). I would not yet expose the guard for XCOMPOSITE to the common code.

> Source/WebCore/platform/graphics/opengl/GLPlatformSurface.cpp:31
> -#if HAVE(GLX)
> +#if USE(GLX)

I do not think the name change here is necessary. I would remove this change.

> Source/WebCore/platform/graphics/surfaces/glx/GLXConfigSelector.h:154
> -#if USE(GRAPHICS_SURFACE)
> +#if USE(XCOMPOSITE) || (PLATFORM(QT) && USE(GRAPHICS_SURFACE))

I would just use USE(GRAPHICS_SURFACE) && USE(GLX) as a guard and set WTF_USE_GLX for Qt (perhaps in Platform.h or in the Qt build system).

> Source/WebCore/platform/graphics/surfaces/glx/X11Helper.cpp:186
> -#if USE(GRAPHICS_SURFACE)
> +#if USE(XCOMPOSITE) || (PLATFORM(QT) && USE(GRAPHICS_SURFACE))

Ditto.

> Source/WebCore/platform/graphics/surfaces/glx/X11Helper.h:36
> +#if USE(XCOMPOSITE) || (PLATFORM(QT) && USE(GRAPHICS_SURFACE))

USE(GLX)

> Source/cmake/OptionsEfl.cmake:189
> +        set(USE_GRAPHICS_SURFACE 1)

I think we should move this rule out from the build system into Platform.h.

> Source/cmake/OptionsEfl.cmake:205
> +             set(USE_GRAPHICS_SURFACE 1)

Ditto we should remove this line and move the rule to Platform.h. Would the following work in Platform.h ? 

#if (USE(EGL) && PLATFORM(EFL)) || (USE(GLX) && (PLATFORM(EFL) || PLATFORM(QT)))
#define WTF_USE_GRAPHICS_SURFACE 1
#endif

Fail the build if there is no Xcomposite and add a FIXME to add support for it later.

# FIXME: Add support for NOT X11_Xcomposite for GLX
if (NOT X11_Xcomposite_FOUND OR NOT X11_Xrender_FOUND)
message( FATAL_ERROR "GLX support requires X11_Xcomposite.")
endif ()

> ChangeLog:8
> +        Add a macro to identify XComposite ext support.

Let's delay adding the macro until we have code supporting the !USE(XCOMPOSITE) case.
Comment 3 Kalyan 2013-02-28 20:10:24 PST
updated the bug title to reflect the changes.
Comment 4 Kalyan 2013-02-28 21:21:16 PST
Created attachment 190879 [details]
patchv2
Comment 5 Kalyan 2013-02-28 21:25:05 PST
(In reply to comment #2)
> (From update of attachment 190030 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=190030&action=review
> 
> For now we should assume XCompositeWindow for USE(GLX). I would not yet expose the guard for XCOMPOSITE to the common code.
> 
> > Source/WebCore/platform/graphics/opengl/GLPlatformSurface.cpp:31
> > -#if HAVE(GLX)
> > +#if USE(GLX)
> 

I would prefer to change it to USE as even though we have the support for GLX we dont use it if one builds with EGL support during compile time. This would also sync in with other places with similar checks(i.e our own code and also on GTK side). Any thoughts?

> 
> Let's delay adding the macro until we have code supporting the !USE(XCOMPOSITE) case.

Done.
Comment 6 Build Bot 2013-02-28 23:43:30 PST
Comment on attachment 190879 [details]
patchv2

Attachment 190879 [details] did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16763197

New failing tests:
editing/selection/selection-invalid-offset.html
Comment 7 Laszlo Gombos 2013-03-01 13:05:45 PST
(In reply to comment #5)
> (In reply to comment #2)
> > (From update of attachment 190030 [details] [details])
> > View in context: https://bugs.webkit.org/attachment.cgi?id=190030&action=review
> > 
> > For now we should assume XCompositeWindow for USE(GLX). I would not yet expose the guard for XCOMPOSITE to the common code.
> > 
> > > Source/WebCore/platform/graphics/opengl/GLPlatformSurface.cpp:31
> > > -#if HAVE(GLX)
> > > +#if USE(GLX)
> > 
> 
> I would prefer to change it to USE as even though we have the support for GLX we dont use it if one builds with EGL support during compile time. This would also sync in with other places with similar checks(i.e our own code and also on GTK side). Any thoughts?

Ok, I have not realized that we're already using _both_ HAVE(GLX) and USE(GLX) in the code. Standardizing on USE(GLX) make sense to me.
Comment 8 Laszlo Gombos 2013-03-01 13:12:04 PST
Comment on attachment 190879 [details]
patchv2

r=me. 

We should move X11Helper our form the glx directory as well, I find it a bit confusing. Can you file a bug for that ?
Comment 9 Kalyan 2013-03-03 17:30:07 PST
Created attachment 191156 [details]
patchforlanding
Comment 10 WebKit Review Bot 2013-03-03 23:59:47 PST
Comment on attachment 191156 [details]
patchforlanding

Clearing flags on attachment: 191156

Committed r144602: <http://trac.webkit.org/changeset/144602>
Comment 11 WebKit Review Bot 2013-03-03 23:59:53 PST
All reviewed patches have been landed.  Closing bug.
Comment 12 Kalyan 2013-03-04 10:56:12 PST
(In reply to comment #8)
> (From update of attachment 190879 [details])
> r=me. 
> 
> We should move X11Helper our form the glx directory as well, I find it a bit confusing. Can you file a bug for that ?

Created a new issue for this: 
https://bugs.webkit.org/show_bug.cgi?id=111347