Chromium Code Reviews| Index: cc/output/gl_renderer.cc |
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc |
| index e614d8b56131bd8402fde62e17b13980da162268..b454fd7e720946810e0fb29cd61f754cec5c391e 100644 |
| --- a/cc/output/gl_renderer.cc |
| +++ b/cc/output/gl_renderer.cc |
| @@ -417,6 +417,8 @@ void GLRenderer::PrepareSurfaceForPass( |
| DrawingFrame* frame, |
| SurfaceInitializationMode initialization_mode, |
| const gfx::Rect& render_pass_scissor) { |
| + SetupViewport(); |
| + |
| switch (initialization_mode) { |
| case SURFACE_INITIALIZATION_MODE_PRESERVE: |
| EnsureScissorTestDisabled(); |
| @@ -1222,10 +1224,12 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame, |
| GLC(gl_, gl_->Uniform3fv(locations.edge, 8, edge)); |
| if (locations.viewport != -1) { |
| - float viewport[4] = {static_cast<float>(viewport_.x()), |
| - static_cast<float>(viewport_.y()), |
| - static_cast<float>(viewport_.width()), |
| - static_cast<float>(viewport_.height()), }; |
| + float viewport[4] = { |
| + static_cast<float>(current_window_space_viewport_.x()), |
| + static_cast<float>(current_window_space_viewport_.y()), |
| + static_cast<float>(current_window_space_viewport_.width()), |
| + static_cast<float>(current_window_space_viewport_.height()), |
| + }; |
| GLC(gl_, gl_->Uniform4fv(locations.viewport, 1, viewport)); |
| } |
| @@ -1610,10 +1614,12 @@ void GLRenderer::DrawSolidColorQuad(const DrawingFrame* frame, |
| (SkColorGetB(color) * (1.0f / 255.0f)) * alpha, |
| alpha)); |
| if (use_aa) { |
| - float viewport[4] = {static_cast<float>(viewport_.x()), |
| - static_cast<float>(viewport_.y()), |
| - static_cast<float>(viewport_.width()), |
| - static_cast<float>(viewport_.height()), }; |
| + float viewport[4] = { |
| + static_cast<float>(current_window_space_viewport_.x()), |
| + static_cast<float>(current_window_space_viewport_.y()), |
| + static_cast<float>(current_window_space_viewport_.width()), |
| + static_cast<float>(current_window_space_viewport_.height()), |
| + }; |
| GLC(gl_, gl_->Uniform4fv(uniforms.viewport_location, 1, viewport)); |
| GLC(gl_, gl_->Uniform3fv(uniforms.edge_location, 8, edge)); |
| } |
| @@ -1777,10 +1783,10 @@ void GLRenderer::DrawContentQuadAA(const DrawingFrame* frame, |
| GLC(gl_, gl_->Uniform1i(uniforms.sampler_location, 0)); |
| float viewport[4] = { |
| - static_cast<float>(viewport_.x()), |
| - static_cast<float>(viewport_.y()), |
| - static_cast<float>(viewport_.width()), |
| - static_cast<float>(viewport_.height()), |
| + static_cast<float>(current_window_space_viewport_.x()), |
| + static_cast<float>(current_window_space_viewport_.y()), |
| + static_cast<float>(current_window_space_viewport_.width()), |
| + static_cast<float>(current_window_space_viewport_.height()), |
| }; |
| GLC(gl_, gl_->Uniform4fv(uniforms.viewport_location, 1, viewport)); |
| GLC(gl_, gl_->Uniform3fv(uniforms.edge_location, 8, edge)); |
| @@ -2952,13 +2958,11 @@ void GLRenderer::SetScissorTestRect(const gfx::Rect& scissor_rect) { |
| scissor_rect_needs_reset_ = false; |
| } |
| -void GLRenderer::SetDrawViewport(const gfx::Rect& window_space_viewport) { |
| - viewport_ = window_space_viewport; |
| - GLC(gl_, |
| - gl_->Viewport(window_space_viewport.x(), |
| - window_space_viewport.y(), |
| - window_space_viewport.width(), |
| - window_space_viewport.height())); |
| +void GLRenderer::SetupViewport() { |
|
enne (OOO)
2015/03/26 20:18:44
I would maybe call this SetViewport. Setup is mor
ericrk
2015/03/27 00:05:59
Done.
|
| + GLC(gl_, gl_->Viewport(current_window_space_viewport_.x(), |
| + current_window_space_viewport_.y(), |
| + current_window_space_viewport_.width(), |
| + current_window_space_viewport_.height())); |
| } |
| void GLRenderer::InitializeSharedObjects() { |
| @@ -3503,6 +3507,11 @@ void GLRenderer::RestoreGLState() { |
| void GLRenderer::RestoreFramebuffer(DrawingFrame* frame) { |
| UseRenderPass(frame, frame->current_render_pass); |
| + |
| + // Call SetupViewport directly, rather than through PrepareSurfaceForPass. |
| + // PrepareSurfaceForPass also clears the surface, which is not desired when |
| + // restoring. |
| + SetupViewport(); |
| } |
| bool GLRenderer::IsContextLost() { |