Skip to content

Commit

Permalink
gpu: Rename DC layer types for clarity
Browse files Browse the repository at this point in the history
DCRendererLayerParams was cargo-culted from CARendererLayerParams, but
there's no "DCRenderer". Rename it to DCLayerOverlayParams and move to
gl namespace too.

To avoid confusion with the existing DCLayerOverlay type, the latter is
renamed to DCLayerOverlayCandidate to make its intent clear.

Bug: 1005306
Change-Id: I197fc67347e4c0e4d0c48bf16c3b7e80acc63eea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4112668
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Kyle Charbonneau <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1084755}
  • Loading branch information
sunnyps authored and Chromium LUCI CQ committed Dec 18, 2022
1 parent e0603db commit 81b4a53
Show file tree
Hide file tree
Showing 30 changed files with 201 additions and 206 deletions.
2 changes: 1 addition & 1 deletion components/viz/service/display/DEPS
Expand Up @@ -35,7 +35,7 @@ include_rules = [
"+ui/gfx/hdr_metadata.h",
"+ui/gfx/video_types.h",
"+ui/gl/ca_renderer_layer_params.h",
"+ui/gl/dc_renderer_layer_params.h",
"+ui/gl/dc_layer_overlay_params.h",
"+ui/gl/direct_composition_support.h",
"+ui/gl/gl_fence.h",
"+ui/gl/gl_utils.h",
Expand Down
32 changes: 17 additions & 15 deletions components/viz/service/display/dc_layer_overlay.cc
Expand Up @@ -138,7 +138,7 @@ DCLayerResult ValidateYUVQuad(

void FromYUVQuad(const YUVVideoDrawQuad* quad,
const gfx::Transform& transform_to_root_target,
DCLayerOverlay* dc_layer) {
DCLayerOverlayCandidate* dc_layer) {
// Direct composition path only supports single NV12 buffer, or two buffers
// one each for Y and UV planes.
DCHECK(quad->y_plane_resource_id() && quad->u_plane_resource_id());
Expand Down Expand Up @@ -200,7 +200,7 @@ DCLayerResult ValidateTextureQuad(

void FromTextureQuad(const TextureDrawQuad* quad,
const gfx::Transform& transform_to_root_target,
DCLayerOverlay* dc_layer) {
DCLayerOverlayCandidate* dc_layer) {
dc_layer->resources[kTextureResourceIndex] = quad->resource_id();
dc_layer->z_order = 1;
dc_layer->content_rect = gfx::Rect(quad->resource_size_in_pixels());
Expand Down Expand Up @@ -422,9 +422,10 @@ void RecordDCLayerResult(DCLayerResult result, QuadList::ConstIterator it) {
}

// This function records the damage rect rect of the current frame.
void RecordOverlayHistograms(DCLayerOverlayList* dc_layer_overlays,
bool has_occluding_surface_damage,
const gfx::Rect* damage_rect) {
void RecordOverlayHistograms(
std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
bool has_occluding_surface_damage,
const gfx::Rect* damage_rect) {
// If an underlay is found, we record the damage rect of this frame as an
// underlay.
bool is_overlay = true;
Expand Down Expand Up @@ -472,11 +473,12 @@ bool IsClearVideoQuad(const QuadList::ConstIterator& it) {

} // namespace

DCLayerOverlay::DCLayerOverlay() = default;
DCLayerOverlay::DCLayerOverlay(const DCLayerOverlay& other) = default;
DCLayerOverlay& DCLayerOverlay::operator=(const DCLayerOverlay& other) =
default;
DCLayerOverlay::~DCLayerOverlay() = default;
DCLayerOverlayCandidate::DCLayerOverlayCandidate() = default;
DCLayerOverlayCandidate::DCLayerOverlayCandidate(
const DCLayerOverlayCandidate& other) = default;
DCLayerOverlayCandidate& DCLayerOverlayCandidate::operator=(
const DCLayerOverlayCandidate& other) = default;
DCLayerOverlayCandidate::~DCLayerOverlayCandidate() = default;

DCLayerOverlayProcessor::DCLayerOverlayProcessor(
const DebugRendererSettings* debug_settings,
Expand Down Expand Up @@ -614,7 +616,7 @@ void DCLayerOverlayProcessor::UpdateRootDamageRect(
}

void DCLayerOverlayProcessor::InsertDebugBorderDrawQuad(
const DCLayerOverlayList* dc_layer_overlays,
const std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
AggregatedRenderPass* render_pass,
const gfx::RectF& display_rect,
gfx::Rect* damage_rect) {
Expand Down Expand Up @@ -732,7 +734,7 @@ void DCLayerOverlayProcessor::Process(
AggregatedRenderPass* render_pass,
gfx::Rect* damage_rect,
SurfaceDamageRectList surface_damage_rect_list,
DCLayerOverlayList* dc_layer_overlays,
std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
bool is_video_capture_enabled,
bool is_page_fullscreen_mode) {
bool this_frame_has_occluding_damage_rect = false;
Expand Down Expand Up @@ -1055,12 +1057,12 @@ void DCLayerOverlayProcessor::UpdateDCLayerOverlays(
QuadList::Iterator* new_it,
size_t* new_index,
gfx::Rect* damage_rect,
DCLayerOverlayList* dc_layer_overlays,
std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
bool is_page_fullscreen_mode) {
// Record the result first before ProcessForOverlay().
RecordDCLayerResult(DC_LAYER_SUCCESS, it);

DCLayerOverlay dc_layer;
DCLayerOverlayCandidate dc_layer;
dc_layer.is_video_fullscreen_letterboxing =
is_page_fullscreen_mode
? IsFullScreenLetterboxing(it, render_pass->quad_list.end(),
Expand Down Expand Up @@ -1133,7 +1135,7 @@ void DCLayerOverlayProcessor::ProcessForUnderlay(
const QuadList::Iterator& it,
size_t processed_overlay_count,
gfx::Rect* damage_rect,
DCLayerOverlay* dc_layer) {
DCLayerOverlayCandidate* dc_layer) {
// Assign decreasing z-order so that underlays processed earlier, and hence
// which are above the subsequent underlays, are placed above in the direct
// composition visual tree.
Expand Down
52 changes: 26 additions & 26 deletions components/viz/service/display/dc_layer_overlay.h
Expand Up @@ -26,14 +26,14 @@ class DisplayResourceProvider;

// TODO(weiliangc): Eventually fold this into OverlayProcessorWin and
// OverlayCandidate class.
// Holds all information necessary to construct a
// DCLayer from a DrawQuad.
class VIZ_SERVICE_EXPORT DCLayerOverlay {
// Holds all information necessary to construct a direct composition overlay
// from a DrawQuad.
class VIZ_SERVICE_EXPORT DCLayerOverlayCandidate {
public:
DCLayerOverlay();
DCLayerOverlay(const DCLayerOverlay& other);
DCLayerOverlay& operator=(const DCLayerOverlay& other);
~DCLayerOverlay();
DCLayerOverlayCandidate();
DCLayerOverlayCandidate(const DCLayerOverlayCandidate& other);
DCLayerOverlayCandidate& operator=(const DCLayerOverlayCandidate& other);
~DCLayerOverlayCandidate();

// Resource ids for video Y and UV planes, a single NV12 image, or a swap
// chain image. See DirectCompositionSurfaceWin for details.
Expand Down Expand Up @@ -73,8 +73,6 @@ class VIZ_SERVICE_EXPORT DCLayerOverlay {
bool is_video_fullscreen_letterboxing = false;
};

typedef std::vector<DCLayerOverlay> DCLayerOverlayList;

class VIZ_SERVICE_EXPORT DCLayerOverlayProcessor final
: public gl::DirectCompositionOverlayCapsObserver {
public:
Expand All @@ -100,7 +98,7 @@ class VIZ_SERVICE_EXPORT DCLayerOverlayProcessor final
AggregatedRenderPass* render_pass,
gfx::Rect* damage_rect,
SurfaceDamageRectList surface_damage_rect_list,
DCLayerOverlayList* dc_layer_overlays,
std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
bool is_video_capture_enabled,
bool is_page_fullscreen_mode);
void ClearOverlayState();
Expand All @@ -124,17 +122,18 @@ class VIZ_SERVICE_EXPORT DCLayerOverlayProcessor final

// UpdateDCLayerOverlays() adds the quad at |it| to the overlay list
// |dc_layer_overlays|.
void UpdateDCLayerOverlays(const gfx::RectF& display_rect,
AggregatedRenderPass* render_pass,
const QuadList::Iterator& it,
const gfx::Rect& quad_rectangle_in_target_space,
const gfx::Rect& occluding_damage_rect,
bool is_overlay,
QuadList::Iterator* new_it,
size_t* new_index,
gfx::Rect* damage_rect,
DCLayerOverlayList* dc_layer_overlays,
bool is_page_fullscreen_mode);
void UpdateDCLayerOverlays(
const gfx::RectF& display_rect,
AggregatedRenderPass* render_pass,
const QuadList::Iterator& it,
const gfx::Rect& quad_rectangle_in_target_space,
const gfx::Rect& occluding_damage_rect,
bool is_overlay,
QuadList::Iterator* new_it,
size_t* new_index,
gfx::Rect* damage_rect,
std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
bool is_page_fullscreen_mode);

// Returns an iterator to the element after |it|.
QuadList::Iterator ProcessForOverlay(const gfx::RectF& display_rect,
Expand All @@ -149,7 +148,7 @@ class VIZ_SERVICE_EXPORT DCLayerOverlayProcessor final
const QuadList::Iterator& it,
size_t processed_overlay_count,
gfx::Rect* damage_rect,
DCLayerOverlay* dc_layer);
DCLayerOverlayCandidate* dc_layer);

void UpdateRootDamageRect(const gfx::RectF& display_rect,
gfx::Rect* damage_rect);
Expand All @@ -159,10 +158,11 @@ class VIZ_SERVICE_EXPORT DCLayerOverlayProcessor final
const gfx::Rect& occluding_damage_rect,
gfx::Rect* damage_rect);

void InsertDebugBorderDrawQuad(const DCLayerOverlayList* dc_layer_overlays,
AggregatedRenderPass* render_pass,
const gfx::RectF& display_rect,
gfx::Rect* damage_rect);
void InsertDebugBorderDrawQuad(
const std::vector<DCLayerOverlayCandidate>* dc_layer_overlays,
AggregatedRenderPass* render_pass,
const gfx::RectF& display_rect,
gfx::Rect* damage_rect);
bool IsPreviousFrameUnderlayRect(const gfx::Rect& quad_rectangle,
size_t index);

Expand Down
47 changes: 25 additions & 22 deletions components/viz/service/display/overlay_dc_unittest.cc
Expand Up @@ -260,7 +260,7 @@ TEST_F(DCLayerOverlayTest, DisableVideoOverlayIfMovingFeature) {
video_quad->rect = gfx::Rect(0, 0, 10, 10) + video_rect_offset;
video_quad->visible_rect = gfx::Rect(0, 0, 10, 10) + video_rect_offset;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap
render_pass_backdrop_filters;
Expand Down Expand Up @@ -319,7 +319,8 @@ TEST_F(DCLayerOverlayTest, Occluded) {
auto* first_video_quad = CreateFullscreenCandidateYUVVideoQuad(
resource_provider_.get(), child_resource_provider_.get(),
child_provider_.get(), pass->shared_quad_state_list.back(), pass.get());
// Set the protected video flag will force DCLayerOverlay to use hw overlay
// Set the protected video flag will force DCLayerOverlayCandidate to use hw
// overlay
first_video_quad->protected_video_type =
gfx::ProtectedVideoType::kHardwareProtected;

Expand All @@ -329,13 +330,14 @@ TEST_F(DCLayerOverlayTest, Occluded) {
auto* second_video_quad = CreateFullscreenCandidateYUVVideoQuad(
resource_provider_.get(), child_resource_provider_.get(),
child_provider_.get(), pass->shared_quad_state_list.back(), pass.get());
// Set the protected video flag will force DCLayerOverlay to use hw overlay
// Set the protected video flag will force DCLayerOverlayCandidate to use hw
// overlay
second_video_quad->protected_video_type =
gfx::ProtectedVideoType::kHardwareProtected;
second_video_quad->rect.set_origin(gfx::Point(2, 2));
second_video_quad->visible_rect.set_origin(gfx::Point(2, 2));

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(1, 1, 10, 10);
Expand Down Expand Up @@ -370,7 +372,8 @@ TEST_F(DCLayerOverlayTest, Occluded) {
auto* video_quad = CreateFullscreenCandidateYUVVideoQuad(
resource_provider_.get(), child_resource_provider_.get(),
child_provider_.get(), pass->shared_quad_state_list.back(), pass.get());
// Set the protected video flag will force DCLayerOverlay to use hw overlay
// Set the protected video flag will force DCLayerOverlayCandidate to use hw
// overlay
video_quad->protected_video_type =
gfx::ProtectedVideoType::kHardwareProtected;

Expand All @@ -385,7 +388,7 @@ TEST_F(DCLayerOverlayTest, Occluded) {
second_video_quad->rect.set_origin(gfx::Point(2, 2));
second_video_quad->visible_rect.set_origin(gfx::Point(2, 2));

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(1, 1, 10, 10);
Expand Down Expand Up @@ -435,7 +438,7 @@ TEST_F(DCLayerOverlayTest, DamageRectWithoutVideoDamage) {
video_quad->rect = gfx::Rect(0, 0, 200, 200);
video_quad->visible_rect = video_quad->rect;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
// Damage rect fully outside video quad
Expand Down Expand Up @@ -478,7 +481,7 @@ TEST_F(DCLayerOverlayTest, DamageRectWithoutVideoDamage) {
video_quad->rect = gfx::Rect(0, 0, 200, 200);
video_quad->visible_rect = video_quad->rect;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
// Damage rect fully outside video quad
Expand Down Expand Up @@ -509,7 +512,7 @@ TEST_F(DCLayerOverlayTest, DamageRect) {
resource_provider_.get(), child_resource_provider_.get(),
child_provider_.get(), pass->shared_quad_state_list.back(), pass.get());

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(1, 1, 10, 10);
Expand Down Expand Up @@ -555,7 +558,7 @@ TEST_F(DCLayerOverlayTest, ClipRect) {
// Clipped rect shouldn't be overlapped by clipped opaque quad rect.
shared_state->clip_rect = gfx::Rect(0, 0, 100, 3);

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
AggregatedRenderPassList pass_list;
Expand Down Expand Up @@ -594,7 +597,7 @@ TEST_F(DCLayerOverlayTest, TransparentOnTop) {
child_provider_.get(), pass->shared_quad_state_list.back(), pass.get());
pass->shared_quad_state_list.back()->opacity = 0.5f;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(1, 1, 10, 10);
Expand Down Expand Up @@ -628,7 +631,7 @@ TEST_F(DCLayerOverlayTest, UnderlayDamageRectWithQuadOnTopUnchanged) {
resource_provider_.get(), child_resource_provider_.get(),
child_provider_.get(), shared_state, pass.get());

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
AggregatedRenderPassList pass_list;
Expand Down Expand Up @@ -679,7 +682,7 @@ TEST_F(DCLayerOverlayTest, RoundedCorners) {
pass->shared_quad_state_list.back()->mask_filter_info =
gfx::MaskFilterInfo(gfx::RRectF(gfx::RectF(0.f, 0.f, 20.f, 30.f), 5.f));

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(0, 0, 256, 256);
Expand Down Expand Up @@ -737,7 +740,7 @@ TEST_F(DCLayerOverlayTest, RoundedCorners) {
pass->shared_quad_state_list.back()->mask_filter_info =
gfx::MaskFilterInfo(gfx::RRectF(gfx::RectF(0.f, 0.f, 20.f, 30.f), 5.f));

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(0, 0, 256, 256);
Expand Down Expand Up @@ -795,7 +798,7 @@ TEST_F(DCLayerOverlayTest, RoundedCorners) {
pass->shared_quad_state_list.back()->mask_filter_info =
gfx::MaskFilterInfo(gfx::RRectF(gfx::RectF(0.f, 0.f, 20.f, 30.f), 5.f));

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(0, 0, 256, 256);
Expand Down Expand Up @@ -862,7 +865,7 @@ TEST_F(DCLayerOverlayTest, MultipleYUVOverlays) {
second_video_quad->visible_rect = second_rect;
pass->shared_quad_state_list.back()->overlay_damage_index = 2;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(0, 0, 220, 220);
Expand Down Expand Up @@ -905,7 +908,7 @@ TEST_F(DCLayerOverlayTest, SetEnableDCLayers) {
AggregatedRenderPassList pass_list;
pass_list.push_back(std::move(pass));

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
SurfaceDamageRectList surface_damage_rect_list;
Expand Down Expand Up @@ -943,7 +946,7 @@ TEST_F(DCLayerOverlayTest, SetEnableDCLayers) {
quad->SetNew(pass->CreateAndAppendSharedQuadState(), damage_rect_,
damage_rect_, SkColors::kRed, false);

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;

Expand Down Expand Up @@ -1024,7 +1027,7 @@ TEST_F(DCLayerOverlayTest, PixelMovingForegroundFilter) {
// 100, 100).
pass->output_rect = gfx::Rect(0, 0, 512, 512);

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
render_pass_filters[filter_render_pass_id] = &blur_filter;
Expand Down Expand Up @@ -1094,7 +1097,7 @@ TEST_F(DCLayerOverlayTest, BackdropFilter) {
// 100, 100).
pass->output_rect = gfx::Rect(0, 0, 512, 512);

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
render_pass_backdrop_filters[backdrop_filter_render_pass_id] =
Expand Down Expand Up @@ -1140,7 +1143,7 @@ TEST_F(DCLayerOverlayTest, VideoCapture) {
video_quad->visible_rect = rect;
pass->shared_quad_state_list.back()->overlay_damage_index = 1;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(0, 0, 256, 256);
Expand Down Expand Up @@ -1178,7 +1181,7 @@ TEST_F(DCLayerOverlayTest, VideoCapture) {
video_quad->visible_rect = rect;
pass->shared_quad_state_list.back()->overlay_damage_index = 0;

DCLayerOverlayList dc_layer_list;
std::vector<DCLayerOverlayCandidate> dc_layer_list;
OverlayProcessorInterface::FilterOperationsMap render_pass_filters;
OverlayProcessorInterface::FilterOperationsMap render_pass_backdrop_filters;
damage_rect_ = gfx::Rect(0, 0, 256, 256);
Expand Down

0 comments on commit 81b4a53

Please sign in to comment.