diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-11-20 05:26:49 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-11-20 05:26:49 +0000 |
| commit | 5ea80a116bc5ff82d8ef10243f7fba103a4d0961 (patch) | |
| tree | cb5dc3fc3345ce6a77ba066539d571e5fde9a8e9 /Graphics/GraphicsEngineD3D12 | |
| parent | Added explicit resource state transitions to the API; implemented in D3D12 (diff) | |
| download | DiligentCore-5ea80a116bc5ff82d8ef10243f7fba103a4d0961.tar.gz DiligentCore-5ea80a116bc5ff82d8ef10243f7fba103a4d0961.zip | |
Implemented explicit layout transitions in Vulkan backend
Diffstat (limited to 'Graphics/GraphicsEngineD3D12')
| -rw-r--r-- | Graphics/GraphicsEngineD3D12/src/CommandContext.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp b/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp index 3d15b739..f6c1e281 100644 --- a/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp +++ b/Graphics/GraphicsEngineD3D12/src/CommandContext.cpp @@ -278,27 +278,27 @@ void CommandContext::TransitionResource(const StateTransitionDesc& Barrier) { DEV_CHECK_ERR(Barrier.FirstMipLevel < TexDesc.MipLevels, "First mip level (", Barrier.FirstMipLevel, ") specified by the barrier is " "out of range. Texture \'", TexDesc.Name, "\' has only ", TexDesc.MipLevels, " mip level(s)"); - DEV_CHECK_ERR(Barrier.MipLevelsCount == StateTransitionDesc::AllMipLevels || Barrier.FirstMipLevel + Barrier.MipLevelsCount < TexDesc.MipLevels, + DEV_CHECK_ERR(Barrier.MipLevelsCount == StateTransitionDesc::RemainingMipLevels || Barrier.FirstMipLevel + Barrier.MipLevelsCount < TexDesc.MipLevels, "Mip level range ", Barrier.FirstMipLevel, "..", Barrier.FirstMipLevel+Barrier.MipLevelsCount-1, " " "specified by the barrier is out of range. Texture \'", TexDesc.Name, "\' has only ", TexDesc.MipLevels, " mip level(s)"); DEV_CHECK_ERR(Barrier.FirstArraySlice < TexDesc.ArraySize, "First array slice (", Barrier.FirstArraySlice, ") specified by the barrier is " "out of range. Array size of texture \'", TexDesc.Name, "\' is ", TexDesc.ArraySize); - DEV_CHECK_ERR(Barrier.ArraySliceCount == StateTransitionDesc::AllArraySlices || Barrier.FirstArraySlice + Barrier.ArraySliceCount < TexDesc.ArraySize, + DEV_CHECK_ERR(Barrier.ArraySliceCount == StateTransitionDesc::RemainingArraySlices || Barrier.FirstArraySlice + Barrier.ArraySliceCount < TexDesc.ArraySize, "Array slice range ", Barrier.FirstArraySlice, "..", Barrier.FirstArraySlice+Barrier.ArraySliceCount-1, " " "specified by the barrier is out of range. Array size of texture \'", TexDesc.Name, "\' is ", TexDesc.ArraySize); } #endif - if (Barrier.FirstMipLevel == 0 && (Barrier.MipLevelsCount == StateTransitionDesc::AllMipLevels || Barrier.MipLevelsCount == TexDesc.MipLevels) && - Barrier.FirstArraySlice == 0 && (Barrier.ArraySliceCount == StateTransitionDesc::AllArraySlices || Barrier.ArraySliceCount == TexDesc.ArraySize)) + if (Barrier.FirstMipLevel == 0 && (Barrier.MipLevelsCount == StateTransitionDesc::RemainingMipLevels || Barrier.MipLevelsCount == TexDesc.MipLevels) && + Barrier.FirstArraySlice == 0 && (Barrier.ArraySliceCount == StateTransitionDesc::RemainingArraySlices || Barrier.ArraySliceCount == TexDesc.ArraySize)) { BarrierDesc.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; m_PendingResourceBarriers.emplace_back(BarrierDesc); } else { - Uint32 EndMip = Barrier.MipLevelsCount == StateTransitionDesc::AllMipLevels ? TexDesc.MipLevels : Barrier.FirstMipLevel + Barrier.MipLevelsCount; - Uint32 EndSlice = Barrier.ArraySliceCount == StateTransitionDesc::AllArraySlices ? TexDesc.ArraySize : Barrier.FirstArraySlice + Barrier.ArraySliceCount; + Uint32 EndMip = Barrier.MipLevelsCount == StateTransitionDesc::RemainingMipLevels ? TexDesc.MipLevels : Barrier.FirstMipLevel + Barrier.MipLevelsCount; + Uint32 EndSlice = Barrier.ArraySliceCount == StateTransitionDesc::RemainingArraySlices ? TexDesc.ArraySize : Barrier.FirstArraySlice + Barrier.ArraySliceCount; for(Uint32 mip = Barrier.FirstMipLevel; mip < EndMip; ++mip) { for(Uint32 slice = Barrier.FirstArraySlice; slice < EndSlice; ++slice) |
