https://bugs.webkit.org/show_bug.cgi?id=77155
Patch by Michal Mocny <mmocny@google.com> 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):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108116
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-02-17 Michal Mocny <mmocny@google.com>
+
+ [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-01-23 Robert Hogan <robert@webkit.org>
REGRESSION: empty span creates renders with non-zero height
// 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:
+2012-02-17 Michal Mocny <mmocny@google.com>
+
+ [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 Mihnea Ovidenie <mihnea@adobe.com>
CSS regions enabled by default
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() {}
// 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;
m_private->setVisibilityCHROMIUM(visibility);
}
+void Extensions3DChromium::setGpuMemoryAllocationChangedCallbackCHROMIUM(PassOwnPtr<GpuMemoryAllocationChangedCallbackCHROMIUM> callback)
+{
+ m_private->setGpuMemoryAllocationChangedCallbackCHROMIUM(callback);
+}
+
Platform3DObject Extensions3DChromium::createVertexArrayOES()
{
return 0;
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)
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)
class GraphicsContextLostCallbackAdapter;
class GraphicsContext3DSwapBuffersCompleteCallbackAdapter;
class GraphicsErrorMessageCallbackAdapter;
+class GraphicsContext3DMemoryAllocationChangedCallbackAdapter;
class GraphicsContext3DPrivate {
public:
// GL_CHROMIUM_set_visibility
void setVisibilityCHROMIUM(bool);
+ // GL_CHROMIUM_gpu_memory_manager
+ 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);
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;
virtual void setVisibilityCHROMIUM(bool visible) { }
+ virtual void setMemoryAllocationChangedCallbackCHROMIUM(WebGraphicsMemoryAllocationChangedCallbackCHROMIUM* callback) { }
+
virtual WebString getRequestableExtensionsCHROMIUM() { return WebString(); }
virtual void requestExtensionCHROMIUM(const char*) { }