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

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

Issue 2254543003: cc: Delete the RendererClient class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@setvisible-browser
Patch Set: deleterendererclient: rebase 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 }; 360 };
361 361
362 gpu::gles2::GLES2Interface* gl_; 362 gpu::gles2::GLES2Interface* gl_;
363 unsigned query_id_; 363 unsigned query_id_;
364 bool is_pending_; 364 bool is_pending_;
365 base::WeakPtrFactory<SyncQuery> weak_ptr_factory_; 365 base::WeakPtrFactory<SyncQuery> weak_ptr_factory_;
366 366
367 DISALLOW_COPY_AND_ASSIGN(SyncQuery); 367 DISALLOW_COPY_AND_ASSIGN(SyncQuery);
368 }; 368 };
369 369
370 GLRenderer::GLRenderer(RendererClient* client, 370 GLRenderer::GLRenderer(const RendererSettings* settings,
371 const RendererSettings* settings,
372 OutputSurface* output_surface, 371 OutputSurface* output_surface,
373 ResourceProvider* resource_provider, 372 ResourceProvider* resource_provider,
374 TextureMailboxDeleter* texture_mailbox_deleter, 373 TextureMailboxDeleter* texture_mailbox_deleter,
375 int highp_threshold_min) 374 int highp_threshold_min)
376 : DirectRenderer(client, settings, output_surface, resource_provider), 375 : DirectRenderer(settings, output_surface, resource_provider),
377 offscreen_framebuffer_id_(0), 376 offscreen_framebuffer_id_(0),
378 shared_geometry_quad_(QuadVertexRect()), 377 shared_geometry_quad_(QuadVertexRect()),
379 gl_(output_surface->context_provider()->ContextGL()), 378 gl_(output_surface->context_provider()->ContextGL()),
380 context_support_(output_surface->context_provider()->ContextSupport()), 379 context_support_(output_surface->context_provider()->ContextSupport()),
381 texture_mailbox_deleter_(texture_mailbox_deleter), 380 texture_mailbox_deleter_(texture_mailbox_deleter),
382 is_backbuffer_discarded_(false),
383 is_scissor_enabled_(false), 381 is_scissor_enabled_(false),
384 scissor_rect_needs_reset_(true), 382 scissor_rect_needs_reset_(true),
385 stencil_shadow_(false), 383 stencil_shadow_(false),
386 blend_shadow_(false), 384 blend_shadow_(false),
387 highp_threshold_min_(highp_threshold_min), 385 highp_threshold_min_(highp_threshold_min),
388 highp_threshold_cache_(0), 386 highp_threshold_cache_(0),
389 use_sync_query_(false), 387 use_sync_query_(false),
390 gl_composited_texture_quad_border_( 388 gl_composited_texture_quad_border_(
391 settings->gl_composited_texture_quad_border), 389 settings->gl_composited_texture_quad_border),
392 bound_geometry_(NO_BINDING), 390 bound_geometry_(NO_BINDING),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 } 440 }
443 441
444 CleanupSharedObjects(); 442 CleanupSharedObjects();
445 } 443 }
446 444
447 const RendererCapabilitiesImpl& GLRenderer::Capabilities() const { 445 const RendererCapabilitiesImpl& GLRenderer::Capabilities() const {
448 return capabilities_; 446 return capabilities_;
449 } 447 }
450 448
451 void GLRenderer::DidChangeVisibility() { 449 void GLRenderer::DidChangeVisibility() {
452 if (!visible()) { 450 if (visible()) {
451 output_surface_->EnsureBackbuffer();
452 } else {
453 TRACE_EVENT0("cc", "GLRenderer::DidChangeVisibility dropping resources"); 453 TRACE_EVENT0("cc", "GLRenderer::DidChangeVisibility dropping resources");
454 ReleaseRenderPassTextures(); 454 ReleaseRenderPassTextures();
455 DiscardBackbuffer(); 455 output_surface_->DiscardBackbuffer();
456 } 456 }
457 457
458 PrepareGeometry(NO_BINDING); 458 PrepareGeometry(NO_BINDING);
459 459
460 // Handle cleanup of resources on the ContextProvider. The compositor 460 // Handle cleanup of resources on the ContextProvider. The compositor
461 // ContextProvider is not shared, so always pass 0 for the client_id. 461 // ContextProvider is not shared, so always pass 0 for the client_id.
462 // TODO(crbug.com/487471): Update this when we share compositor 462 // TODO(crbug.com/487471): Update this when we share compositor
463 // ContextProviders. 463 // ContextProviders.
464 context_support_->SetClientVisible(0 /* client_id */, visible()); 464 context_support_->SetClientVisible(0 /* client_id */, visible());
465 bool aggressively_free_resources = !context_support_->AnyClientsVisible(); 465 bool aggressively_free_resources = !context_support_->AnyClientsVisible();
(...skipping 2425 matching lines...) Expand 10 before | Expand all | Expand 10 after
2891 gfx::Transform quad_rect_matrix; 2891 gfx::Transform quad_rect_matrix;
2892 QuadRectTransform(&quad_rect_matrix, draw_transform, quad_rect); 2892 QuadRectTransform(&quad_rect_matrix, draw_transform, quad_rect);
2893 static float gl_matrix[16]; 2893 static float gl_matrix[16];
2894 ToGLMatrix(&gl_matrix[0], projection_matrix * quad_rect_matrix); 2894 ToGLMatrix(&gl_matrix[0], projection_matrix * quad_rect_matrix);
2895 gl_->UniformMatrix4fv(matrix_location, 1, false, &gl_matrix[0]); 2895 gl_->UniformMatrix4fv(matrix_location, 1, false, &gl_matrix[0]);
2896 2896
2897 gl_->DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0); 2897 gl_->DrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
2898 } 2898 }
2899 2899
2900 void GLRenderer::SwapBuffers(CompositorFrameMetadata metadata) { 2900 void GLRenderer::SwapBuffers(CompositorFrameMetadata metadata) {
2901 DCHECK(!is_backbuffer_discarded_); 2901 DCHECK(visible());
2902 2902
2903 TRACE_EVENT0("cc,benchmark", "GLRenderer::SwapBuffers"); 2903 TRACE_EVENT0("cc,benchmark", "GLRenderer::SwapBuffers");
2904 // We're done! Time to swapbuffers! 2904 // We're done! Time to swapbuffers!
2905 2905
2906 gfx::Size surface_size = output_surface_->SurfaceSize(); 2906 gfx::Size surface_size = output_surface_->SurfaceSize();
2907 2907
2908 CompositorFrame compositor_frame; 2908 CompositorFrame compositor_frame;
2909 compositor_frame.metadata = std::move(metadata); 2909 compositor_frame.metadata = std::move(metadata);
2910 compositor_frame.gl_frame_data = base::WrapUnique(new GLFrameData); 2910 compositor_frame.gl_frame_data = base::WrapUnique(new GLFrameData);
2911 compositor_frame.gl_frame_data->size = surface_size; 2911 compositor_frame.gl_frame_data->size = surface_size;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2982 const gpu::TextureInUseResponses& responses) { 2982 const gpu::TextureInUseResponses& responses) {
2983 DCHECK(settings_->release_overlay_resources_after_gpu_query); 2983 DCHECK(settings_->release_overlay_resources_after_gpu_query);
2984 for (const gpu::TextureInUseResponse& response : responses) { 2984 for (const gpu::TextureInUseResponse& response : responses) {
2985 if (!response.in_use) { 2985 if (!response.in_use) {
2986 swapped_and_acked_overlay_resources_.erase(response.texture); 2986 swapped_and_acked_overlay_resources_.erase(response.texture);
2987 } 2987 }
2988 } 2988 }
2989 color_lut_cache_.Swap(); 2989 color_lut_cache_.Swap();
2990 } 2990 }
2991 2991
2992 void GLRenderer::DiscardBackbuffer() {
2993 if (is_backbuffer_discarded_)
2994 return;
2995
2996 output_surface_->DiscardBackbuffer();
2997
2998 is_backbuffer_discarded_ = true;
2999
3000 // Damage tracker needs a full reset every time framebuffer is discarded.
3001 client_->SetFullRootLayerDamage();
3002 }
3003
3004 void GLRenderer::EnsureBackbuffer() {
3005 if (!is_backbuffer_discarded_)
3006 return;
3007
3008 output_surface_->EnsureBackbuffer();
3009 is_backbuffer_discarded_ = false;
3010 }
3011
3012 void GLRenderer::GetFramebufferPixelsAsync( 2992 void GLRenderer::GetFramebufferPixelsAsync(
3013 const DrawingFrame* frame, 2993 const DrawingFrame* frame,
3014 const gfx::Rect& rect, 2994 const gfx::Rect& rect,
3015 std::unique_ptr<CopyOutputRequest> request) { 2995 std::unique_ptr<CopyOutputRequest> request) {
3016 DCHECK(!request->IsEmpty()); 2996 DCHECK(!request->IsEmpty());
3017 if (request->IsEmpty()) 2997 if (request->IsEmpty())
3018 return; 2998 return;
3019 if (rect.IsEmpty()) 2999 if (rect.IsEmpty())
3020 return; 3000 return;
3021 3001
(...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after
4073 4053
4074 gl_->ScheduleCALayerSharedStateCHROMIUM( 4054 gl_->ScheduleCALayerSharedStateCHROMIUM(
4075 ca_layer_overlay->shared_state->opacity, is_clipped, clip_rect, 4055 ca_layer_overlay->shared_state->opacity, is_clipped, clip_rect,
4076 sorting_context_id, gl_transform); 4056 sorting_context_id, gl_transform);
4077 gl_->ScheduleCALayerCHROMIUM( 4057 gl_->ScheduleCALayerCHROMIUM(
4078 texture_id, contents_rect, ca_layer_overlay->background_color, 4058 texture_id, contents_rect, ca_layer_overlay->background_color,
4079 ca_layer_overlay->edge_aa_mask, bounds_rect, filter); 4059 ca_layer_overlay->edge_aa_mask, bounds_rect, filter);
4080 } 4060 }
4081 4061
4082 } // namespace cc 4062 } // namespace cc
OLDNEW
« 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