Skip to content

Commit

Permalink
D3D12 Mips Generator: fixed issue with state transitions (close #599)
Browse files Browse the repository at this point in the history
  • Loading branch information
TheMostDiligent committed Aug 8, 2024
1 parent 88c3cb6 commit 9e884e6
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions Graphics/GraphicsEngineD3D12/src/GenerateMips.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2019-2022 Diligent Graphics LLC
* Copyright 2019-2024 Diligent Graphics LLC
* Copyright 2015-2019 Egor Yusov
*
* Licensed under the Apache License, Version 2.0 (the "License");
Expand Down Expand Up @@ -229,23 +229,23 @@ void GenerateMipsHelper::GenerateMips(ID3D12Device* pd3d12Device, TextureViewD3D

// Transition top mip level to the shader resource state
StateTransitionDesc SrcMipBarrier{pTexD3D12, TopMip == 0 ? OriginalState : RESOURCE_STATE_UNORDERED_ACCESS, RESOURCE_STATE_SHADER_RESOURCE, STATE_TRANSITION_FLAG_NONE};
SrcMipBarrier.FirstMipLevel = ViewDesc.MostDetailedMip + TopMip;
SrcMipBarrier.MipLevelsCount = 1;
SrcMipBarrier.FirstArraySlice = ViewDesc.FirstArraySlice;
SrcMipBarrier.ArraySliceCount = ViewDesc.NumArraySlices;
if (SrcMipBarrier.OldState != SrcMipBarrier.NewState)
{
SrcMipBarrier.FirstMipLevel = ViewDesc.MostDetailedMip + TopMip;
SrcMipBarrier.MipLevelsCount = 1;
SrcMipBarrier.FirstArraySlice = ViewDesc.FirstArraySlice;
SrcMipBarrier.ArraySliceCount = ViewDesc.NumArraySlices;
Ctx.TransitionResource(*pTexD3D12, SrcMipBarrier);
}

// Transition dst mip levels to UAV state
StateTransitionDesc DstMipsBarrier{pTexD3D12, OriginalState, RESOURCE_STATE_UNORDERED_ACCESS, STATE_TRANSITION_FLAG_NONE};
DstMipsBarrier.FirstMipLevel = ViewDesc.MostDetailedMip + TopMip + 1;
DstMipsBarrier.MipLevelsCount = NumMips;
DstMipsBarrier.FirstArraySlice = ViewDesc.FirstArraySlice;
DstMipsBarrier.ArraySliceCount = ViewDesc.NumArraySlices;
if (DstMipsBarrier.OldState != DstMipsBarrier.NewState)
{
DstMipsBarrier.FirstMipLevel = ViewDesc.MostDetailedMip + TopMip + 1;
DstMipsBarrier.MipLevelsCount = NumMips;
DstMipsBarrier.FirstArraySlice = ViewDesc.FirstArraySlice;
DstMipsBarrier.ArraySliceCount = ViewDesc.NumArraySlices;
Ctx.TransitionResource(*pTexD3D12, DstMipsBarrier);
}

Expand Down

0 comments on commit 9e884e6

Please sign in to comment.