From b5f821bf4fd68742d179faea67b09bd513d7ae48 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Fri, 7 Aug 2026 20:33:59 +1000 Subject: [PATCH] D3D12Device: Transition all uploaded subresources Use an all-subresource barrier after initial uploads so tracked state matches every texture slice and mip level. --- src/util/d3d12_texture.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/util/d3d12_texture.cpp b/src/util/d3d12_texture.cpp index ec00c7466..5d6617a3e 100644 --- a/src/util/d3d12_texture.cpp +++ b/src/util/d3d12_texture.cpp @@ -68,7 +68,7 @@ std::unique_ptr D3D12Device::CreateTexture(u32 width, u32 height, u3 case GPUTexture::Type::Texture: { desc.Flags = D3D12_RESOURCE_FLAG_NONE; - state = D3D12_RESOURCE_STATE_COPY_DEST; + state = data ? D3D12_RESOURCE_STATE_COPY_DEST : D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE; } break; @@ -182,9 +182,7 @@ std::unique_ptr D3D12Device::CreateTexture(u32 width, u32 height, u3 if (type == GPUTexture::Type::Texture) { // resource barrier must be in the same command buffer as the upload - tex->TransitionSubresourceToState(GetInitCommandList(), 0u, 0u, D3D12_RESOURCE_STATE_COPY_DEST, - D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE); - tex->m_resource_state = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE; + tex->TransitionToState(GetInitCommandList(), D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE); } }