summaryrefslogtreecommitdiff
path: root/tools/gfx/d3d11/render-d3d11.cpp
diff options
context:
space:
mode:
authorZanderMajercik <amajercik@nvidia.com>2022-01-04 11:05:04 -0800
committerGitHub <noreply@github.com>2022-01-04 11:05:04 -0800
commit9d6c7763334908c78027199a0cb1ca3b9841ebab (patch)
treedc75824b08ca23554a0c8e1f98458c103605ebf9 /tools/gfx/d3d11/render-d3d11.cpp
parent1a1b2a0de67dccc1102449b8620830131d569cde (diff)
Buffer allocation backend. (#2045)
* removed initialization of upload resource for CPU visible buffers (D3D12, Vulkan) * reverted slang-gfx.h change * declared DescBase::hasCpuAccessFlag() const to make backend changes compile under gcc * commit before checking master branch * commit before merge * commit before checking master * commit before merging upstream * revert vulkan changes * commit before testing on master * commit before merge with master * reverted bad merge changes * reverted more bad merge changes in render-d3d12.cpp * reverted buffer transition in _uploadBufferData * implemented bufferBarrier() in render-d3d12.cpp * reverted uneccesary transition in createBuffer * create staging buffer even when AccessFlag::None passed to D3D11 createBufferResource * renamed AccessFlags to MemoryType Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'tools/gfx/d3d11/render-d3d11.cpp')
-rw-r--r--tools/gfx/d3d11/render-d3d11.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/tools/gfx/d3d11/render-d3d11.cpp b/tools/gfx/d3d11/render-d3d11.cpp
index cb6d62830..aa5136873 100644
--- a/tools/gfx/d3d11/render-d3d11.cpp
+++ b/tools/gfx/d3d11/render-d3d11.cpp
@@ -1514,7 +1514,7 @@ protected:
bufferDesc.defaultState = ResourceState::ConstantBuffer;
bufferDesc.allowedStates =
ResourceStateSet(ResourceState::ConstantBuffer, ResourceState::CopyDestination);
- bufferDesc.cpuAccessFlags |= AccessFlag::Write;
+ bufferDesc.cpuAccessFlags |= MemoryType::CpuWrite;
SLANG_RETURN_ON_FAIL(
device->createBufferResource(bufferDesc, nullptr, bufferResourcePtr.writeRef()));
m_ordinaryDataBuffer = static_cast<BufferResourceImpl*>(bufferResourcePtr.get());
@@ -2554,10 +2554,10 @@ static int _calcResourceAccessFlags(int accessFlags)
switch (accessFlags)
{
case 0: return 0;
- case AccessFlag::Read: return D3D11_CPU_ACCESS_READ;
- case AccessFlag::Write: return D3D11_CPU_ACCESS_WRITE;
- case AccessFlag::Read |
- AccessFlag::Write: return D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
+ case MemoryType::CpuRead: return D3D11_CPU_ACCESS_READ;
+ case MemoryType::CpuWrite: return D3D11_CPU_ACCESS_WRITE;
+ case MemoryType::CpuRead |
+ MemoryType::CpuWrite: return D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;
default: assert(!"Invalid flags"); return 0;
}
}
@@ -2711,11 +2711,11 @@ Result D3D11Device::createBufferResource(const IBufferResource::Desc& descIn, co
bufferDesc.BindFlags = d3dBindFlags;
// For read we'll need to do some staging
bufferDesc.CPUAccessFlags =
- _calcResourceAccessFlags(descIn.cpuAccessFlags & AccessFlag::Write);
+ _calcResourceAccessFlags(descIn.cpuAccessFlags & MemoryType::CpuWrite);
bufferDesc.Usage = D3D11_USAGE_DEFAULT;
// If written by CPU, make it dynamic
- if ((descIn.cpuAccessFlags & AccessFlag::Write) &&
+ if ((descIn.cpuAccessFlags & MemoryType::CpuWrite) &&
!descIn.allowedStates.contains(ResourceState::UnorderedAccess))
{
bufferDesc.Usage = D3D11_USAGE_DYNAMIC;
@@ -2746,7 +2746,7 @@ Result D3D11Device::createBufferResource(const IBufferResource::Desc& descIn, co
}
}
- if (srcDesc.cpuAccessFlags & AccessFlag::Write)
+ if (srcDesc.cpuAccessFlags & MemoryType::CpuWrite)
{
bufferDesc.CPUAccessFlags |= D3D11_CPU_ACCESS_WRITE;
}
@@ -2759,8 +2759,7 @@ Result D3D11Device::createBufferResource(const IBufferResource::Desc& descIn, co
SLANG_RETURN_ON_FAIL(m_device->CreateBuffer(&bufferDesc, initData ? &subResourceData : nullptr, buffer->m_buffer.writeRef()));
buffer->m_d3dUsage = bufferDesc.Usage;
- if ((srcDesc.cpuAccessFlags & AccessFlag::Read) ||
- ((srcDesc.cpuAccessFlags & AccessFlag::Write) && bufferDesc.Usage != D3D11_USAGE_DYNAMIC))
+ if (srcDesc.cpuAccessFlags & MemoryType::CpuRead || bufferDesc.Usage != D3D11_USAGE_DYNAMIC)
{
D3D11_BUFFER_DESC bufDesc = {};
bufDesc.BindFlags = 0;