summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2016-05-10 21:34:27 +1200
committerMatthew Parlane <parlane@gmail.com>2016-05-10 21:34:27 +1200
commitbb6a04dc8ee7454d3f85b53f009cb9d9afa6ccda (patch)
tree3dfaba23f38401709460917d5b721ed1774f1c0b /Source/Core/VideoBackends/D3D12/D3DStreamBuffer.cpp
parent7fdf0c7b03869c908e28816ee6691535973f5e30 (diff)
parentccf9470241309114bdc46d9dc80bb9b99aed4a41 (diff)
Merge pull request #3713 from stenzek/d3d12-more-fixes
D3D12: Bug fixes, implement bbox, realxfb, perfquery
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;