0

[//cc] Move alpha type from TextureDrawQuad to TransferableResource

* Adds `alpha_type` to TransferableResource
* Removes `premultiplied_alpha` from TextureDrawQuad
* Has all sites that set the latter instead correspondingly set the
  former [*]
* Changes SkiaRenderer to read the former instead of the latter

[*] The only subtle change is in video_resource_updater.cc. The
reasoning for the change is as follows:
* The texture quad has its resource id set to `frame_resource_id_`.
* That resource id is what identifies the TransferableResource
  associated with that texture quad.
* `frame_resource_id_` is assigned at [1].
* Hence, we need to set `alpha_type` on the TransferableResource that
  was linked to `frame_resource_id_` in [1].
* That TransferableResource is created here [2], which is where I've
  added the setting of `alpha_type`.

[1] https://source.chromium.org/chromium/chromium/src/+/main:media/renderers/video_resource_updater.cc;l=532-534?q=video_resource_updater.cc&ss=chromium
[2] https://source.chromium.org/chromium/chromium/src/+/main:media/renderers/video_resource_updater.cc;l=522-523?q=video_resource_updater.cc&ss=chromium

Bug: 410591523
Change-Id: Id97743a4d49a8aa1ed129a4a769b17916435ee28
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6544948
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Antonio Sartori <antoniosartori@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1460544}
This commit is contained in:
Colin Blundell
2025-05-15 00:52:23 -07:00
committed by Chromium LUCI CQ
parent e71e7f22c9
commit bbe2e76293
18 changed files with 43 additions and 32 deletions

@ -159,7 +159,6 @@ bool StructTraits<viz::mojom::TextureQuadStateDataView, viz::DrawQuad>::Read(
return false;
}
quad->premultiplied_alpha = data.premultiplied_alpha();
gfx::ProtectedVideoType protected_video_type =
gfx::ProtectedVideoType::kClear;
viz::OverlayPriority overlay_priority_hint = viz::OverlayPriority::kLow;

@ -416,12 +416,6 @@ struct StructTraits<viz::mojom::TextureQuadStateDataView, viz::DrawQuad> {
return quad->rounded_display_masks_info;
}
static bool premultiplied_alpha(const viz::DrawQuad& input) {
const viz::TextureDrawQuad* quad =
viz::TextureDrawQuad::MaterialCast(&input);
return quad->premultiplied_alpha;
}
static const gfx::PointF& uv_top_left(const viz::DrawQuad& input) {
const viz::TextureDrawQuad* quad =
viz::TextureDrawQuad::MaterialCast(&input);

@ -168,7 +168,7 @@ bool StructTraits<viz::mojom::TransferableResourceDataView,
!data.ReadHdrMetadata(&out->hdr_metadata) ||
!data.ReadYcbcrInfo(&out->ycbcr_info) || !data.ReadId(&id) ||
!data.ReadSynchronizationType(&out->synchronization_type) ||
!data.ReadOrigin(&out->origin) ||
!data.ReadOrigin(&out->origin) || !data.ReadAlphaType(&out->alpha_type) ||
!data.ReadResourceSource(&out->resource_source)) {
return false;
}

@ -14,6 +14,7 @@
#include "gpu/ipc/common/vulkan_ycbcr_info_mojom_traits.h"
#include "services/viz/public/cpp/compositing/shared_image_format_mojom_traits.h"
#include "services/viz/public/mojom/compositing/transferable_resource.mojom-shared.h"
#include "skia/public/mojom/image_info_mojom_traits.h"
#include "skia/public/mojom/surface_origin_mojom_traits.h"
#include "ui/gfx/ipc/color/gfx_param_traits.h"
@ -131,6 +132,10 @@ struct StructTraits<viz::mojom::TransferableResourceDataView,
return resource.origin;
}
static SkAlphaType alpha_type(const viz::TransferableResource& resource) {
return resource.alpha_type;
}
static viz::TransferableResource::ResourceSource resource_source(
const viz::TransferableResource& resource) {
return resource.resource_source;

@ -88,7 +88,6 @@ struct SurfaceQuadState {
struct TextureQuadState {
ResourceId resource_id;
bool premultiplied_alpha;
gfx.mojom.PointF uv_top_left;
gfx.mojom.PointF uv_bottom_right;
skia.mojom.SkColor4f background_color;

@ -12,6 +12,7 @@ import "services/viz/public/mojom/compositing/resource_id.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
import "ui/gfx/mojom/color_space.mojom";
import "ui/gfx/mojom/hdr_metadata.mojom";
import "skia/public/mojom/image_info.mojom";
import "skia/public/mojom/surface_origin.mojom";
// See viz::TransferableResource::SynchronizationType in
@ -70,5 +71,6 @@ struct TransferableResource {
bool needs_detiling;
gpu.mojom.VulkanYCbCrInfo? ycbcr_info;
skia.mojom.SurfaceOrigin origin;
skia.mojom.AlphaType alpha_type;
ResourceSource resource_source;
};