Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(770)

Unified Diff: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h

Issue 2402273002: DrawingBuffer: Clean up GL state restoration (Closed)
Patch Set: Incorporate review feedback Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
index 2de9fcdbd74444b36721b8597789923909c6c629..c0689894c14200e3b18c7dc7e558fa8fa59298fa 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
@@ -133,7 +133,8 @@ class ScopedRGBEmulationColorMask {
const bool m_requiresEmulation;
};
-class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
+class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
+ public DrawingBuffer::Client {
WTF_MAKE_NONCOPYABLE(WebGLRenderingContextBase);
public:
@@ -546,11 +547,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
void restoreScissorEnabled();
void restoreScissorBox();
void restoreClearColor();
- void restoreClearDepthf();
- void restoreClearStencil();
- void restoreStencilMaskSeparate();
void restoreColorMask();
- void restoreDepthMask();
gpu::gles2::GLES2Interface* contextGL() const {
DrawingBuffer* d = drawingBuffer();
@@ -621,6 +618,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
friend class WebGLCompressedTextureS3TCsRGB;
friend class WebGLRenderingContextErrorMessageCallback;
friend class WebGLVertexArrayObjectBase;
+ friend class ScopedDrawingBufferBinder;
friend class ScopedTexture2DRestorer;
friend class ScopedFramebufferRestorer;
// To allow V8WebGL[2]RenderingContext to call visitChildDOMWrappers.
@@ -647,6 +645,16 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
WebLayer* platformLayer() const override;
void stop() override;
+ // DrawingBuffer::Client implementation.
+ bool DrawingBufferClientIsBoundForDraw() override;
+ void DrawingBufferClientRestoreScissorTest() override;
+ void DrawingBufferClientRestoreMaskAndClearValues() override;
+ void DrawingBufferClientRestorePixelPackAlignment() override;
+ void DrawingBufferClientRestoreTexture2DBinding() override;
+ void DrawingBufferClientRestoreRenderbufferBinding() override;
+ void DrawingBufferClientRestoreFramebufferBinding() override;
+ void DrawingBufferClientRestorePixelUnpackBufferBinding() override;
+
void addSharedObject(WebGLSharedObject*);
void addContextObject(WebGLContextObject*);
void detachAndRemoveAllObjects();
@@ -917,7 +925,7 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
m_readFramebufferBinding(framebufferBinding) {
// Commit DrawingBuffer if needed (e.g., for multisampling)
if (!m_readFramebufferBinding && m_drawingBuffer)
- m_drawingBuffer->commit();
+ m_drawingBuffer->resolveAndBindForReadAndDraw();
}
~ScopedDrawingBufferBinder() {
@@ -977,9 +985,6 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
};
HowToClear clearIfComposited(GLbitfield clearMask = 0);
- // Helper to restore state that clearing the framebuffer may destroy.
- void restoreStateAfterClear();
-
// Convert texture internal format.
GLenum convertTexInternalFormat(GLenum internalformat, GLenum type);

Powered by Google App Engine
This is Rietveld 408576698