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

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

Issue 2402603002: State management cleanup (Closed)
Patch Set: Make state dirtying explosive 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 f1634335890d30b9660e505ba873b80c4cf69d24..63da730d8e72dd4e90224d740237ec87f592b939 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
@@ -132,7 +132,9 @@ class ScopedRGBEmulationColorMask {
const bool m_requiresEmulation;
};
-class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
+class MODULES_EXPORT WebGLRenderingContextBase
+ : public CanvasRenderingContext,
+ public DrawingBufferStateTracker {
WTF_MAKE_NONCOPYABLE(WebGLRenderingContextBase);
public:
@@ -545,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();
@@ -617,6 +615,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.
@@ -643,6 +642,9 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext {
WebLayer* platformLayer() const override;
void stop() override;
+ // DrawingBufferRestoreStateSource implementation.
+ void GetDrawingBufferRestoreState(DrawingBufferRestoreState*) override;
+
void addSharedObject(WebGLSharedObject*);
void addContextObject(WebGLContextObject*);
void detachAndRemoveAllObjects();
@@ -913,7 +915,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() {
@@ -973,9 +975,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