viz: win: Reject RPDQ overlays with backdrop filters
In delegated compositing on Windows, we currently check for backdrop filter occlusion using the whole render pass quad list. We can instead just check if a RPDQ has backdrop filters when promoting it to overlay. Change-Id: I9e8313efa1a3c6b5dbc0d4c41fdb946ccf6bc6a7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6261411 Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org> Commit-Queue: Michael Tang <tangm@microsoft.com> Cr-Commit-Position: refs/heads/main@{#1420727}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
4a5bc3f309
commit
f23c7bf500
@@ -518,12 +518,6 @@ OverlayProcessorWin::TryDelegatedCompositing(
|
||||
|
||||
// Try to promote all the quads in the root pass to overlay.
|
||||
for (const auto* quad : root_render_pass->quad_list.BackToFront()) {
|
||||
if (OverlayCandidateFactory::IsOccludedByFilteredQuad(
|
||||
*quad, root_render_pass->quad_list.begin(),
|
||||
root_render_pass->quad_list.end(), render_pass_backdrop_filters)) {
|
||||
return base::unexpected(DelegationStatus::kCompositedBackdropFilter);
|
||||
}
|
||||
|
||||
std::optional<OverlayCandidate> dc_layer;
|
||||
if (is_full_delegated_compositing) {
|
||||
// Try to promote videos like DCLayerOverlay does first, then fall back to
|
||||
@@ -561,6 +555,12 @@ OverlayProcessorWin::TryDelegatedCompositing(
|
||||
// |UpdatePromotedRenderPassProperties| to support partially delegated
|
||||
// compositing.
|
||||
if (dc_layer->rpdq) {
|
||||
if (render_pass_backdrop_filters.contains(
|
||||
dc_layer->rpdq->render_pass_id)) {
|
||||
// We don't delegate composting of backdrop filters to the OS.
|
||||
return base::unexpected(DelegationStatus::kCompositedBackdropFilter);
|
||||
}
|
||||
|
||||
auto render_pass_it =
|
||||
std::ranges::find(render_passes, dc_layer->rpdq->render_pass_id,
|
||||
&AggregatedRenderPass::id);
|
||||
|
Reference in New Issue
Block a user