@@ -1694,13 +1694,14 @@ ID3D12Resource *D3D12Replay::CreateInputFetchBuffer(DXDebug::InputFetcher &fetch
16941694 rdesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
16951695 rdesc.Width = fetcher.hitBufferStride * (DXDebug::maxPixelHits + 1 );
16961696
1697+ const uint32_t countLaneElements =
1698+ (fetcher.laneDataBufferStride > 0 ) ? fetcher.numLanesPerHit * (DXDebug::maxPixelHits + 1 ) : 0 ;
16971699 // if we have separate lane data, allocate that at the end
16981700 if (fetcher.laneDataBufferStride > 0 )
16991701 {
17001702 rdesc.Width = AlignToMultiple (rdesc.Width , (uint64_t )fetcher.laneDataBufferStride );
17011703 laneDataOffset = rdesc.Width ;
1702- rdesc.Width +=
1703- (fetcher.laneDataBufferStride * fetcher.numLanesPerHit ) * (DXDebug::maxPixelHits + 1 );
1704+ rdesc.Width += fetcher.laneDataBufferStride * countLaneElements;
17041705 }
17051706
17061707 // Create storage for MSAA evaluations captured in pixel shader
@@ -1756,7 +1757,7 @@ ID3D12Resource *D3D12Replay::CreateInputFetchBuffer(DXDebug::InputFetcher &fetch
17561757 uavDesc.ViewDimension = D3D12_UAV_DIMENSION_BUFFER;
17571758 uavDesc.Buffer .FirstElement = laneDataOffset / fetcher.laneDataBufferStride ;
17581759 uavDesc.Buffer .StructureByteStride = fetcher.laneDataBufferStride ;
1759- uavDesc.Buffer .NumElements = DXDebug::maxPixelHits + 1 ;
1760+ uavDesc.Buffer .NumElements = countLaneElements ;
17601761
17611762 uav = m_pDevice->GetDebugManager ()->GetCPUHandle (SHADER_DEBUG_LANEDATA_UAV);
17621763 m_pDevice->CreateUnorderedAccessView (dataBuffer, NULL , &uavDesc, uav);
0 commit comments