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

Side by Side Diff: cc/output/gl_renderer.cc

Issue 69343005: Added preliminary support for tile rasterization with Ganesh (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reveman's comments. Created 7 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2010 The Chromium Authors. All rights reserved. 1 // Copyright 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/output/gl_renderer.h" 5 #include "cc/output/gl_renderer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 int highp_threshold_min) 175 int highp_threshold_min)
176 : DirectRenderer(client, settings, output_surface, resource_provider), 176 : DirectRenderer(client, settings, output_surface, resource_provider),
177 offscreen_framebuffer_id_(0), 177 offscreen_framebuffer_id_(0),
178 shared_geometry_quad_(gfx::RectF(-0.5f, -0.5f, 1.0f, 1.0f)), 178 shared_geometry_quad_(gfx::RectF(-0.5f, -0.5f, 1.0f, 1.0f)),
179 context_(output_surface->context_provider()->Context3d()), 179 context_(output_surface->context_provider()->Context3d()),
180 context_support_(output_surface->context_provider()->ContextSupport()), 180 context_support_(output_surface->context_provider()->ContextSupport()),
181 texture_mailbox_deleter_(texture_mailbox_deleter), 181 texture_mailbox_deleter_(texture_mailbox_deleter),
182 is_backbuffer_discarded_(false), 182 is_backbuffer_discarded_(false),
183 visible_(true), 183 visible_(true),
184 is_scissor_enabled_(false), 184 is_scissor_enabled_(false),
185 scissor_rect_needs_reset_(true),
185 stencil_shadow_(false), 186 stencil_shadow_(false),
186 blend_shadow_(false), 187 blend_shadow_(false),
187 highp_threshold_min_(highp_threshold_min), 188 highp_threshold_min_(highp_threshold_min),
188 highp_threshold_cache_(0), 189 highp_threshold_cache_(0),
189 on_demand_tile_raster_resource_id_(0) { 190 on_demand_tile_raster_resource_id_(0) {
190 DCHECK(context_); 191 DCHECK(context_);
191 DCHECK(context_support_); 192 DCHECK(context_support_);
192 } 193 }
193 194
194 bool GLRenderer::Initialize() { 195 bool GLRenderer::Initialize() {
(...skipping 2317 matching lines...) Expand 10 before | Expand all | Expand 10 after
2512 gfx::Rect(target_rect.size()), 2513 gfx::Rect(target_rect.size()),
2513 target_rect.size()); 2514 target_rect.size());
2514 return true; 2515 return true;
2515 } 2516 }
2516 2517
2517 void GLRenderer::SetScissorTestRect(gfx::Rect scissor_rect) { 2518 void GLRenderer::SetScissorTestRect(gfx::Rect scissor_rect) {
2518 EnsureScissorTestEnabled(); 2519 EnsureScissorTestEnabled();
2519 2520
2520 // Don't unnecessarily ask the context to change the scissor, because it 2521 // Don't unnecessarily ask the context to change the scissor, because it
2521 // may cause undesired GPU pipeline flushes. 2522 // may cause undesired GPU pipeline flushes.
2522 if (scissor_rect == scissor_rect_) 2523 if (scissor_rect == scissor_rect_ && !scissor_rect_needs_reset_)
2523 return; 2524 return;
2524 2525
2525 scissor_rect_ = scissor_rect; 2526 scissor_rect_ = scissor_rect;
2526 FlushTextureQuadCache(); 2527 FlushTextureQuadCache();
2527 GLC(context_, 2528 GLC(context_,
2528 context_->scissor(scissor_rect.x(), 2529 context_->scissor(scissor_rect.x(),
2529 scissor_rect.y(), 2530 scissor_rect.y(),
2530 scissor_rect.width(), 2531 scissor_rect.width(),
2531 scissor_rect.height())); 2532 scissor_rect.height()));
2533
2534 scissor_rect_needs_reset_ = false;
2532 } 2535 }
2533 2536
2534 void GLRenderer::SetDrawViewport(gfx::Rect window_space_viewport) { 2537 void GLRenderer::SetDrawViewport(gfx::Rect window_space_viewport) {
2535 viewport_ = window_space_viewport; 2538 viewport_ = window_space_viewport;
2536 GLC(context_, context_->viewport(window_space_viewport.x(), 2539 GLC(context_, context_->viewport(window_space_viewport.x(),
2537 window_space_viewport.y(), 2540 window_space_viewport.y(),
2538 window_space_viewport.width(), 2541 window_space_viewport.width(),
2539 window_space_viewport.height())); 2542 window_space_viewport.height()));
2540 } 2543 }
2541 2544
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after
2998 stencil_shadow_ = false; 3001 stencil_shadow_ = false;
2999 GLC(context_, context_->enable(GL_BLEND)); 3002 GLC(context_, context_->enable(GL_BLEND));
3000 blend_shadow_ = true; 3003 blend_shadow_ = true;
3001 GLC(context_, context_->blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)); 3004 GLC(context_, context_->blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA));
3002 GLC(context_, context_->activeTexture(GL_TEXTURE0)); 3005 GLC(context_, context_->activeTexture(GL_TEXTURE0));
3003 program_shadow_ = 0; 3006 program_shadow_ = 0;
3004 3007
3005 // Make sure scissoring starts as disabled. 3008 // Make sure scissoring starts as disabled.
3006 is_scissor_enabled_ = false; 3009 is_scissor_enabled_ = false;
3007 GLC(context_, context_->disable(GL_SCISSOR_TEST)); 3010 GLC(context_, context_->disable(GL_SCISSOR_TEST));
3011 scissor_rect_needs_reset_ = true;
3008 } 3012 }
3009 3013
3010 bool GLRenderer::CanUseSkiaGPUBackend() const { 3014 bool GLRenderer::CanUseSkiaGPUBackend() const {
3011 // The Skia GPU backend requires a stencil buffer. See ReinitializeGrCanvas 3015 // The Skia GPU backend requires a stencil buffer. See ReinitializeGrCanvas
3012 // implementation. 3016 // implementation.
3013 return gr_context_ && context_->getContextAttributes().stencil; 3017 return gr_context_ && context_->getContextAttributes().stencil;
3014 } 3018 }
3015 3019
3016 bool GLRenderer::IsContextLost() { 3020 bool GLRenderer::IsContextLost() {
3017 return output_surface_->context_provider()->IsContextLost(); 3021 return output_surface_->context_provider()->IsContextLost();
3018 } 3022 }
3019 3023
3020 } // namespace cc 3024 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698