Fix crash when updating GPU texture residency to 0

This commit is contained in:
Wojtek Figat
2023-04-26 14:59:36 +02:00
parent 5b50562a9f
commit cf6b9b7ab5
2 changed files with 5 additions and 3 deletions

View File

@@ -133,8 +133,9 @@ void GPUTextureDX11::OnResidentMipsChanged()
srDesc.Texture2D.MostDetailedMip = firstMipIndex;
srDesc.Texture2D.MipLevels = mipLevels;
}
ID3D11ShaderResourceView* srView;
VALIDATE_DIRECTX_RESULT(_device->GetDevice()->CreateShaderResourceView(_resource, &srDesc, &srView));
ID3D11ShaderResourceView* srView = nullptr;
if (mipLevels != 0)
VALIDATE_DIRECTX_RESULT(_device->GetDevice()->CreateShaderResourceView(_resource, &srDesc, &srView));
GPUTextureViewDX11& view = IsVolume() ? _handleVolume : _handlesPerSlice[0];
if (view.GetParent() == nullptr)
view.Init(this, nullptr, srView, nullptr, nullptr, Format(), MultiSampleLevel());

View File

@@ -240,7 +240,8 @@ void GPUTextureDX12::OnResidentMipsChanged()
GPUTextureViewDX12& view = IsVolume() ? _handleVolume : _handlesPerSlice[0];
if (view.GetParent() == nullptr)
view.Init(this, _device, this, Format(), MultiSampleLevel());
view.SetSRV(srDesc);
if (mipLevels != 0)
view.SetSRV(srDesc);
}
void GPUTextureDX12::OnReleaseGPU()