Index: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
index 4c2ebadfd568aebe2fd11d95476bb8508c0a495a..b5d874152cb5c5e821b0d81662282b5574d83b54 100644 |
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp |
@@ -1136,7 +1136,11 @@ void WebGLRenderingContextBase::initializeNewContext() { |
m_vertexAttribType.resize(m_maxVertexAttribs); |
contextGL()->Viewport(0, 0, drawingBufferWidth(), drawingBufferHeight()); |
- contextGL()->Scissor(0, 0, drawingBufferWidth(), drawingBufferHeight()); |
+ m_scissorBox[0] = m_scissorBox[1] = 0; |
+ m_scissorBox[2] = drawingBufferWidth(); |
+ m_scissorBox[3] = drawingBufferHeight(); |
+ contextGL()->Scissor(m_scissorBox[0], m_scissorBox[1], m_scissorBox[2], |
+ m_scissorBox[3]); |
drawingBuffer()->contextProvider()->setLostContextCallback( |
convertToBaseCallback(WTF::bind( |
@@ -1375,8 +1379,12 @@ void WebGLRenderingContextBase::restoreStateAfterClear() { |
return; |
// Restore the state that the context set. |
- if (m_scissorEnabled) |
+ if (m_scissorEnabled) { |
contextGL()->Enable(GL_SCISSOR_TEST); |
+ // WebVR's VRDisplay uses a custom scissor box, need to restore that too. |
+ contextGL()->Scissor(m_scissorBox[0], m_scissorBox[1], m_scissorBox[2], |
+ m_scissorBox[3]); |
+ } |
contextGL()->ClearColor(m_clearColor[0], m_clearColor[1], m_clearColor[2], |
m_clearColor[3]); |
contextGL()->ColorMask(m_colorMask[0], m_colorMask[1], m_colorMask[2], |
@@ -4156,6 +4164,10 @@ void WebGLRenderingContextBase::scissor(GLint x, |
GLsizei height) { |
if (isContextLost()) |
return; |
+ m_scissorBox[0] = x; |
+ m_scissorBox[1] = y; |
+ m_scissorBox[2] = width; |
+ m_scissorBox[3] = height; |
contextGL()->Scissor(x, y, width, height); |
} |