- Revision
- 108071
- Author
- [email protected]
- Date
- 2012-02-17 07:41:55 -0800 (Fri, 17 Feb 2012)
Log Message
[chromium] GL_CHROMIUM_gpu_memory_manager extension
https://bugs.webkit.org/show_bug.cgi?id=77155
Patch by Michal Mocny <[email protected]> on 2012-02-17
Reviewed by James Robinson.
Source/WebCore:
* platform/graphics/chromium/Extensions3DChromium.h:
(GpuMemoryAllocationChangedCallbackCHROMIUM):
(WebCore::Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM::~GpuMemoryAllocationChangedCallbackCHROMIUM):
(Extensions3DChromium):
Source/WebKit/chromium:
* public/platform/WebGraphicsContext3D.h:
(WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
(WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM::~WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
(WebGraphicsContext3D):
(WebKit::WebGraphicsContext3D::setMemoryAllocationChangedCallbackCHROMIUM):
* src/Extensions3DChromium.cpp:
(WebCore::Extensions3DChromium::setGpuMemoryAllocationChangedCallbackCHROMIUM):
(WebCore):
* src/GraphicsContext3DChromium.cpp:
(WebCore::GraphicsContext3D::~GraphicsContext3D):
(GraphicsContext3DMemoryAllocationChangedCallbackAdapter):
(WebCore::GraphicsContext3DMemoryAllocationChangedCallbackAdapter::GraphicsContext3DMemoryAllocationChangedCallbackAdapter):
(WebCore::GraphicsContext3DMemoryAllocationChangedCallbackAdapter::~GraphicsContext3DMemoryAllocationChangedCallbackAdapter):
(WebCore::GraphicsContext3DMemoryAllocationChangedCallbackAdapter::onMemoryAllocationChanged):
(WebCore):
(WebCore::GraphicsContext3DPrivate::setGpuMemoryAllocationChangedCallbackCHROMIUM):
* src/GraphicsContext3DPrivate.h:
(WebCore):
* tests/FakeWebGraphicsContext3D.h:
(WebKit::FakeWebGraphicsContext3D::setMemoryAllocationChangedCallbackCHROMIUM):
(FakeWebGraphicsContext3D):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (108070 => 108071)
--- trunk/Source/WebCore/ChangeLog 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebCore/ChangeLog 2012-02-17 15:41:55 UTC (rev 108071)
@@ -1,3 +1,15 @@
+2012-02-17 Michal Mocny <[email protected]>
+
+ [chromium] GL_CHROMIUM_gpu_memory_manager extension
+ https://bugs.webkit.org/show_bug.cgi?id=77155
+
+ Reviewed by James Robinson.
+
+ * platform/graphics/chromium/Extensions3DChromium.h:
+ (GpuMemoryAllocationChangedCallbackCHROMIUM):
+ (WebCore::Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM::~GpuMemoryAllocationChangedCallbackCHROMIUM):
+ (Extensions3DChromium):
+
2012-02-17 Raphael Kubo da Costa <[email protected]>
[CMake, EFL] Unreviewed, fix the build when building with
Modified: trunk/Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h (108070 => 108071)
--- trunk/Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebCore/platform/graphics/chromium/Extensions3DChromium.h 2012-02-17 15:41:55 UTC (rev 108071)
@@ -87,6 +87,14 @@
// GL_CHROMIUM_set_visibility
void setVisibilityCHROMIUM(bool);
+ // GL_CHROMIUM_gpu_memory_manager
+ class GpuMemoryAllocationChangedCallbackCHROMIUM {
+ public:
+ virtual void onGpuMemoryAllocationChanged(size_t gpuResourceSizeInBytes) = 0;
+ virtual ~GpuMemoryAllocationChangedCallbackCHROMIUM() { }
+ };
+ void setGpuMemoryAllocationChangedCallbackCHROMIUM(PassOwnPtr<GpuMemoryAllocationChangedCallbackCHROMIUM>);
+
// GL_CHROMIUM_swapbuffers_complete_callback
class SwapBuffersCompleteCallbackCHROMIUM {
public:
Modified: trunk/Source/WebKit/chromium/ChangeLog (108070 => 108071)
--- trunk/Source/WebKit/chromium/ChangeLog 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebKit/chromium/ChangeLog 2012-02-17 15:41:55 UTC (rev 108071)
@@ -1,3 +1,32 @@
+2012-02-17 Michal Mocny <[email protected]>
+
+ [chromium] GL_CHROMIUM_gpu_memory_manager extension
+ https://bugs.webkit.org/show_bug.cgi?id=77155
+
+ Reviewed by James Robinson.
+
+ * public/platform/WebGraphicsContext3D.h:
+ (WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
+ (WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM::~WebGraphicsMemoryAllocationChangedCallbackCHROMIUM):
+ (WebGraphicsContext3D):
+ (WebKit::WebGraphicsContext3D::setMemoryAllocationChangedCallbackCHROMIUM):
+ * src/Extensions3DChromium.cpp:
+ (WebCore::Extensions3DChromium::setGpuMemoryAllocationChangedCallbackCHROMIUM):
+ (WebCore):
+ * src/GraphicsContext3DChromium.cpp:
+ (WebCore::GraphicsContext3D::~GraphicsContext3D):
+ (GraphicsContext3DMemoryAllocationChangedCallbackAdapter):
+ (WebCore::GraphicsContext3DMemoryAllocationChangedCallbackAdapter::GraphicsContext3DMemoryAllocationChangedCallbackAdapter):
+ (WebCore::GraphicsContext3DMemoryAllocationChangedCallbackAdapter::~GraphicsContext3DMemoryAllocationChangedCallbackAdapter):
+ (WebCore::GraphicsContext3DMemoryAllocationChangedCallbackAdapter::onMemoryAllocationChanged):
+ (WebCore):
+ (WebCore::GraphicsContext3DPrivate::setGpuMemoryAllocationChangedCallbackCHROMIUM):
+ * src/GraphicsContext3DPrivate.h:
+ (WebCore):
+ * tests/FakeWebGraphicsContext3D.h:
+ (WebKit::FakeWebGraphicsContext3D::setMemoryAllocationChangedCallbackCHROMIUM):
+ (FakeWebGraphicsContext3D):
+
2012-02-17 Ilya Tikhonovsky <[email protected]>
Unreviewed. Chromium DEPS roll
Modified: trunk/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h (108070 => 108071)
--- trunk/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebKit/chromium/public/platform/WebGraphicsContext3D.h 2012-02-17 15:41:55 UTC (rev 108071)
@@ -130,6 +130,14 @@
virtual ~WebGraphicsSwapBuffersCompleteCallbackCHROMIUM() { }
};
+ class WebGraphicsMemoryAllocationChangedCallbackCHROMIUM {
+ public:
+ virtual void onMemoryAllocationChanged(size_t gpuResourceSizeInBytes) = 0;
+
+ protected:
+ virtual ~WebGraphicsMemoryAllocationChangedCallbackCHROMIUM() { }
+ };
+
// This destructor needs to be public so that using classes can destroy instances if initialization fails.
virtual ~WebGraphicsContext3D() {}
@@ -151,6 +159,9 @@
// GL_CHROMIUM_setVisibility - Changes the visibility of the backbuffer
virtual void setVisibilityCHROMIUM(bool visible) = 0;
+ // GL_CHROMIUM_gpu_memory_manager - sets callback to observe changes to memory allocation limits.
+ virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAllocationChangedCallbackCHROMIUM* callback) { }
+
// Query whether it is built on top of compliant GLES2 implementation.
virtual bool isGLES2Compliant() = 0;
Modified: trunk/Source/WebKit/chromium/src/Extensions3DChromium.cpp (108070 => 108071)
--- trunk/Source/WebKit/chromium/src/Extensions3DChromium.cpp 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebKit/chromium/src/Extensions3DChromium.cpp 2012-02-17 15:41:55 UTC (rev 108071)
@@ -107,6 +107,11 @@
m_private->setVisibilityCHROMIUM(visibility);
}
+void Extensions3DChromium::setGpuMemoryAllocationChangedCallbackCHROMIUM(PassOwnPtr<GpuMemoryAllocationChangedCallbackCHROMIUM> callback)
+{
+ m_private->setGpuMemoryAllocationChangedCallbackCHROMIUM(callback);
+}
+
Platform3DObject Extensions3DChromium::createVertexArrayOES()
{
return 0;
Modified: trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp (108070 => 108071)
--- trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp 2012-02-17 15:41:55 UTC (rev 108071)
@@ -1035,6 +1035,7 @@
m_private->setContextLostCallback(nullptr);
m_private->setErrorMessageCallback(nullptr);
m_private->setSwapBuffersCompleteCallbackCHROMIUM(nullptr);
+ m_private->setGpuMemoryAllocationChangedCallbackCHROMIUM(nullptr);
}
PassRefPtr<GraphicsContext3D> GraphicsContext3D::create(GraphicsContext3D::Attributes attrs, HostWindow* hostWindow, GraphicsContext3D::RenderStyle renderStyle)
@@ -1359,6 +1360,31 @@
m_impl->setSwapBuffersCompleteCallbackCHROMIUM(m_swapBuffersCompleteCallbackAdapter.get());
}
+class GraphicsContext3DMemoryAllocationChangedCallbackAdapter : public WebKit::WebGraphicsContext3D::WebGraphicsMemoryAllocationChangedCallbackCHROMIUM {
+public:
+ GraphicsContext3DMemoryAllocationChangedCallbackAdapter(PassOwnPtr<Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM> cb)
+ : m_memoryAllocationChangedCallback(cb)
+ {
+ }
+
+ virtual ~GraphicsContext3DMemoryAllocationChangedCallbackAdapter() { }
+
+ virtual void onMemoryAllocationChanged(size_t gpuResourceSizeInBytes)
+ {
+ if (m_memoryAllocationChangedCallback)
+ m_memoryAllocationChangedCallback->onGpuMemoryAllocationChanged(gpuResourceSizeInBytes);
+ }
+
+private:
+ OwnPtr<Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM> m_memoryAllocationChangedCallback;
+};
+
+void GraphicsContext3DPrivate::setGpuMemoryAllocationChangedCallbackCHROMIUM(PassOwnPtr<Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM> cb)
+{
+ m_memoryAllocationChangedCallbackAdapter = adoptPtr(new GraphicsContext3DMemoryAllocationChangedCallbackAdapter(cb));
+ m_impl->setMemoryAllocationChangedCallbackCHROMIUM(m_memoryAllocationChangedCallbackAdapter.get());
+}
+
} // namespace WebCore
#endif // ENABLE(WEBGL)
Modified: trunk/Source/WebKit/chromium/src/GraphicsContext3DPrivate.h (108070 => 108071)
--- trunk/Source/WebKit/chromium/src/GraphicsContext3DPrivate.h 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebKit/chromium/src/GraphicsContext3DPrivate.h 2012-02-17 15:41:55 UTC (rev 108071)
@@ -51,6 +51,7 @@
class GraphicsContextLostCallbackAdapter;
class GraphicsContext3DSwapBuffersCompleteCallbackAdapter;
class GraphicsErrorMessageCallbackAdapter;
+class GraphicsContext3DMemoryAllocationChangedCallbackAdapter;
class GraphicsContext3DPrivate {
public:
@@ -295,6 +296,9 @@
// GL_CHROMIUM_set_visibility
void setVisibilityCHROMIUM(bool);
+ // GL_CHROMIUM_gpu_memory_manager
+ virtual void setGpuMemoryAllocationChangedCallbackCHROMIUM(PassOwnPtr<Extensions3DChromium::GpuMemoryAllocationChangedCallbackCHROMIUM>);
+
// GL_CHROMIUM_framebuffer_multisample
void blitFramebufferCHROMIUM(GC3Dint srcX0, GC3Dint srcY0, GC3Dint srcX1, GC3Dint srcY1, GC3Dint dstX0, GC3Dint dstY0, GC3Dint dstX1, GC3Dint dstY1, GC3Dbitfield mask, GC3Denum filter);
void renderbufferStorageMultisampleCHROMIUM(GC3Denum target, GC3Dsizei samples, GC3Denum internalformat, GC3Dsizei width, GC3Dsizei height);
@@ -325,6 +329,7 @@
OwnPtr<GraphicsContextLostCallbackAdapter> m_contextLostCallbackAdapter;
OwnPtr<GraphicsErrorMessageCallbackAdapter> m_errorMessageCallbackAdapter;
OwnPtr<GraphicsContext3DSwapBuffersCompleteCallbackAdapter> m_swapBuffersCompleteCallbackAdapter;
+ OwnPtr<GraphicsContext3DMemoryAllocationChangedCallbackAdapter> m_memoryAllocationChangedCallbackAdapter;
WebKit::WebViewImpl* m_webViewImpl;
bool m_initializedAvailableExtensions;
HashSet<String> m_enabledExtensions;
Modified: trunk/Source/WebKit/chromium/tests/FakeWebGraphicsContext3D.h (108070 => 108071)
--- trunk/Source/WebKit/chromium/tests/FakeWebGraphicsContext3D.h 2012-02-17 14:42:58 UTC (rev 108070)
+++ trunk/Source/WebKit/chromium/tests/FakeWebGraphicsContext3D.h 2012-02-17 15:41:55 UTC (rev 108071)
@@ -65,6 +65,8 @@
virtual void setVisibilityCHROMIUM(bool visible) { }
+ virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAllocationChangedCallbackCHROMIUM* callback) { }
+
virtual WebString getRequestableExtensionsCHROMIUM() { return WebString(); }
virtual void requestExtensionCHROMIUM(const char*) { }