summaryrefslogtreecommitdiffstats
path: root/tools/gfx/d3d/d3d-util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gfx/d3d/d3d-util.cpp')
-rw-r--r--tools/gfx/d3d/d3d-util.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/gfx/d3d/d3d-util.cpp b/tools/gfx/d3d/d3d-util.cpp
index 505755005..a9e49bfd9 100644
--- a/tools/gfx/d3d/d3d-util.cpp
+++ b/tools/gfx/d3d/d3d-util.cpp
@@ -635,6 +635,18 @@ int D3DUtil::getShaderModelFromProfileName(const char* name)
return 0;
}
+uint32_t D3DUtil::getPlaneSliceCount(DXGI_FORMAT format)
+{
+ switch (format)
+ {
+ case DXGI_FORMAT_D24_UNORM_S8_UINT:
+ case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
+ return 2;
+ default:
+ return 1;
+ }
+}
+
uint32_t D3DUtil::getPlaneSlice(DXGI_FORMAT format, TextureAspect aspect)
{
switch (aspect)
@@ -773,6 +785,68 @@ D3D12_BLEND D3DUtil::getBlendFactor(BlendFactor factor)
}
}
+uint32_t D3DUtil::getSubresourceIndex(
+ uint32_t mipIndex,
+ uint32_t arrayIndex,
+ uint32_t planeIndex,
+ uint32_t mipLevelCount,
+ uint32_t arraySize)
+{
+ return mipIndex + arrayIndex * mipLevelCount + planeIndex * mipLevelCount * arraySize;
+}
+
+uint32_t D3DUtil::getSubresourceMipLevel(uint32_t subresourceIndex, uint32_t mipLevelCount)
+{
+ return subresourceIndex % mipLevelCount;
+}
+
+D3D12_RESOURCE_STATES D3DUtil::getResourceState(ResourceState state)
+{
+ switch (state)
+ {
+ case ResourceState::Undefined:
+ return D3D12_RESOURCE_STATE_COMMON;
+ case ResourceState::General:
+ return D3D12_RESOURCE_STATE_COMMON;
+ case ResourceState::PreInitialized:
+ return D3D12_RESOURCE_STATE_COMMON;
+ case ResourceState::VertexBuffer:
+ return D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER;
+ case ResourceState::IndexBuffer:
+ return D3D12_RESOURCE_STATE_INDEX_BUFFER;
+ case ResourceState::ConstantBuffer:
+ return D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER;
+ case ResourceState::StreamOutput:
+ return D3D12_RESOURCE_STATE_STREAM_OUT;
+ case ResourceState::ShaderResource:
+ return D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
+ case ResourceState::UnorderedAccess:
+ return D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
+ case ResourceState::RenderTarget:
+ return D3D12_RESOURCE_STATE_RENDER_TARGET;
+ case ResourceState::DepthRead:
+ return D3D12_RESOURCE_STATE_DEPTH_READ;
+ case ResourceState::DepthWrite:;
+ return D3D12_RESOURCE_STATE_DEPTH_WRITE;
+ case ResourceState::Present:
+ return D3D12_RESOURCE_STATE_PRESENT;
+ case ResourceState::IndirectArgument:
+ return D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT;
+ case ResourceState::CopySource:
+ return D3D12_RESOURCE_STATE_COPY_SOURCE;
+ case ResourceState::CopyDestination:
+ return D3D12_RESOURCE_STATE_COPY_DEST;
+ case ResourceState::ResolveSource:
+ return D3D12_RESOURCE_STATE_RESOLVE_SOURCE;
+ case ResourceState::ResolveDestination:
+ return D3D12_RESOURCE_STATE_RESOLVE_DEST;
+ case ResourceState::AccelerationStructure:
+ return D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE;
+ default:
+ return D3D12_RESOURCE_STATE_COMMON;
+ }
+}
+
/* static */SlangResult D3DUtil::findAdapters(DeviceCheckFlags flags, const UnownedStringSlice& adapterName, IDXGIFactory* dxgiFactory, List<ComPtr<IDXGIAdapter>>& outDxgiAdapters)
{
Slang::String lowerAdapterName = Slang::String(adapterName).toLower();