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

Unified Diff: cc/output/gl_renderer.cc

Issue 2253823002: cc: Remove all impl-side caps from RendererCapabilitiesImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delete-renderer-base-class
Patch Set: renderercaps: ennereview Created 4 years, 4 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
« no previous file with comments | « cc/output/gl_renderer.h ('k') | cc/output/gl_renderer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/gl_renderer.cc
diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
index 1f8b84df8e2f55a591675846096df4b66887b438..98e7eb1c8b06c288ced51168bedbf3931e995ea4 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -395,35 +395,12 @@ GLRenderer::GLRenderer(const RendererSettings* settings,
const auto& context_caps =
output_surface_->context_provider()->ContextCapabilities();
-
- capabilities_.using_partial_swap =
- settings_->partial_swap_enabled && context_caps.post_sub_buffer;
- capabilities_.allow_empty_swap =
- capabilities_.using_partial_swap || context_caps.commit_overlay_planes;
-
DCHECK(!context_caps.iosurface || context_caps.texture_rectangle);
- capabilities_.using_egl_image = context_caps.egl_image_external;
-
capabilities_.max_texture_size = resource_provider_->max_texture_size();
capabilities_.best_texture_format = resource_provider_->best_texture_format();
- // The updater can access textures while the GLRenderer is using them.
- capabilities_.allow_partial_texture_updates = true;
-
- capabilities_.using_image = context_caps.image;
-
- capabilities_.using_discard_framebuffer = context_caps.discard_framebuffer;
-
- capabilities_.allow_rasterize_on_demand = true;
-
- // If MSAA is slow, we want this renderer to behave as though MSAA is not
- // available. Set samples to 0 to achieve this.
- if (context_caps.msaa_is_slow)
- capabilities_.max_msaa_samples = 0;
- else
- capabilities_.max_msaa_samples = context_caps.max_samples;
-
+ use_discard_framebuffer_ = context_caps.discard_framebuffer;
use_sync_query_ = context_caps.sync_query;
use_blend_equation_advanced_ = context_caps.blend_equation_advanced;
use_blend_equation_advanced_coherent_ =
@@ -447,6 +424,11 @@ const RendererCapabilitiesImpl& GLRenderer::Capabilities() const {
return capabilities_;
}
+bool GLRenderer::CanPartialSwap() {
+ auto* context_provider = output_surface_->context_provider();
+ return context_provider->ContextCapabilities().post_sub_buffer;
+}
+
void GLRenderer::DidChangeVisibility() {
if (visible_) {
output_surface_->EnsureBackbuffer();
@@ -472,7 +454,7 @@ void GLRenderer::DidChangeVisibility() {
void GLRenderer::ReleaseRenderPassTextures() { render_pass_textures_.clear(); }
void GLRenderer::DiscardPixels() {
- if (!capabilities_.using_discard_framebuffer)
+ if (!use_discard_framebuffer_)
return;
bool using_default_framebuffer =
!current_framebuffer_lock_ &&
@@ -2466,7 +2448,9 @@ void GLRenderer::DrawStreamVideoQuad(const DrawingFrame* frame,
static float gl_matrix[16];
- DCHECK(capabilities_.using_egl_image);
+ DCHECK(output_surface_->context_provider()
+ ->ContextCapabilities()
+ .egl_image_external);
TexCoordPrecision tex_coord_precision = TexCoordPrecisionRequired(
gl_, &highp_threshold_cache_, highp_threshold_min_,
@@ -2910,7 +2894,7 @@ void GLRenderer::SwapBuffers(CompositorFrameMetadata metadata) {
compositor_frame.metadata = std::move(metadata);
compositor_frame.gl_frame_data = base::WrapUnique(new GLFrameData);
compositor_frame.gl_frame_data->size = surface_size;
- if (capabilities_.using_partial_swap) {
+ if (use_partial_swap_) {
// If supported, we can save significant bandwidth by only swapping the
// damaged/scissored region (clamped to the viewport).
swap_buffer_rect_.Intersect(gfx::Rect(surface_size));
@@ -2925,7 +2909,7 @@ void GLRenderer::SwapBuffers(CompositorFrameMetadata metadata) {
} else {
// Expand the swap rect to the full surface unless it's empty, and empty
// swap is allowed.
- if (!swap_buffer_rect_.IsEmpty() || !capabilities_.allow_empty_swap) {
+ if (!swap_buffer_rect_.IsEmpty() || !allow_empty_swap_) {
swap_buffer_rect_ = gfx::Rect(surface_size);
}
compositor_frame.gl_frame_data->sub_buffer_rect = swap_buffer_rect_;
« no previous file with comments | « cc/output/gl_renderer.h ('k') | cc/output/gl_renderer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698