0

[gpu] Fix texture assignment in WrappedGraphiteBacking::InitWithData

Create `texture_holder_` in WrappedGraphiteBacking::InitializeWithData
so that on backing construction failure, the texture will be deleted
as well.

Bug: 383528569
Change-Id: Ic0f621e69766d42a542787f679cdf0ab6c3e1cff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6430128
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Commit-Queue: Saifuddin Hitawala <hitawala@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1442381}
This commit is contained in:
Saifuddin Hitawala
2025-04-03 13:14:39 -07:00
committed by Chromium LUCI CQ
parent e9b24dd1dc
commit 17f16c89cb

@ -85,7 +85,7 @@ class WrappedGraphiteTextureBacking::SkiaGraphiteImageRepresentationImpl
color_space().ToSkColorSpace(), &surface_props, release_proc,
release_context, WrappedTextureDebugLabel(plane));
if (!surface) {
LOG(ERROR) << "MakeGraphiteFromBackendTexture() failed.";
LOG(ERROR) << "BeginWriteAccess() failed.";
write_surfaces_.clear();
return {};
}
@ -221,6 +221,12 @@ bool WrappedGraphiteTextureBacking::InitializeWithData(
return false;
}
// Create `texture_holder_` so that on backing construction failure, the
// texture will be deleted as well.
texture_holders_ = std::vector<scoped_refptr<GraphiteTextureHolder>>{
base::MakeRefCounted<WrappedGraphiteTextureHolder>(
texture, context_state_, created_task_runner_)};
if (format().IsCompressed()) {
if (!recorder()->updateCompressedBackendTexture(texture, pixels.data(),
pixels.size())) {
@ -246,9 +252,6 @@ bool WrappedGraphiteTextureBacking::InitializeWithData(
return false;
}
texture_holders_ = std::vector<scoped_refptr<GraphiteTextureHolder>>{
base::MakeRefCounted<WrappedGraphiteTextureHolder>(
std::move(texture), context_state_, created_task_runner_)};
SetCleared();
return true;
}