diff options
| author | Yong He <yonghe@outlook.com> | 2022-09-19 17:08:25 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-19 17:08:25 -0700 |
| commit | 8e44968be297c0fa0ab00510a5e5922630d8c401 (patch) | |
| tree | beaa533082ab8d404dfa9f6a706d1be17997b833 /tools | |
| parent | 53db0e9e126cb26ffb505e1bf02cc64f00cc9855 (diff) | |
Fix d3d12 implementation of `uploadBufferData`. (#2402)
* Fix d3d12 implementation of `uploadBufferData`.
* Add ICommandBufferD3D12::ensureInternalDescriptorHeapsBound().
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/gfx/d3d12/d3d12-command-buffer.h | 1 | ||||
| -rw-r--r-- | tools/gfx/d3d12/d3d12-helper-functions.cpp | 13 |
2 files changed, 9 insertions, 5 deletions
diff --git a/tools/gfx/d3d12/d3d12-command-buffer.h b/tools/gfx/d3d12/d3d12-command-buffer.h index dbe019807..0b24764c1 100644 --- a/tools/gfx/d3d12/d3d12-command-buffer.h +++ b/tools/gfx/d3d12/d3d12-command-buffer.h @@ -49,6 +49,7 @@ public: void bindDescriptorHeaps(); virtual SLANG_NO_THROW void SLANG_MCALL invalidateDescriptorHeapBinding() override { m_descriptorHeapsBound = false; } + virtual SLANG_NO_THROW void SLANG_MCALL ensureInternalDescriptorHeapsBound() override { bindDescriptorHeaps(); } void reinit(); diff --git a/tools/gfx/d3d12/d3d12-helper-functions.cpp b/tools/gfx/d3d12/d3d12-helper-functions.cpp index 76e80b017..ee937ed4a 100644 --- a/tools/gfx/d3d12/d3d12-helper-functions.cpp +++ b/tools/gfx/d3d12/d3d12-helper-functions.cpp @@ -408,7 +408,10 @@ Result uploadBufferDataImpl( SLANG_RETURN_ON_FAIL(transientHeap->allocateStagingBuffer( size, uploadResource, uploadResourceOffset, MemoryType::Upload)); } - + else + { + uploadResourceOffset = offset; + } D3D12Resource& uploadResourceRef = (buffer->getDesc()->memoryType == MemoryType::Upload) ? buffer->m_resource @@ -420,10 +423,10 @@ Result uploadBufferDataImpl( void* uploadData; SLANG_RETURN_ON_FAIL( uploadResourceRef.getResource()->Map(0, &readRange, reinterpret_cast<void**>(&uploadData))); - memcpy((uint8_t*)uploadData + uploadResourceOffset + offset, data, size); + memcpy((uint8_t*)uploadData + uploadResourceOffset, data, size); D3D12_RANGE writtenRange = {}; - writtenRange.Begin = uploadResourceOffset + offset; - writtenRange.End = uploadResourceOffset + offset + size; + writtenRange.Begin = uploadResourceOffset; + writtenRange.End = uploadResourceOffset + size; uploadResourceRef.getResource()->Unmap(0, &writtenRange); if (buffer->getDesc()->memoryType != MemoryType::Upload) @@ -432,7 +435,7 @@ Result uploadBufferDataImpl( buffer->m_resource.getResource(), offset, uploadResourceRef.getResource(), - uploadResourceOffset + offset, + uploadResourceOffset, size); } |
