Remove gpu_compositing from ToClosestSkColorType
The are few callsites that can pass gpu_compositing = false, they are renambed to ToClosestSkColorTypeDeprecated, so we can work on eliminating them. Hardcoding to N32 was needed only for SharedBitmaps. Bug: 383575394 Change-Id: Idf22d09ece603b54ae2c8a485f21f1390267a354 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6089238 Reviewed-by: Colin Blundell <blundell@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org> Cr-Commit-Position: refs/heads/main@{#1405518}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
00bc426d09
commit
1470c9737d
cc
components/viz
common
resources
service
test
content/renderer/pepper
gpu/command_buffer/service
raster_decoder.cc
shared_image
third_party/blink/renderer
modules
platform
graphics
@ -59,7 +59,8 @@ void RasterBufferProvider::PlaybackToMemory(
|
||||
|
||||
DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format.ToString();
|
||||
|
||||
SkColorType color_type = ToClosestSkColorType(gpu_compositing, format);
|
||||
SkColorType color_type =
|
||||
ToClosestSkColorTypeDeprecated(gpu_compositing, format);
|
||||
|
||||
// Uses kPremul_SkAlphaType since the result is not known to be opaque.
|
||||
SkImageInfo info = SkImageInfo::Make(size.width(), size.height(), color_type,
|
||||
@ -104,8 +105,8 @@ void RasterBufferProvider::PlaybackToMemory(
|
||||
|
||||
TRACE_EVENT0("cc",
|
||||
"RasterBufferProvider::PlaybackToMemory::ConvertRGBA4444");
|
||||
SkImageInfo dst_info =
|
||||
info.makeColorType(ToClosestSkColorType(gpu_compositing, format));
|
||||
SkImageInfo dst_info = info.makeColorType(
|
||||
ToClosestSkColorTypeDeprecated(gpu_compositing, format));
|
||||
auto dst_canvas =
|
||||
SkCanvas::MakeRasterDirect(dst_info, memory, stride, &surface_props);
|
||||
DCHECK(dst_canvas);
|
||||
|
@ -2159,7 +2159,7 @@ TEST_F(PixelInspectTileManagerTest, LowResHasNoImage) {
|
||||
EXPECT_TRUE(tile->draw_info().IsReadyToDraw());
|
||||
|
||||
gfx::Size resource_size = tile->draw_info().resource_size();
|
||||
SkColorType ct = ToClosestSkColorType(
|
||||
SkColorType ct = ToClosestSkColorTypeDeprecated(
|
||||
TestSoftwareRasterBufferProvider::kIsGpuCompositing,
|
||||
TestSoftwareRasterBufferProvider::kSharedImageFormat);
|
||||
auto info = SkImageInfo::Make(resource_size.width(), resource_size.height(),
|
||||
|
@ -248,8 +248,7 @@ class LayerTreeHostImpl::ImageDecodeCacheHolder {
|
||||
size_t decoded_image_working_set_budget_bytes,
|
||||
RasterDarkModeFilter* dark_mode_filter) {
|
||||
if (raster_caps.use_gpu_rasterization) {
|
||||
auto color_type = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, raster_caps.tile_format);
|
||||
auto color_type = viz::ToClosestSkColorType(raster_caps.tile_format);
|
||||
if (enable_shared_image_cache_for_gpu) {
|
||||
image_decode_cache_ptr_ =
|
||||
&worker_context_provider_wrapper->GetGpuImageDecodeCache(
|
||||
@ -263,7 +262,8 @@ class LayerTreeHostImpl::ImageDecodeCacheHolder {
|
||||
}
|
||||
} else {
|
||||
image_decode_cache_ = std::make_unique<SoftwareImageDecodeCache>(
|
||||
viz::ToClosestSkColorType(gpu_compositing, raster_caps.tile_format),
|
||||
viz::ToClosestSkColorTypeDeprecated(gpu_compositing,
|
||||
raster_caps.tile_format),
|
||||
decoded_image_working_set_budget_bytes);
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,8 @@
|
||||
|
||||
namespace viz {
|
||||
|
||||
SkColorType ToClosestSkColorType(bool gpu_compositing,
|
||||
SharedImageFormat format) {
|
||||
SkColorType ToClosestSkColorTypeDeprecated(bool gpu_compositing,
|
||||
SharedImageFormat format) {
|
||||
CHECK(format.is_single_plane());
|
||||
|
||||
if (!gpu_compositing) {
|
||||
@ -28,6 +28,12 @@ SkColorType ToClosestSkColorType(bool gpu_compositing,
|
||||
return kN32_SkColorType;
|
||||
}
|
||||
|
||||
return ToClosestSkColorType(format);
|
||||
}
|
||||
|
||||
SkColorType ToClosestSkColorType(SharedImageFormat format) {
|
||||
CHECK(format.is_single_plane());
|
||||
|
||||
if (format == SinglePlaneFormat::kRGBA_4444) {
|
||||
return kARGB_4444_SkColorType;
|
||||
} else if (format == SinglePlaneFormat::kRGBA_8888) {
|
||||
@ -72,7 +78,7 @@ SkColorType ToClosestSkColorType(bool gpu_compositing,
|
||||
SkColorType ToClosestSkColorType(SharedImageFormat format, int plane_index) {
|
||||
CHECK(format.IsValidPlaneIndex(plane_index));
|
||||
if (format.is_single_plane()) {
|
||||
return ToClosestSkColorType(/*gpu_compositing=*/true, format);
|
||||
return ToClosestSkColorType(format);
|
||||
}
|
||||
|
||||
// No external sampling, format is per plane.
|
||||
|
@ -42,8 +42,14 @@ class TestInProcessContextProvider;
|
||||
// is always RGBA and there is no difference between RGBA/BGRA. Also, these
|
||||
// formats should not be used for software SkImages/SkSurfaces.
|
||||
COMPONENT_EXPORT(VIZ_SHARED_IMAGE_FORMAT)
|
||||
SkColorType ToClosestSkColorType(bool gpu_compositing,
|
||||
SharedImageFormat format);
|
||||
SkColorType ToClosestSkColorType(SharedImageFormat format);
|
||||
|
||||
// Legacy version of the above, allowing to set `gpu_compositing` to false,
|
||||
// which essentially hardcodes N32. This is due to how legacy SharedBitmap
|
||||
// worked.
|
||||
COMPONENT_EXPORT(VIZ_SHARED_IMAGE_FORMAT)
|
||||
SkColorType ToClosestSkColorTypeDeprecated(bool gpu_compositing,
|
||||
SharedImageFormat format);
|
||||
|
||||
// Returns the closest SkColorType for a given `format` that does not prefer
|
||||
// external sampler and `plane_index`. For single planar formats (eg. RGBA) the
|
||||
|
@ -134,7 +134,7 @@ TEST_F(SharedImageFormatUtilsTest, ToClosestSkColorTypeSoftwareRGBX) {
|
||||
SharedImageFormat format = SinglePlaneFormat::kRGBX_8888;
|
||||
ASSERT_EQ(format.NumberOfPlanes(), 1);
|
||||
EXPECT_EQ(kN32_SkColorType,
|
||||
ToClosestSkColorType(/*gpu_compositing=*/false, format));
|
||||
ToClosestSkColorTypeDeprecated(/*gpu_compositing=*/false, format));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -4679,7 +4679,8 @@ TEST_P(RendererPixelTest, TileDrawQuadNearestNeighbor) {
|
||||
constexpr SharedImageFormat format = SinglePlaneFormat::kRGBA_8888;
|
||||
gfx::Rect viewport(this->device_viewport_size_);
|
||||
|
||||
SkColorType ct = ToClosestSkColorType(!is_software_renderer(), format);
|
||||
SkColorType ct =
|
||||
ToClosestSkColorTypeDeprecated(!is_software_renderer(), format);
|
||||
SkImageInfo info = SkImageInfo::Make(2, 2, ct, kPremul_SkAlphaType);
|
||||
SkBitmap bitmap;
|
||||
bitmap.allocPixels(info);
|
||||
|
@ -630,7 +630,7 @@ void SkiaOutputSurfaceImpl::MakePromiseSkImageSinglePlane(
|
||||
SkColorType color_type =
|
||||
format.PrefersExternalSampler()
|
||||
? gpu::ToClosestSkColorTypeExternalSampler(format)
|
||||
: ToClosestSkColorType(/*gpu_compositing=*/true, format);
|
||||
: ToClosestSkColorType(format);
|
||||
|
||||
if (force_rgbx) {
|
||||
if (color_type == SkColorType::kBGRA_8888_SkColorType ||
|
||||
@ -848,8 +848,7 @@ SkCanvas* SkiaOutputSurfaceImpl::BeginPaintRenderPass(
|
||||
CHECK(!current_paint_);
|
||||
CHECK(resource_sync_tokens_.empty());
|
||||
|
||||
SkColorType color_type =
|
||||
ToClosestSkColorType(/*gpu_compositing=*/true, format);
|
||||
SkColorType color_type = ToClosestSkColorType(format);
|
||||
if (graphite_recorder_) {
|
||||
SkImageInfo image_info =
|
||||
SkImageInfo::Make(gfx::SizeToSkISize(surface_size), color_type,
|
||||
|
@ -130,8 +130,7 @@ void FakeSkiaOutputSurface::MakePromiseSkImage(
|
||||
return;
|
||||
}
|
||||
|
||||
auto sk_color_type =
|
||||
ToClosestSkColorType(true /* gpu_compositing */, image_context->format());
|
||||
auto sk_color_type = ToClosestSkColorType(image_context->format());
|
||||
image_context->SetImage(
|
||||
SkImages::BorrowTextureFrom(gr_context(), backend_texture,
|
||||
kTopLeft_GrSurfaceOrigin, sk_color_type,
|
||||
@ -176,8 +175,7 @@ SkCanvas* FakeSkiaOutputSurface::BeginPaintRenderPass(
|
||||
auto& sk_surface = sk_surfaces_[id];
|
||||
|
||||
if (!sk_surface) {
|
||||
SkColorType color_type =
|
||||
ToClosestSkColorType(true /* gpu_compositing */, format);
|
||||
SkColorType color_type = ToClosestSkColorType(format);
|
||||
SkImageInfo image_info = SkImageInfo::Make(
|
||||
surface_size.width(), surface_size.height(), color_type,
|
||||
kPremul_SkAlphaType, std::move(color_space));
|
||||
|
@ -721,9 +721,9 @@ bool PepperGraphics2DHost::PrepareTransferableResource(
|
||||
src = swizzled.get();
|
||||
}
|
||||
|
||||
SkImageInfo src_info = SkImageInfo::Make(
|
||||
size.width(), size.height(), viz::ToClosestSkColorType(true, format),
|
||||
kUnknown_SkAlphaType);
|
||||
SkImageInfo src_info = SkImageInfo::Make(size.width(), size.height(),
|
||||
viz::ToClosestSkColorType(format),
|
||||
kUnknown_SkAlphaType);
|
||||
ri->WaitSyncTokenCHROMIUM(in_sync_token.GetConstData());
|
||||
|
||||
uint32_t texture_target = shared_image->GetTextureTarget();
|
||||
|
@ -1986,7 +1986,7 @@ void RasterDecoderImpl::DoWritePixelsINTERNAL(GLint x_offset,
|
||||
}
|
||||
|
||||
viz::SharedImageFormat dest_format = dest_shared_image->format();
|
||||
if (SkColorTypeBytesPerPixel(viz::ToClosestSkColorType(true, dest_format)) !=
|
||||
if (SkColorTypeBytesPerPixel(viz::ToClosestSkColorType(dest_format)) !=
|
||||
SkColorTypeBytesPerPixel(static_cast<SkColorType>(src_sk_color_type))) {
|
||||
LOCAL_SET_GL_ERROR(GL_INVALID_OPERATION, "glWritePixels",
|
||||
"Bytes per pixel for src SkColorType and dst "
|
||||
@ -2861,8 +2861,7 @@ void RasterDecoderImpl::DoBeginRasterCHROMIUM(GLfloat r,
|
||||
DCHECK(locked_handles_.empty());
|
||||
DCHECK(!raster_canvas_);
|
||||
|
||||
SkColorType sk_color_type = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, shared_image->format());
|
||||
SkColorType sk_color_type = viz::ToClosestSkColorType(shared_image->format());
|
||||
|
||||
int final_msaa_count;
|
||||
uint32_t flags;
|
||||
|
@ -309,9 +309,8 @@ TEST_P(AHardwareBufferImageBackingFactoryTest, InitialData) {
|
||||
SkAlphaType alpha_type = kPremul_SkAlphaType;
|
||||
gpu::SharedImageUsageSet usage = SHARED_IMAGE_USAGE_DISPLAY_READ;
|
||||
|
||||
auto image_info =
|
||||
SkImageInfo::Make(gfx::SizeToSkISize(size),
|
||||
viz::ToClosestSkColorType(true, format), alpha_type);
|
||||
auto image_info = SkImageInfo::Make(
|
||||
gfx::SizeToSkISize(size), viz::ToClosestSkColorType(format), alpha_type);
|
||||
SkBitmap expected_bitmap;
|
||||
expected_bitmap.allocPixels(image_info);
|
||||
|
||||
|
@ -385,8 +385,7 @@ sk_sp<SkSurface> DCompSurfaceImageBacking::BeginDrawGanesh(
|
||||
GrGLFramebufferInfo framebuffer_info = {0};
|
||||
DCHECK_EQ(gl_surface_->GetBackingFramebufferObject(), 0u);
|
||||
|
||||
SkColorType color_type = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, format());
|
||||
SkColorType color_type = viz::ToClosestSkColorType(format());
|
||||
switch (color_type) {
|
||||
case kRGBA_8888_SkColorType:
|
||||
framebuffer_info.fFormat = GL_RGBA8;
|
||||
|
@ -190,8 +190,7 @@ bool RawDrawImageBacking::CreateBackendTextureAndFlushPaintOps(bool flush) {
|
||||
if (context_state_->context_lost())
|
||||
return false;
|
||||
|
||||
auto sk_color = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, format());
|
||||
auto sk_color = viz::ToClosestSkColorType(format());
|
||||
const std::string label =
|
||||
"RawDrawImageBacking" + CreateLabelForSharedImageUsage(usage());
|
||||
GrDirectContext* direct_context = context_state_->gr_context();
|
||||
|
@ -413,10 +413,9 @@ SkiaGaneshImageRepresentation::ScopedGaneshReadAccess::CreateSkImage(
|
||||
if (format.is_single_plane() || format.PrefersExternalSampler()) {
|
||||
DCHECK_EQ(static_cast<int>(promise_image_textures_.size()), 1);
|
||||
auto alpha_type = representation()->alpha_type();
|
||||
auto color_type =
|
||||
format.PrefersExternalSampler()
|
||||
? ToClosestSkColorTypeExternalSampler(format)
|
||||
: viz::ToClosestSkColorType(/*gpu_compositing=*/true, format);
|
||||
auto color_type = format.PrefersExternalSampler()
|
||||
? ToClosestSkColorTypeExternalSampler(format)
|
||||
: viz::ToClosestSkColorType(format);
|
||||
return SkImages::BorrowTextureFrom(
|
||||
context_state->gr_context(), promise_image_texture()->backendTexture(),
|
||||
surface_origin, color_type, alpha_type, sk_color_space,
|
||||
@ -659,10 +658,9 @@ SkiaGraphiteImageRepresentation::ScopedGraphiteReadAccess::CreateSkImage(
|
||||
if (format.is_single_plane() || format.PrefersExternalSampler()) {
|
||||
CHECK_EQ(static_cast<int>(graphite_textures_.size()), 1);
|
||||
auto alpha_type = representation()->alpha_type();
|
||||
auto color_type =
|
||||
format.PrefersExternalSampler()
|
||||
? ToClosestSkColorTypeExternalSampler(format)
|
||||
: viz::ToClosestSkColorType(/*gpu_compositing=*/true, format);
|
||||
auto color_type = format.PrefersExternalSampler()
|
||||
? ToClosestSkColorTypeExternalSampler(format)
|
||||
: viz::ToClosestSkColorType(format);
|
||||
auto origin = representation()->surface_origin() == kTopLeft_GrSurfaceOrigin
|
||||
? skgpu::Origin::kTopLeft
|
||||
: skgpu::Origin::kBottomLeft;
|
||||
|
@ -85,8 +85,7 @@ SkiaVkAndroidImageRepresentation::BeginWriteAccess(
|
||||
|
||||
if (!surface_ || final_msaa_count != surface_msaa_count_ ||
|
||||
surface_props != surface_->props()) {
|
||||
SkColorType sk_color_type = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, format());
|
||||
SkColorType sk_color_type = viz::ToClosestSkColorType(format());
|
||||
surface_ = SkSurfaces::WrapBackendTexture(
|
||||
gr_context, promise_texture_->backendTexture(), surface_origin(),
|
||||
final_msaa_count, sk_color_type, color_space().ToSkColorSpace(),
|
||||
|
@ -4001,7 +4001,7 @@ GPUTexture* BaseRenderingContext2D::transferToGPUTexture(
|
||||
}
|
||||
|
||||
wgpu::TextureFormat dawn_format =
|
||||
AsDawnType(viz::ToClosestSkColorType(true, client_si->format()));
|
||||
AsDawnType(viz::ToClosestSkColorType(client_si->format()));
|
||||
wgpu::TextureDescriptor desc = {
|
||||
.usage = tex_usage,
|
||||
.size = {base::checked_cast<uint32_t>(client_si->size().width()),
|
||||
|
@ -115,8 +115,7 @@ SkColorType GPUCanvasContext::GetSkColorType() const {
|
||||
if (!swap_buffers_) {
|
||||
return kN32_SkColorType;
|
||||
}
|
||||
return viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, swap_buffers_->Format());
|
||||
return viz::ToClosestSkColorType(swap_buffers_->Format());
|
||||
}
|
||||
|
||||
sk_sp<SkColorSpace> GPUCanvasContext::GetSkColorSpace() const {
|
||||
@ -311,8 +310,7 @@ ImageBitmap* GPUCanvasContext::TransferToImageBitmap(
|
||||
}
|
||||
DCHECK(release_callback);
|
||||
|
||||
auto sk_color_type = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, client_si->format());
|
||||
auto sk_color_type = viz::ToClosestSkColorType(client_si->format());
|
||||
|
||||
const SkImageInfo sk_image_info = SkImageInfo::Make(
|
||||
texture_descriptor_.size.width, texture_descriptor_.size.height,
|
||||
|
@ -236,10 +236,9 @@ bool CanvasResource::PrepareTransferableResource(
|
||||
}
|
||||
|
||||
SkImageInfo CanvasResource::CreateSkImageInfo() const {
|
||||
return SkImageInfo::Make(
|
||||
SkISize::Make(size_.width(), size_.height()),
|
||||
viz::ToClosestSkColorType(/*gpu_compositing=*/true, format_), alpha_type_,
|
||||
color_space_.ToSkColorSpace());
|
||||
return SkImageInfo::Make(SkISize::Make(size_.width(), size_.height()),
|
||||
viz::ToClosestSkColorType(format_), alpha_type_,
|
||||
color_space_.ToSkColorSpace());
|
||||
}
|
||||
|
||||
// CanvasResourceSharedBitmap
|
||||
|
@ -748,8 +748,7 @@ scoped_refptr<StaticBitmapImage> DrawingBuffer::TransferToStaticBitmapImage() {
|
||||
DCHECK_EQ(size_.width(), shared_image->size().width());
|
||||
DCHECK_EQ(size_.height(), shared_image->size().height());
|
||||
|
||||
auto sk_color_type = viz::ToClosestSkColorType(
|
||||
/*gpu_compositing=*/true, shared_image->format());
|
||||
auto sk_color_type = viz::ToClosestSkColorType(shared_image->format());
|
||||
|
||||
const SkImageInfo sk_image_info = SkImageInfo::Make(
|
||||
size_.width(), size_.height(), sk_color_type, kPremul_SkAlphaType);
|
||||
|
Reference in New Issue
Block a user