WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
191998
[GStreamer] -DENABLE_VIDEO=ON -DENABLE_OPENGL=OFF still tries to build GstreamerGL
https://bugs.webkit.org/show_bug.cgi?id=191998
Summary
[GStreamer] -DENABLE_VIDEO=ON -DENABLE_OPENGL=OFF still tries to build Gstrea...
Mart Raudsepp
Reported
2018-11-27 00:08:01 PST
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.
Attachments
Patch
(4.57 KB, patch)
2018-12-05 19:41 PST
,
Carlos Bentzen
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews101 for mac-sierra
(2.63 MB, application/zip)
2018-12-05 23:42 PST
,
EWS Watchlist
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Michael Catanzaro
Comment 1
2018-11-27 02:07:31 PST
> 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 ()
Philippe Normand
Comment 2
2018-11-28 03:34:43 PST
Out of curiosity, why do you want to disable gst-gl support?
Mart Raudsepp
Comment 3
2018-11-28 03:43:46 PST
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.
Carlos Bentzen
Comment 4
2018-12-05 19:41:00 PST
Created
attachment 356701
[details]
Patch
Carlos Bentzen
Comment 5
2018-12-05 19:41:48 PST
(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.
EWS Watchlist
Comment 6
2018-12-05 23:42:17 PST
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
EWS Watchlist
Comment 7
2018-12-05 23:42:19 PST
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
Philippe Normand
Comment 8
2018-12-06 04:42:18 PST
Comment on
attachment 356701
[details]
Patch Let's try this but I suspect you'll need to rebase.
WebKit Commit Bot
Comment 9
2018-12-06 05:07:53 PST
Comment on
attachment 356701
[details]
Patch Clearing flags on attachment: 356701 Committed
r238929
: <
https://trac.webkit.org/changeset/238929
>
WebKit Commit Bot
Comment 10
2018-12-06 05:07:54 PST
All reviewed patches have been landed. Closing bug.
Michael Catanzaro
Comment 11
2018-12-06 12:21:28 PST
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
Xabier Rodríguez Calvar
Comment 12
2018-12-09 23:37:24 PST
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.
Xabier Rodríguez Calvar
Comment 13
2018-12-09 23:41:55 PST
This needs a follow up soon or I'll rollout this.
Philippe Normand
Comment 14
2018-12-10 01:22:56 PST
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 :)
Xabier Rodríguez Calvar
Comment 15
2018-12-10 02:17:53 PST
(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.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug