From 063761fbd287c1dd05e022c5369a07747156eb70 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 6 Mar 2016 18:33:46 +1000 Subject: D3D12: Don't add padding when allocating within empty StreamBuffer Resources are already aligned to an address larger than any of our requirements, anyway. --- Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp') diff --git a/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp b/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp index 22c83a3654..1af9945fea 100644 --- a/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp +++ b/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp @@ -43,7 +43,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; -- cgit v1.2.3 From ccf9470241309114bdc46d9dc80bb9b99aed4a41 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 15 Mar 2016 22:26:01 +1000 Subject: D3D12: Specify read/write ranges when calling Map/Unmap --- Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp') diff --git a/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp b/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp index 1af9945fea..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); } @@ -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; -- cgit v1.2.3