Revert "Bug 1988114. r=ahale a=dmeehan" for causing build failues

This reverts commit 35523c86dc.
This commit is contained in:
DonalMe
2025-09-25 09:38:32 -04:00
committed by dmeehan@mozilla.com
parent a76aca3306
commit 713f5caf2d
2 changed files with 10 additions and 39 deletions

View File

@@ -526,9 +526,6 @@ bool CanvasTranslator::TryDrawTargetWebglFallback(
NotifyRequiresRefresh(aTextureOwnerId);
const auto& info = mTextureInfo[aTextureOwnerId];
if (info.mTextureData) {
return true;
}
if (RefPtr<gfx::DrawTarget> dt =
CreateFallbackDrawTarget(info.mRefPtr, aTextureOwnerId,
aWebgl->GetSize(), aWebgl->GetFormat())) {
@@ -929,9 +926,6 @@ void CanvasTranslator::DeviceResetAcknowledged() { DeviceChangeAcknowledged(); }
bool CanvasTranslator::CreateReferenceTexture() {
if (mReferenceTextureData) {
if (mBaseDT) {
mReferenceTextureData->ReturnDrawTarget(mBaseDT.forget());
}
mReferenceTextureData->Unlock();
}
@@ -1103,12 +1097,14 @@ void CanvasTranslator::PrepareShmem(
const RemoteTextureOwnerId aTextureOwnerId) {
if (gfx::DrawTargetWebgl* webgl =
GetDrawTargetWebgl(aTextureOwnerId, false)) {
if (RefPtr<gfx::DrawTarget> dt =
mTextureInfo[aTextureOwnerId].mFallbackDrawTarget) {
if (const auto& fallback = mTextureInfo[aTextureOwnerId].mTextureData) {
// If there was a fallback, copy the fallback to the software framebuffer
// shmem for reading.
if (RefPtr<gfx::SourceSurface> snapshot = dt->Snapshot()) {
webgl->CopySurface(snapshot, snapshot->GetRect(), gfx::IntPoint(0, 0));
if (RefPtr<gfx::DrawTarget> dt = fallback->BorrowDrawTarget()) {
if (RefPtr<gfx::SourceSurface> snapshot = dt->Snapshot()) {
webgl->CopySurface(snapshot, snapshot->GetRect(),
gfx::IntPoint(0, 0));
}
}
} else {
// Otherwise, just ensure the software framebuffer is up to date.
@@ -1211,7 +1207,6 @@ already_AddRefed<gfx::DrawTarget> CanvasTranslator::CreateFallbackDrawTarget(
TextureInfo& info = mTextureInfo[aTextureOwnerId];
info.mRefPtr = aRefPtr;
info.mFallbackDrawTarget = dt;
info.mTextureData = std::move(textureData);
info.mTextureLockMode = kInitMode;
} while (!dt && CheckForFreshCanvasDevice(__LINE__));
@@ -1228,19 +1223,6 @@ already_AddRefed<gfx::DrawTarget> CanvasTranslator::CreateDrawTarget(
return nullptr;
}
{
auto result = mTextureInfo.find(aTextureOwnerId);
if (result != mTextureInfo.end()) {
const TextureInfo& info = result->second;
if (info.mTextureData || info.mDrawTarget) {
#ifndef FUZZING_SNAPSHOT
MOZ_DIAGNOSTIC_CRASH("DrawTarget already exists");
#endif
return nullptr;
}
}
}
RefPtr<gfx::DrawTarget> dt;
if (gfx::gfxVars::UseAcceleratedCanvas2D()) {
if (EnsureSharedContextWebgl()) {
@@ -1305,11 +1287,7 @@ void CanvasTranslator::RemoveTexture(const RemoteTextureOwnerId aTextureOwnerId,
if (--info.mLocked > 0) {
return;
}
RemoveDrawTarget(info.mRefPtr);
if (info.mTextureData) {
if (info.mFallbackDrawTarget) {
info.mTextureData->ReturnDrawTarget(info.mFallbackDrawTarget.forget());
}
info.mTextureData->Unlock();
}
if (mRemoteTextureOwner) {
@@ -1477,13 +1455,9 @@ void CanvasTranslator::ClearTextureInfo() {
mUsedWrapperForSurfaceDescriptor = nullptr;
mUsedSurfaceDescriptorForSurfaceDescriptor = Nothing();
for (auto& entry : mTextureInfo) {
auto& info = entry.second;
if (info.mTextureData) {
if (info.mFallbackDrawTarget) {
info.mTextureData->ReturnDrawTarget(info.mFallbackDrawTarget.forget());
}
info.mTextureData->Unlock();
for (auto const& entry : mTextureInfo) {
if (entry.second.mTextureData) {
entry.second.mTextureData->Unlock();
}
}
mTextureInfo.clear();
@@ -1496,10 +1470,8 @@ void CanvasTranslator::ClearTextureInfo() {
if (sSharedContext && sSharedContext->hasOneRef()) {
sSharedContext->ClearCaches();
}
mBaseDT = nullptr;
if (mReferenceTextureData) {
if (mBaseDT) {
mReferenceTextureData->ReturnDrawTarget(mBaseDT.forget());
}
mReferenceTextureData->Unlock();
}
if (mRemoteTextureOwner) {

View File

@@ -560,7 +560,6 @@ class CanvasTranslator final : public gfx::InlineTranslator,
gfx::ReferencePtr mRefPtr;
UniquePtr<TextureData> mTextureData;
RefPtr<gfx::DrawTarget> mDrawTarget;
RefPtr<gfx::DrawTarget> mFallbackDrawTarget;
bool mNotifiedRequiresRefresh = false;
// Ref-count of how active uses of the DT. Avoids deletion when locked.
int32_t mLocked = 1;