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

Unified Diff: cc/output/gl_renderer.cc

Issue 1430813002: cc: Fork OverlayCandidate to CALayerOverlay (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master1
Patch Set: Rebase Created 5 years, 1 month 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 22e2cb8117561cf2edf83d6f2c202a3d91a0626e..1677de1ccc083300f6b81dc0bac0e10da0dd545b 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -2452,6 +2452,7 @@ void GLRenderer::FinishDrawingFrame(DrawingFrame* frame) {
gl_->Disable(GL_BLEND);
blend_shadow_ = false;
+ ScheduleCALayers(frame);
ScheduleOverlays(frame);
}
@@ -3527,6 +3528,32 @@ bool GLRenderer::IsContextLost() {
return gl_->GetGraphicsResetStatusKHR() != GL_NO_ERROR;
}
+void GLRenderer::ScheduleCALayers(DrawingFrame* frame) {
+ for (const CALayerOverlay& ca_layer_overlay : frame->ca_layer_overlay_list) {
+ unsigned texture_id = 0;
+ if (ca_layer_overlay.contents_resource_id) {
+ pending_overlay_resources_.push_back(
+ make_scoped_ptr(new ResourceProvider::ScopedReadLockGL(
+ resource_provider_, ca_layer_overlay.contents_resource_id)));
+ texture_id = pending_overlay_resources_.back()->texture_id();
+ }
+ GLfloat contents_rect[4] = {
+ ca_layer_overlay.contents_rect.x(), ca_layer_overlay.contents_rect.y(),
+ ca_layer_overlay.contents_rect.width(),
+ ca_layer_overlay.contents_rect.height(),
+ };
+ GLfloat bounds_size[2] = {
+ ca_layer_overlay.bounds_size.width(),
+ ca_layer_overlay.bounds_size.height(),
+ };
+ GLfloat transform[16];
+ ca_layer_overlay.transform.asColMajorf(transform);
+ gl_->ScheduleCALayerCHROMIUM(
+ texture_id, contents_rect, ca_layer_overlay.opacity,
+ ca_layer_overlay.background_color, bounds_size, transform);
+ }
+}
+
void GLRenderer::ScheduleOverlays(DrawingFrame* frame) {
if (!frame->overlay_list.size())
return;
« 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