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

Unified Diff: cc/output/gl_renderer.cc

Issue 2769573002: Return overlay resources to renderers in larger batches. (Closed)
Patch Set: make friend Created 3 years, 9 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/dc_layer_overlay.cc ('k') | cc/quads/draw_quad.h » ('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 0e587aad45e2ca33d5c0e47fba52d2eeb2a4f892..1d720af284f23b9098a9cd512e65e33e83bb8f10 100644
--- a/cc/output/gl_renderer.cc
+++ b/cc/output/gl_renderer.cc
@@ -2667,6 +2667,8 @@ void GLRenderer::SwapBuffersComplete() {
gl_->ScheduleCALayerInUseQueryCHROMIUM(textures.size(), textures.data());
}
} else if (swapping_overlay_resources_.size() > 1) {
+ ResourceProvider::ScopedBatchReturnResources returner(resource_provider_);
+
// If a query is not needed to release the overlay buffers, we can assume
// that once a swap buffer has completed we can remove the oldest buffers
// from the queue.
@@ -2677,6 +2679,7 @@ void GLRenderer::SwapBuffersComplete() {
void GLRenderer::DidReceiveTextureInUseResponses(
const gpu::TextureInUseResponses& responses) {
DCHECK(settings_->release_overlay_resources_after_gpu_query);
+ ResourceProvider::ScopedBatchReturnResources returner(resource_provider_);
for (const gpu::TextureInUseResponse& response : responses) {
if (!response.in_use) {
swapped_and_acked_overlay_resources_.erase(response.texture);
@@ -3221,13 +3224,15 @@ void GLRenderer::ScheduleDCLayers() {
current_frame()->dc_layer_overlay_list) {
DCHECK(!dc_layer_overlay.rpdq);
- ResourceId contents_resource_id = dc_layer_overlay.contents_resource_id;
unsigned texture_id = 0;
- if (contents_resource_id) {
- pending_overlay_resources_.push_back(
- base::MakeUnique<ResourceProvider::ScopedReadLockGL>(
- resource_provider_, contents_resource_id));
- texture_id = pending_overlay_resources_.back()->texture_id();
+ for (const auto& contents_resource_id : dc_layer_overlay.resources) {
+ if (contents_resource_id) {
+ pending_overlay_resources_.push_back(
+ base::MakeUnique<ResourceProvider::ScopedReadLockGL>(
+ resource_provider_, contents_resource_id));
+ if (!texture_id)
+ texture_id = pending_overlay_resources_.back()->texture_id();
+ }
}
GLfloat contents_rect[4] = {
dc_layer_overlay.contents_rect.x(), dc_layer_overlay.contents_rect.y(),
« no previous file with comments | « cc/output/dc_layer_overlay.cc ('k') | cc/quads/draw_quad.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698