summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp')
-rw-r--r--Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp b/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp
index 22c83a3654..cfb67209c8 100644
--- a/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp
+++ b/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp
@@ -29,7 +29,8 @@ D3DStreamBuffer::~D3DStreamBuffer()
{
D3D::command_list_mgr->RemoveQueueFenceCallback(this);
- m_buffer->Unmap(0, nullptr);
+ D3D12_RANGE write_range = { 0, m_buffer_size };
+ m_buffer->Unmap(0, &write_range);
D3D::command_list_mgr->DestroyResourceAfterCurrentCommandListExecuted(m_buffer);
}
@@ -43,7 +44,7 @@ bool D3DStreamBuffer::AllocateSpaceInBuffer(size_t allocation_size, size_t align
{
CHECK(allocation_size <= m_buffer_max_size, "Error: Requested allocation size in D3DStreamBuffer is greater than max allowed size of backing buffer.");
- if (alignment)
+ if (alignment && m_buffer_offset > 0)
{
size_t padding = m_buffer_offset % alignment;
@@ -94,7 +95,8 @@ void D3DStreamBuffer::AllocateBuffer(size_t size)
// First, put existing buffer (if it exists) in deferred destruction list.
if (m_buffer)
{
- m_buffer->Unmap(0, nullptr);
+ D3D12_RANGE write_range = { 0, m_buffer_size };
+ m_buffer->Unmap(0, &write_range);
D3D::command_list_mgr->DestroyResourceAfterCurrentCommandListExecuted(m_buffer);
m_buffer = nullptr;
}
@@ -110,7 +112,8 @@ void D3DStreamBuffer::AllocateBuffer(size_t size)
)
);
- CheckHR(m_buffer->Map(0, nullptr, &m_buffer_cpu_address));
+ D3D12_RANGE read_range = {};
+ CheckHR(m_buffer->Map(0, &read_range, &m_buffer_cpu_address));
m_buffer_gpu_address = m_buffer->GetGPUVirtualAddress();
m_buffer_size = size;