@@ -43,14 +43,14 @@ bool VerifySparseBufferCompatibility(IRenderDevice* pDevice)
4343{
4444 VERIFY_EXPR (pDevice != nullptr );
4545
46- const auto & DeviceInfo = pDevice->GetDeviceInfo ().Features ;
47- if (!DeviceInfo .SparseResources )
46+ const DeviceFeatures& Features = pDevice->GetDeviceInfo ().Features ;
47+ if (!Features .SparseResources )
4848 {
4949 LOG_WARNING_MESSAGE (" SparseResources device feature is not enabled." );
5050 return false ;
5151 }
5252
53- const auto & SparseRes = pDevice->GetAdapterInfo ().SparseResources ;
53+ const SparseResourceProperties & SparseRes = pDevice->GetAdapterInfo ().SparseResources ;
5454 if ((SparseRes.CapFlags & SPARSE_RESOURCE_CAP_FLAG_BUFFER) == 0 )
5555 {
5656 LOG_WARNING_MESSAGE (" This device does not support sparse buffers." );
@@ -67,7 +67,7 @@ DynamicBuffer::DynamicBuffer(IRenderDevice* pDevice,
6767 m_Name{CI.Desc .Name != nullptr ? CI.Desc .Name : " Dynamic buffer" },
6868 m_Desc{CI.Desc },
6969 m_VirtualSize{CI.Desc .Usage == USAGE_SPARSE ? CI.VirtualSize : 0 },
70- m_MemoryPageSize{CI.MemoryPageSize }
70+ m_MemoryPageSize{AlignUp ( CI.MemoryPageSize , 65536u ) }
7171{
7272 DEV_CHECK_ERR (CI.Desc .Usage != USAGE_SPARSE || CI.VirtualSize > 0 , " Virtual size must not be 0 for sparse buffers" );
7373
@@ -93,16 +93,16 @@ void DynamicBuffer::CreateSparseBuffer(IRenderDevice* pDevice)
9393 return ;
9494 }
9595
96- const auto & SparseResources = pDevice->GetAdapterInfo ().SparseResources ;
97- const auto SparseMemBlockSize = SparseResources.StandardBlockSize ;
96+ const SparseResourceProperties & SparseResources = pDevice->GetAdapterInfo ().SparseResources ;
97+ const Uint32 SparseMemBlockSize = SparseResources.StandardBlockSize ;
9898
9999 m_MemoryPageSize = std::max (AlignUpNonPw2 (m_MemoryPageSize, SparseMemBlockSize), SparseMemBlockSize);
100100
101101 {
102- auto Desc = m_Desc;
102+ BufferDesc Desc = m_Desc;
103103
104- Desc.Size = AlignUpNonPw2 (m_VirtualSize, m_MemoryPageSize);
105- auto MaxSize = AlignDownNonPw2 (SparseResources.ResourceSpaceSize , m_MemoryPageSize);
104+ Desc.Size = AlignUpNonPw2 (m_VirtualSize, m_MemoryPageSize);
105+ Uint64 MaxSize = AlignDownNonPw2 (SparseResources.ResourceSpaceSize , m_MemoryPageSize);
106106 if (m_Desc.BindFlags & (BIND_SHADER_RESOURCE | BIND_UNORDERED_ACCESS))
107107 {
108108 VERIFY_EXPR (m_Desc.ElementByteStride != 0 );
@@ -163,8 +163,8 @@ void DynamicBuffer::InitBuffer(IRenderDevice* pDevice)
163163 // NB: m_Desc.Usage may be changed by CreateSparseBuffer()
164164 if (m_Desc.Usage == USAGE_DEFAULT && m_PendingSize > 0 )
165165 {
166- auto Desc = m_Desc;
167- Desc.Size = m_PendingSize;
166+ BufferDesc Desc = m_Desc;
167+ Desc.Size = m_PendingSize;
168168 pDevice->CreateBuffer (Desc, nullptr , &m_pBuffer);
169169 if (m_Desc.Size == 0 )
170170 {
@@ -190,12 +190,12 @@ void DynamicBuffer::ResizeSparseBuffer(IDeviceContext* pContext)
190190 SparseBufferMemoryBindInfo BufferBindInfo;
191191 BufferBindInfo.pBuffer = m_pBuffer;
192192
193- auto StartOffset = m_Desc.Size ;
194- auto EndOffset = m_PendingSize;
193+ Uint64 StartOffset = m_Desc.Size ;
194+ Uint64 EndOffset = m_PendingSize;
195195 if (StartOffset > EndOffset)
196196 std::swap (StartOffset, EndOffset);
197197 VERIFY_EXPR ((EndOffset - StartOffset) % m_MemoryPageSize == 0 );
198- const auto NumPages = StaticCast<Uint32>((EndOffset - StartOffset) / m_MemoryPageSize);
198+ const Uint32 NumPages = StaticCast<Uint32>((EndOffset - StartOffset) / m_MemoryPageSize);
199199
200200 std::vector<SparseBufferMemoryBindRange> Ranges;
201201 Ranges.reserve (NumPages);
@@ -254,7 +254,7 @@ void DynamicBuffer::ResizeDefaultBuffer(IDeviceContext* pContext)
254254 return ;
255255
256256 VERIFY_EXPR (m_pBuffer);
257- auto CopySize = std::min (m_pBuffer->GetDesc ().Size , m_pStaleBuffer->GetDesc ().Size );
257+ Uint64 CopySize = std::min (m_pBuffer->GetDesc ().Size , m_pStaleBuffer->GetDesc ().Size );
258258 pContext->CopyBuffer (m_pStaleBuffer, 0 , RESOURCE_STATE_TRANSITION_MODE_TRANSITION,
259259 m_pBuffer, 0 , CopySize, RESOURCE_STATE_TRANSITION_MODE_TRANSITION);
260260 m_pStaleBuffer.Release ();
0 commit comments