diff options
| author | skallweitNV <64953474+skallweitNV@users.noreply.github.com> | 2022-11-07 17:59:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-07 08:59:15 -0800 |
| commit | ea99c274dea12fffdc89a8d4eeefcbb670232ba8 (patch) | |
| tree | fde86d173a4cca226433ec689c10dcc173b4fd16 /tools/gfx/d3d12 | |
| parent | 72ce0584d273ac5f04c3d9096f3523da68cc6fc1 (diff) | |
Initial version of DeviceLimits implemented in d3d12, d3d11, vulkan and cuda (#2496)
Diffstat (limited to 'tools/gfx/d3d12')
| -rw-r--r-- | tools/gfx/d3d12/d3d12-device.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tools/gfx/d3d12/d3d12-device.cpp b/tools/gfx/d3d12/d3d12-device.cpp index ebb416c39..3c6a98c2b 100644 --- a/tools/gfx/d3d12/d3d12-device.cpp +++ b/tools/gfx/d3d12/d3d12-device.cpp @@ -725,6 +725,40 @@ Result DeviceImpl::initialize(const Desc& desc) // Retrieve timestamp frequency. m_resourceCommandQueue->m_d3dQueue->GetTimestampFrequency(&m_info.timestampFrequency); + // Get device limits. + { + DeviceLimits limits = {}; + limits.maxTextureDimension1D = D3D12_REQ_TEXTURE1D_U_DIMENSION; + limits.maxTextureDimension2D = D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION; + limits.maxTextureDimension3D = D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION; + limits.maxTextureDimensionCube = D3D12_REQ_TEXTURECUBE_DIMENSION; + limits.maxTextureArrayLayers = D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION; + + limits.maxVertexInputElements = D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT; + limits.maxVertexInputElementOffset = 256; // TODO + limits.maxVertexStreams = D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT; + limits.maxVertexStreamStride = D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES; + + limits.maxComputeThreadsPerGroup = D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP; + limits.maxComputeThreadGroupSize[0] = D3D12_CS_THREAD_GROUP_MAX_X; + limits.maxComputeThreadGroupSize[1] = D3D12_CS_THREAD_GROUP_MAX_Y; + limits.maxComputeThreadGroupSize[2] = D3D12_CS_THREAD_GROUP_MAX_Z; + limits.maxComputeDispatchThreadGroups[0] = D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION; + limits.maxComputeDispatchThreadGroups[1] = D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION; + limits.maxComputeDispatchThreadGroups[2] = D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION; + + limits.maxViewports = D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE; + limits.maxViewportDimensions[0] = D3D12_VIEWPORT_BOUNDS_MAX; + limits.maxViewportDimensions[1] = D3D12_VIEWPORT_BOUNDS_MAX; + limits.maxFramebufferDimensions[0] = D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION; + limits.maxFramebufferDimensions[1] = D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION; + limits.maxFramebufferDimensions[2] = 1; + + limits.maxShaderVisibleSamplers = D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE; + + m_info.limits = limits; + } + SLANG_RETURN_ON_FAIL(createTransientResourceHeapImpl( ITransientResourceHeap::Flags::AllowResizing, 0, |
