It appears that if trying to build with gstreamer but without GL, GstreamerGL is still somehow enabled (despite apparent efforts in the build system to conditionalize GstreamerGL on GL), leading to build failures: -o Source/WebCore/CMakeFiles/WebCore.dir/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.o -c /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp In file included from /usr/include/glib-2.0/gobject/gobject.h:24, from /usr/include/glib-2.0/gobject/gbinding.h:29, from /usr/include/glib-2.0/glib-object.h:23, from /usr/include/gstreamer-1.0/gst/gstenumtypes.h:7, from /usr/include/gstreamer-1.0/gst/gst.h:31, from /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h:24, from /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:24, from /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:28, from /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:26: /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: In member function ‘bool WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext()’: /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:527:144: error: ‘WTF::match_constness<WebCore::PlatformDisplay, WebCore::PlatformDisplayWayland>::type’ {aka ‘class WebCore::PlatformDisplayWayland’} has no member named ‘eglDisplay’; did you mean ‘m_display’? m_glDisplay = adoptGRef(GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay()))); ^~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:527:56: error: ‘gst_gl_display_egl_new_with_egl_display’ was not declared in this scope m_glDisplay = adoptGRef(GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay()))); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:527:56: note: suggested alternative: ‘gst_gl_display_get_gl_api’ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:529:134: error: ‘WTF::match_constness<WebCore::PlatformDisplay, WebCore::PlatformDisplayWayland>::type’ {aka ‘class WebCore::PlatformDisplayWayland’} has no member named ‘eglDisplay’; did you mean ‘m_display’? m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay())); ^~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:529:46: error: ‘gst_gl_display_egl_new_with_egl_display’ was not declared in this scope m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay())); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:529:46: note: suggested alternative: ‘gst_gl_display_get_gl_api’ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:545:46: error: ‘class WebCore::PlatformDisplay’ has no member named ‘sharingGLContext’ GLContext* webkitContext = sharedDisplay.sharingGLContext(); ^~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:557:62: error: ‘class WebCore::GLContext’ has no member named ‘platformContext’; did you mean ‘_vptr.GLContext’? PlatformGraphicsContext3D contextHandle = webkitContext->platformContext(); ^~~~~~~~~~~~~~~ _vptr.GLContext /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:562:134: error: ‘glAPI’ was not declared in this scope m_glContext = adoptGRef(gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI)); ^~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:562:134: note: suggested alternative: ‘GLAPI’ m_glContext = adoptGRef(gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI)); ^~~~~ GLAPI /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:564:124: error: ‘glAPI’ was not declared in this scope m_glContext = gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI); ^~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:564:124: note: suggested alternative: ‘GLAPI’ m_glContext = gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI); ^~~~~ GLAPI /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: In member function ‘void WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer()’: /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:930:12: error: ‘TextureMapperPlatformLayerProxy’ has not been declared [](TextureMapperPlatformLayerProxy& proxy) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: In lambda function: /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:932:37: error: request for member ‘lock’ in ‘proxy’, which is of non-class type ‘int’ LockHolder locker(proxy.lock()); ^~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:934:23: error: request for member ‘isActive’ in ‘proxy’, which is of non-class type ‘int’ if (proxy.isActive()) ^~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:935:23: error: request for member ‘dropCurrentBufferWhilePreservingTexture’ in ‘proxy’, which is of non-class type ‘int’ proxy.dropCurrentBufferWhilePreservingTexture(); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: In member function ‘void WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer()’: /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:941:21: error: ‘m_platformLayerProxy’ was not declared in this scope proxyOperation(*m_platformLayerProxy); ^~~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:941:21: note: suggested alternative: ‘platformLayer’ proxyOperation(*m_platformLayerProxy); ^~~~~~~~~~~~~~~~~~~~ platformLayer /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: In member function ‘virtual bool WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture(WebCore::GraphicsContext3D*, Platform3DObject, GC3Denum, GC3Dint, GC3Denum, GC3Denum, GC3Denum, bool, bool)’: /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:990:21: error: ‘GstVideoFrameHolder’ was not declared in this scope std::unique_ptr<GstVideoFrameHolder> frameHolder = std::make_unique<GstVideoFrameHolder>(m_sample.get(), texMapFlagFromOrientation(m_videoSourceOrientation), true); ^~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:990:21: note: suggested alternative: ‘GstVideoFrameFlags’ std::unique_ptr<GstVideoFrameHolder> frameHolder = std::make_unique<GstVideoFrameHolder>(m_sample.get(), texMapFlagFromOrientation(m_videoSourceOrientation), true); ^~~~~~~~~~~~~~~~~~~ GstVideoFrameFlags /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:990:40: error: template argument 1 is invalid std::unique_ptr<GstVideoFrameHolder> frameHolder = std::make_unique<GstVideoFrameHolder>(m_sample.get(), texMapFlagFromOrientation(m_videoSourceOrientation), true); ^ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:990:40: error: template argument 2 is invalid /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:990:110: error: ‘texMapFlagFromOrientation’ was not declared in this scope std::unique_ptr<GstVideoFrameHolder> frameHolder = std::make_unique<GstVideoFrameHolder>(m_sample.get(), texMapFlagFromOrientation(m_videoSourceOrientation), true); ^~~~~~~~~~~~~~~~~~~~~~~~~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:990:110: note: suggested alternative: ‘DefaultImageOrientation’ std::unique_ptr<GstVideoFrameHolder> frameHolder = std::make_unique<GstVideoFrameHolder>(m_sample.get(), texMapFlagFromOrientation(m_videoSourceOrientation), true); ^~~~~~~~~~~~~~~~~~~~~~~~~ DefaultImageOrientation /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:992:33: error: base operand of ‘->’ is not a pointer auto textureID = frameHolder->textureID(); ^~ /var/tmp/portage/net-libs/webkit-gtk-2.22.4/work/webkitgtk-2.22.4/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:996:28: error: base operand of ‘->’ is not a pointer auto size = frameHolder->size(); ^~ There's a if (DEFINED ENABLE_OPENGL) WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_OPENGL) endif () but this part appears to still fail. I happened to be building with EGL still enabled (with GL disabled), so it's not from EGL being disabling, either. Though maybe there are some missing checks about EGL too, if it's needed for window creation for gstreamer code; I believe lack of EGL currently only errors out for when wayland and/or gles2 are enabled, but might be mistaken.
> There's a > if (DEFINED ENABLE_OPENGL) > WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_OPENGL) > endif () > > but this part appears to still fail. I think the problem is that the dependency is not added if ENABLE_OPENGL is not defined. The intent was for that to disable USE_GSTREAMER_GL if ENABLE_OPENGL is turned off, but the effect is to do nothing because the code will only be executed if ENABLE_OPENGL is on. The condition was probably added because the file is shared between GTK and WPE, and WPE does not have an ENABLE_OPENGL option. Please test this speculative fix: if (PORT STREQUAL "GTK") WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_OPENGL) endif ()
Out of curiosity, why do you want to disable gst-gl support?
Because that's what needs to be (automatically) disabled to build without GL but with gstreamer. We want to support any potential embedded use cases downstream too, etc. This doesn't work for other reasons until bug 191997 is separately fixed, just due to this bug here, it fails even earlier if gstreamer is involved.
Created attachment 356701 [details] Patch
(In reply to Carlos Eduardo Ramalho from comment #4) > Created attachment 356701 [details] > Patch Patch in bug 191997 needs to land too for the compilation with -DENABLE_VIDEO=ON -DENABLE_OPENGL=OFF to succeed.
Comment on attachment 356701 [details] Patch Attachment 356701 [details] did not pass mac-ews (mac): Output: https://webkit-queues.webkit.org/results/10289097 New failing tests: http/tests/misc/resource-timing-resolution.html
Created attachment 356719 [details] Archive of layout-test-results from ews101 for mac-sierra The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews101 Port: mac-sierra Platform: Mac OS X 10.12.6
Comment on attachment 356701 [details] Patch Let's try this but I suspect you'll need to rebase.
Comment on attachment 356701 [details] Patch Clearing flags on attachment: 356701 Committed r238929: <https://trac.webkit.org/changeset/238929>
All reviewed patches have been landed. Closing bug.
Comment on attachment 356701 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=356701&action=review > Source/cmake/OptionsGTK.cmake:153 > -include(GStreamerDefinitions) > +include(GStreamerDependencies) Ow :P
Comment on attachment 356701 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=356701&action=review >> Source/cmake/OptionsGTK.cmake:153 >> +include(GStreamerDependencies) > > Ow :P This needs to be fixed.
This needs a follow up soon or I'll rollout this.
Comment on attachment 356701 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=356701&action=review > ChangeLog:13 > + * Source/cmake/OptionsGTK.cmake: GStreamerDefinitions.cmake was included twice by mistake. Second should be GStreamerDependencies.cmake. Not if you read this, Calvaris :)
(In reply to Philippe Normand from comment #14) > Comment on attachment 356701 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=356701&action=review > > > ChangeLog:13 > > + * Source/cmake/OptionsGTK.cmake: GStreamerDefinitions.cmake was included twice by mistake. Second should be GStreamerDependencies.cmake. > > Not if you read this, Calvaris :) Yes, just did, sorry for the noise.