Commit 666c947c authored by Sunny Sachanandani's avatar Sunny Sachanandani Committed by Commit Bot

canvas: Specify size for RenderPass shared quad state and quad list size

CanvasResourceDispatcher creates a CompositorFrame with exactly one
quad, but because it uses the default RenderPass::Create() factory
function, it ends up allocating storage for 128 quads and 32 shared quad
states. A similar use case, VideoFrameSubmitter, was measured to take
around 0.2% of total Chrome CPU time in cases like Google Meet which
have a large number of VideoFrameSubmitters.  Although there are no
measurements for offscreen / low latency canvas, the same optimization
should help.

Bug: 1077299
Change-Id: I4862e8bda50edd35c73adf26c1d5b180de1cb2a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2181076
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Khushal <khushalsagar@chromium.org>
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: default avatarKhushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#765346}
parent c4ed3e77
...@@ -230,7 +230,8 @@ bool CanvasResourceDispatcher::PrepareFrame( ...@@ -230,7 +230,8 @@ bool CanvasResourceDispatcher::PrepareFrame(
const gfx::Rect bounds(size_.Width(), size_.Height()); const gfx::Rect bounds(size_.Width(), size_.Height());
constexpr int kRenderPassId = 1; constexpr int kRenderPassId = 1;
constexpr bool is_clipped = false; constexpr bool is_clipped = false;
std::unique_ptr<viz::RenderPass> pass = viz::RenderPass::Create(); auto pass = viz::RenderPass::Create(/*shared_quad_state_list_size=*/1u,
/*quad_list_size=*/1u);
pass->SetNew(kRenderPassId, bounds, pass->SetNew(kRenderPassId, bounds,
gfx::Rect(damage_rect.x(), damage_rect.y(), damage_rect.width(), gfx::Rect(damage_rect.x(), damage_rect.y(), damage_rect.width(),
damage_rect.height()), damage_rect.height()),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment