WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-239348-20220415085834.patch (text/plain), 18.26 KB, created by
Zan Dobersek
on 2022-04-14 23:58:36 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Zan Dobersek
Created:
2022-04-14 23:58:36 PDT
Size:
18.26 KB
patch
obsolete
>Subversion Revision: 292900 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index ec0eb243ea3455485054e59c6cb981156ef5cd96..2e6ec4c6ce135d0631c8628b01c519c94f5fa9a0 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,48 @@ >+2022-04-14 Zan Dobersek <zdobersek@igalia.com> >+ >+ [GTK][WPE][GPUProcess] Add RemoteGraphicsContextGLGBM, RemoteGraphicsContextGLProxyGBM >+ https://bugs.webkit.org/show_bug.cgi?id=239348 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Provide RemoteGraphicsContextGL and RemoteGraphicsContextGLProxy >+ implementations guarded by and based on USE(LIBGBM) functionality, >+ usable by the GTK and WPE ports when jointly enabled with ANGLE >+ backing of WebGL execution. >+ >+ RemoteGraphicsContextGLGBM is the GPUProcess-side GL executor. >+ Internally it spawns a GraphicsContextGLGBM instance, and once invoked, >+ the PrepareForDisplay() IPC message returns the reply with the DMABuf >+ object that was used as the rendering backing in that context instance. >+ >+ RemoteGraphicsContextGLProxyGBM is the WebProcess-side counterpart. >+ Besides relaying the prepare-for-display request, it also manages the >+ GraphicsLayerContentsDisplayDelegate object which handles presenting >+ DMABuf objects arriving from the GPUProcess. That delegate is of the >+ NicosiaDisplayDelegate type, a slim class also handling a >+ Nicosia::ContentLayer object through which any arriving DMABuf is >+ presented in the TextureMapper tree. >+ >+ * GPUProcess/graphics/RemoteGraphicsContextGL.cpp: >+ * GPUProcess/graphics/RemoteGraphicsContextGL.h: >+ * GPUProcess/graphics/RemoteGraphicsContextGL.messages.in: >+ * GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp: Added. >+ (WebKit::RemoteGraphicsContextGLGBM::RemoteGraphicsContextGLGBM): >+ (WebKit::RemoteGraphicsContextGLGBM::platformWorkQueueInitialize): >+ (WebKit::RemoteGraphicsContextGLGBM::prepareForDisplay): >+ (WebKit::RemoteGraphicsContextGL::create): >+ * SourcesGTK.txt: >+ * SourcesWPE.txt: >+ * WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp: Added. >+ (WebKit::NicosiaDisplayDelegate::NicosiaDisplayDelegate): >+ (WebKit::NicosiaDisplayDelegate::~NicosiaDisplayDelegate): >+ (WebKit::NicosiaDisplayDelegate::platformLayer const): >+ (WebKit::NicosiaDisplayDelegate::swapBuffersIfNeeded): >+ (WebKit::RemoteGraphicsContextGLProxyGBM::RemoteGraphicsContextGLProxyGBM): >+ (WebKit::RemoteGraphicsContextGLProxyGBM::layerContentsDisplayDelegate): >+ (WebKit::RemoteGraphicsContextGLProxyGBM::prepareForDisplay): >+ (WebKit::RemoteGraphicsContextGLProxy::create): >+ > 2022-04-14 Wenson Hsieh <wenson_hsieh@apple.com> > > Undo option after invoking "Markup Image" says "Undo Paste" >diff --git a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp >index f0242af7a4500a50426c3b22554142366836c739..6487238be11026930aa437b58e1f3080d828cb19 100644 >--- a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp >+++ b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp >@@ -53,7 +53,7 @@ IPC::StreamConnectionWorkQueue& remoteGraphicsContextGLStreamWorkQueue() > return instance.get(); > } > >-#if !PLATFORM(COCOA) && !PLATFORM(WIN) >+#if !PLATFORM(COCOA) && !PLATFORM(WIN) && !USE(LIBGBM) > Ref<RemoteGraphicsContextGL> RemoteGraphicsContextGL::create(GPUConnectionToWebProcess& gpuConnectionToWebProcess, GraphicsContextGLAttributes&& attributes, GraphicsContextGLIdentifier graphicsContextGLIdentifier, RemoteRenderingBackend& renderingBackend, IPC::StreamConnectionBuffer&& stream) > { > ASSERT_NOT_REACHED(); >@@ -162,7 +162,7 @@ void RemoteGraphicsContextGL::reshape(int32_t width, int32_t height) > forceContextLost(); > } > >-#if !PLATFORM(COCOA) && !PLATFORM(WIN) >+#if !PLATFORM(COCOA) && !PLATFORM(WIN) && !USE(LIBGBM) > void RemoteGraphicsContextGL::prepareForDisplay(CompletionHandler<void()>&& completionHandler) > { > assertIsCurrent(workQueue()); >diff --git a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h >index fff5e71c35b3213877a96569941a6f5b8d9f371d..dd1da79fe0030adfd8282b8612db5ed58a46cf77 100644 >--- a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h >+++ b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h >@@ -41,6 +41,8 @@ > > #if PLATFORM(COCOA) > #include <WebCore/GraphicsContextGLCocoa.h> >+#elif USE(LIBGBM) >+#include <WebCore/GraphicsContextGLGBM.h> > #else > #include <WebCore/GraphicsContextGLTextureMapperANGLE.h> > #endif >@@ -111,6 +113,8 @@ protected: > virtual void prepareForDisplay(CompletionHandler<void(WTF::MachSendRight&&)>&&) = 0; > #elif USE(GRAPHICS_LAYER_WC) > virtual void prepareForDisplay(CompletionHandler<void(std::optional<WCContentBufferIdentifier>)>&&) = 0; >+#elif USE(LIBGBM) >+ virtual void prepareForDisplay(CompletionHandler<void(WebCore::DMABufObject&&)>&&) = 0; > #else > void prepareForDisplay(CompletionHandler<void()>&&); > #endif >@@ -140,6 +144,8 @@ protected: > RefPtr<IPC::StreamServerConnection> m_streamConnection; > #if PLATFORM(COCOA) > using GCGLContext = WebCore::GraphicsContextGLCocoa; >+#elif USE(LIBGBM) >+ using GCGLContext = WebCore::GraphicsContextGLGBM; > #else > using GCGLContext = WebCore::GraphicsContextGLTextureMapperANGLE; > #endif >diff --git a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in >index 948cb3630148c87877db345d63106aa4577fd718..29fe2141fedc8e031b10d2013f6f7a08dded17eb 100644 >--- a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in >+++ b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in >@@ -32,7 +32,10 @@ messages -> RemoteGraphicsContextGL NotRefCounted Stream { > #if USE(GRAPHICS_LAYER_WC) > void PrepareForDisplay() -> (std::optional<WebKit::WCContentBufferIdentifier> contentBuffer) Synchronous > #endif >-#if !PLATFORM(COCOA) && !USE(GRAPHICS_LAYER_WC) >+#if USE(LIBGBM) >+ void PrepareForDisplay() -> (WebCore::DMABufObject dmabufObject) Synchronous NotStreamEncodableReply >+#endif >+#if !PLATFORM(COCOA) && !USE(GRAPHICS_LAYER_WC) && !USE(LIBGBM) > void PrepareForDisplay() -> () Synchronous > #endif > void EnsureExtensionEnabled(String extension) >diff --git a/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..0ac1f73626e9ff73618dd69ebbe62b729f7bd6a9 >--- /dev/null >+++ b/Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp >@@ -0,0 +1,78 @@ >+/* >+ * Copyright (C) 2022 Metrological Group B.V. >+ * Copyright (C) 2022 Igalia S.L. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "RemoteGraphicsContextGL.h" >+ >+#if ENABLE(GPU_PROCESS) && ENABLE(WEBGL) && USE(LIBGBM) >+ >+namespace WebKit { >+ >+class RemoteGraphicsContextGLGBM final : public RemoteGraphicsContextGL { >+public: >+ RemoteGraphicsContextGLGBM(GPUConnectionToWebProcess&, GraphicsContextGLIdentifier, RemoteRenderingBackend&, IPC::StreamConnectionBuffer&&); >+ >+private: >+ void platformWorkQueueInitialize(WebCore::GraphicsContextGLAttributes&&) final; >+ void prepareForDisplay(CompletionHandler<void(WebCore::DMABufObject&&)>&&) final; >+}; >+ >+RemoteGraphicsContextGLGBM::RemoteGraphicsContextGLGBM(GPUConnectionToWebProcess& connection, GraphicsContextGLIdentifier identifier, RemoteRenderingBackend& renderingBackend, IPC::StreamConnectionBuffer&& stream) >+ : RemoteGraphicsContextGL(connection, identifier, renderingBackend, WTFMove(stream)) >+{ } >+ >+void RemoteGraphicsContextGLGBM::platformWorkQueueInitialize(WebCore::GraphicsContextGLAttributes&& attributes) >+{ >+ assertIsCurrent(workQueue()); >+ m_context = WebCore::GraphicsContextGLGBM::create(WTFMove(attributes)); >+} >+ >+void RemoteGraphicsContextGLGBM::prepareForDisplay(CompletionHandler<void(WebCore::DMABufObject&&)>&& completionHandler) >+{ >+ assertIsCurrent(workQueue()); >+ m_context->prepareForDisplay(); >+ >+ WebCore::DMABufObject dmabufObject(0); >+ auto& swapchain = m_context->swapchain(); >+ if (swapchain.displayBO) { >+ uintptr_t handle = reinterpret_cast<uintptr_t>(swapchain.swapchain.get()) + swapchain.displayBO->handle(); >+ dmabufObject = swapchain.displayBO->createDMABufObject(handle); >+ swapchain.displayBO = nullptr; >+ } >+ >+ completionHandler(WTFMove(dmabufObject)); >+} >+ >+Ref<RemoteGraphicsContextGL> RemoteGraphicsContextGL::create(GPUConnectionToWebProcess& connection, WebCore::GraphicsContextGLAttributes&& attributes, GraphicsContextGLIdentifier identifier, RemoteRenderingBackend& renderingBackend, IPC::StreamConnectionBuffer&& stream) >+{ >+ auto instance = adoptRef(*new RemoteGraphicsContextGLGBM(connection, identifier, renderingBackend, WTFMove(stream))); >+ instance->initialize(WTFMove(attributes)); >+ return instance; >+} >+ >+} // namespace WebKit >+ >+#endif // ENABLE(GPU_PROCESS) && ENABLE(WEBGL) && USE(LIBGBM) >diff --git a/Source/WebKit/SourcesGTK.txt b/Source/WebKit/SourcesGTK.txt >index 98b74854336b34e8487e0adb36cf4a413c6fe63c..3b52d10af68fa9048d93193720fe3068defa8606 100644 >--- a/Source/WebKit/SourcesGTK.txt >+++ b/Source/WebKit/SourcesGTK.txt >@@ -24,6 +24,8 @@ > GPUProcess/glib/GPUProcessGLib.cpp > GPUProcess/glib/GPUProcessMainGLib.cpp > >+GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp >+ > GPUProcess/media/RemoteAudioDestinationManager.cpp > > GPUProcess/media/gstreamer/RemoteMediaPlayerProxyGStreamer.cpp >@@ -282,6 +284,8 @@ UIProcess/gtk/WebTextCheckerClient.cpp > UIProcess/soup/WebCookieManagerProxySoup.cpp > UIProcess/soup/WebProcessPoolSoup.cpp > >+WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp >+ > WebProcess/GPU/media/gstreamer/VideoLayerRemoteGStreamer.cpp > > WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp @no-unify >diff --git a/Source/WebKit/SourcesWPE.txt b/Source/WebKit/SourcesWPE.txt >index a01e5b20f1fb05a1c057c07f827310a37cf73e3f..ae2181088f8221594c9a2b4fbe5d99f2b6936d67 100644 >--- a/Source/WebKit/SourcesWPE.txt >+++ b/Source/WebKit/SourcesWPE.txt >@@ -24,6 +24,8 @@ > GPUProcess/glib/GPUProcessGLib.cpp > GPUProcess/glib/GPUProcessMainGLib.cpp > >+GPUProcess/graphics/RemoteGraphicsContextGLGBM.cpp >+ > GPUProcess/media/RemoteAudioDestinationManager.cpp > > GPUProcess/media/gstreamer/RemoteMediaPlayerProxyGStreamer.cpp >@@ -229,6 +231,8 @@ UIProcess/soup/WebProcessPoolSoup.cpp > > UIProcess/wpe/WebPageProxyWPE.cpp > >+WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp >+ > WebProcess/GPU/media/gstreamer/VideoLayerRemoteGStreamer.cpp > > WebProcess/InjectedBundle/API/glib/DOM/DOMObjectCache.cpp @no-unify >diff --git a/Source/WebKit/WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp b/Source/WebKit/WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..721aabf58533f774fcacb82b2742e88974a0487a >--- /dev/null >+++ b/Source/WebKit/WebProcess/GPU/graphics/gbm/RemoteGraphicsContextGLProxyGBM.cpp >@@ -0,0 +1,146 @@ >+/* >+ * Copyright (C) 2022 Metrological Group B.V. >+ * Copyright (C) 2022 Igalia S.L. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "RemoteGraphicsContextGLProxy.h" >+ >+#if ENABLE(GPU_PROCESS) && ENABLE(WEBGL) && USE(LIBGBM) >+ >+// This is a standalone check of additional requirements in this implementation, >+// avoiding having to place an overwhelming amount of build guards over the rest of the code. >+#if !USE(NICOSIA) || !USE(TEXTURE_MAPPER_DMABUF) >+#error RemoteGraphicsContextGLProxyGBM implementation also depends on USE_NICOSIA and USE_TEXTURE_MAPPER_DMABUF >+#endif >+ >+#include "WebProcess.h" >+#include <WebCore/DMABufObject.h> >+#include <WebCore/GraphicsLayerContentsDisplayDelegate.h> >+#include <WebCore/NicosiaContentLayerTextureMapperImpl.h> >+#include <WebCore/TextureMapperPlatformLayerProxyDMABuf.h> >+ >+namespace WebKit { >+ >+class NicosiaDisplayDelegate final : public WebCore::GraphicsLayerContentsDisplayDelegate, public Nicosia::ContentLayerTextureMapperImpl::Client { >+public: >+ NicosiaDisplayDelegate(bool isOpaque); >+ virtual ~NicosiaDisplayDelegate(); >+ >+ void present(WebCore::DMABufObject&& dmabufObject) >+ { >+ m_pending = WTFMove(dmabufObject); >+ } >+ >+private: >+ // WebCore::GraphicsLayerContentsDisplayDelegate >+ Nicosia::PlatformLayer* platformLayer() const final; >+ >+ // Nicosia::ContentLayerTextureMapperImpl::Client >+ void swapBuffersIfNeeded() final; >+ >+ bool m_isOpaque { false }; >+ RefPtr<Nicosia::ContentLayer> m_contentLayer; >+ WebCore::DMABufObject m_pending { WebCore::DMABufObject(0) }; >+}; >+ >+NicosiaDisplayDelegate::NicosiaDisplayDelegate(bool isOpaque) >+ : m_isOpaque(isOpaque) >+{ >+ m_contentLayer = Nicosia::ContentLayer::create(Nicosia::ContentLayerTextureMapperImpl::createFactory(*this, adoptRef(*new WebCore::TextureMapperPlatformLayerProxyDMABuf))); >+} >+ >+NicosiaDisplayDelegate::~NicosiaDisplayDelegate() >+{ } >+ >+Nicosia::PlatformLayer* NicosiaDisplayDelegate::platformLayer() const >+{ >+ return m_contentLayer.get(); >+} >+ >+void NicosiaDisplayDelegate::swapBuffersIfNeeded() >+{ >+ auto& proxy = downcast<Nicosia::ContentLayerTextureMapperImpl>(m_contentLayer->impl()).proxy(); >+ ASSERT(is<WebCore::TextureMapperPlatformLayerProxyDMABuf>(proxy)); >+ >+ if (!!m_pending.handle) { >+ Locker locker { proxy.lock() }; >+ >+ WebCore::TextureMapperGL::Flags flags = WebCore::TextureMapperGL::ShouldFlipTexture; >+ if (!m_isOpaque) >+ flags |= WebCore::TextureMapperGL::ShouldBlend; >+ >+ downcast<WebCore::TextureMapperPlatformLayerProxyDMABuf>(proxy).pushDMABuf(WTFMove(m_pending), >+ [](auto&& object) { return object; }, flags); >+ } >+ m_pending = WebCore::DMABufObject(0); >+} >+ >+class RemoteGraphicsContextGLProxyGBM final : public RemoteGraphicsContextGLProxy { >+public: >+ RemoteGraphicsContextGLProxyGBM(GPUProcessConnection&, const WebCore::GraphicsContextGLAttributes&, RenderingBackendIdentifier); >+ virtual ~RemoteGraphicsContextGLProxyGBM() = default; >+ >+private: >+ // WebCore::GraphicsContextGL >+ RefPtr<WebCore::GraphicsLayerContentsDisplayDelegate> layerContentsDisplayDelegate() final; >+ void prepareForDisplay() final; >+ >+ Ref<NicosiaDisplayDelegate> m_layerContentsDisplayDelegate; >+}; >+ >+RemoteGraphicsContextGLProxyGBM::RemoteGraphicsContextGLProxyGBM(GPUProcessConnection& processConnection, const WebCore::GraphicsContextGLAttributes& attributes, RenderingBackendIdentifier renderingBackend) >+ : RemoteGraphicsContextGLProxy(processConnection, attributes, renderingBackend) >+ , m_layerContentsDisplayDelegate(adoptRef(*new NicosiaDisplayDelegate(!attributes.alpha))) >+{ } >+ >+RefPtr<WebCore::GraphicsLayerContentsDisplayDelegate> RemoteGraphicsContextGLProxyGBM::layerContentsDisplayDelegate() >+{ >+ return m_layerContentsDisplayDelegate.copyRef(); >+} >+ >+void RemoteGraphicsContextGLProxyGBM::prepareForDisplay() >+{ >+ if (isContextLost()) >+ return; >+ >+ WebCore::DMABufObject dmabufObject(0); >+ auto sendResult = sendSync(Messages::RemoteGraphicsContextGL::PrepareForDisplay(), Messages::RemoteGraphicsContextGL::PrepareForDisplay::Reply(dmabufObject)); >+ if (!sendResult) { >+ markContextLost(); >+ return; >+ } >+ >+ m_layerContentsDisplayDelegate->present(WTFMove(dmabufObject)); >+ markLayerComposited(); >+} >+ >+RefPtr<RemoteGraphicsContextGLProxy> RemoteGraphicsContextGLProxy::create(const WebCore::GraphicsContextGLAttributes& attributes, RenderingBackendIdentifier renderingBackend) >+{ >+ return adoptRef(new RemoteGraphicsContextGLProxyGBM(WebProcess::singleton().ensureGPUProcessConnection(), attributes, renderingBackend)); >+} >+ >+} // namespace WebKit >+ >+#endif // ENABLE(GPU_PROCESS) && ENABLE(WEBGL) && USE(LIBGBM)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 239348
:
457642
|
457678
|
457878