From 90a707ecb5d7985c261faf1903e849548c046b02 Mon Sep 17 00:00:00 2001 From: assiduous Date: Mon, 7 Sep 2020 22:00:23 -0700 Subject: A bunch of random updates --- Graphics/GraphicsEngineD3D12/CMakeLists.txt | 4 ++-- .../GraphicsEngineD3D12/include/CommandContext.hpp | 2 +- .../include/RenderDeviceD3D12Impl.hpp | 6 +++--- .../GraphicsEngineD3D12/src/CommandListManager.cpp | 2 +- .../src/DeviceContextD3D12Impl.cpp | 2 +- .../src/PipelineStateD3D12Impl.cpp | 4 ++-- .../src/RenderDeviceD3D12Impl.cpp | 6 +++--- Graphics/GraphicsEngineD3D12/src/RootSignature.cpp | 6 +++--- .../GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp | 24 ++++++++-------------- 9 files changed, 24 insertions(+), 32 deletions(-) (limited to 'Graphics/GraphicsEngineD3D12') diff --git a/Graphics/GraphicsEngineD3D12/CMakeLists.txt b/Graphics/GraphicsEngineD3D12/CMakeLists.txt index 74e0f50d..e8a48236 100644 --- a/Graphics/GraphicsEngineD3D12/CMakeLists.txt +++ b/Graphics/GraphicsEngineD3D12/CMakeLists.txt @@ -180,8 +180,8 @@ PUBLIC target_compile_definitions(Diligent-GraphicsEngineD3D12-shared PUBLIC ENGINE_DLL=1) if(${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} STRGREATER_EQUAL "10.0.19041.0") - set(D12_H_HAS_MESH_SHADER ON CACHE INTERNAL "" FORCE) - target_compile_definitions(Diligent-GraphicsEngineD3D12-static PRIVATE D12_H_HAS_MESH_SHADER) + set(D3D12_H_HAS_MESH_SHADER ON CACHE INTERNAL "" FORCE) + target_compile_definitions(Diligent-GraphicsEngineD3D12-static PRIVATE D3D12_H_HAS_MESH_SHADER) endif() if(${DILIGENT_HAS_D3D12_DXIL_COMPILER}) target_compile_definitions(Diligent-GraphicsEngineD3D12-static PRIVATE DILIGENT_HAS_D3D12_DXIL_COMPILER) diff --git a/Graphics/GraphicsEngineD3D12/include/CommandContext.hpp b/Graphics/GraphicsEngineD3D12/include/CommandContext.hpp index 6fea488e..d6477b79 100644 --- a/Graphics/GraphicsEngineD3D12/include/CommandContext.hpp +++ b/Graphics/GraphicsEngineD3D12/include/CommandContext.hpp @@ -394,7 +394,7 @@ class GraphicsContext6 : public GraphicsContext5 public: void DrawMesh(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ) { -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER FlushResourceBarriers(); static_cast(m_pCommandList.p)->DispatchMesh(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ); #else diff --git a/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.hpp b/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.hpp index 627b270d..dc8d594e 100644 --- a/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.hpp +++ b/Graphics/GraphicsEngineD3D12/include/RenderDeviceD3D12Impl.hpp @@ -154,11 +154,11 @@ public: IDxCompilerLibrary* GetDxCompiler() const { return m_pDxCompiler.get(); } -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER ID3D12Device2* GetD3D12Device2(); #endif - ShaderVersion GetShaderModel() const; + D3D_SHADER_MODEL GetMaxShaderModel() const; D3D_FEATURE_LEVEL GetD3DFeatureLevel() const; private: @@ -167,7 +167,7 @@ private: CComPtr m_pd3d12Device; -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER CComPtr m_pd3d12Device2; #endif diff --git a/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp b/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp index 8d3238c6..f2e8c1f0 100644 --- a/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp +++ b/Graphics/GraphicsEngineD3D12/src/CommandListManager.cpp @@ -53,7 +53,7 @@ void CommandListManager::CreateNewCommandList(ID3D12GraphicsCommandList** List, const IID CmdListIIDs[] = { -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER __uuidof(ID3D12GraphicsCommandList6), __uuidof(ID3D12GraphicsCommandList5), #endif diff --git a/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp index 35539eb2..70289385 100644 --- a/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/DeviceContextD3D12Impl.cpp @@ -120,7 +120,7 @@ DeviceContextD3D12Impl::DeviceContextD3D12Impl(IReferenceCounters* pRef hr = pd3d12Device->CreateCommandSignature(&CmdSignatureDesc, nullptr, __uuidof(m_pDispatchIndirectSignature), reinterpret_cast(static_cast(&m_pDispatchIndirectSignature))); CHECK_D3D_RESULT_THROW(hr, "Failed to create dispatch indirect command signature"); -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER CmdSignatureDesc.ByteStride = sizeof(UINT) * 3; IndirectArg.Type = D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH; hr = pd3d12Device->CreateCommandSignature(&CmdSignatureDesc, nullptr, __uuidof(m_pDrawMeshIndirectSignature), reinterpret_cast(static_cast(&m_pDrawMeshIndirectSignature))); diff --git a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp index 6dc4d97a..5d33aefd 100644 --- a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp @@ -311,7 +311,7 @@ PipelineStateD3D12Impl::PipelineStateD3D12Impl(IReferenceCounters* pR break; } -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER case PIPELINE_TYPE_MESH: { const auto& GraphicsPipeline = m_Desc.GraphicsPipeline; @@ -395,7 +395,7 @@ PipelineStateD3D12Impl::PipelineStateD3D12Impl(IReferenceCounters* pR CHECK_D3D_RESULT_THROW(device2->CreatePipelineState(&streamDesc, IID_PPV_ARGS(&m_pd3d12PSO)), "Failed to create pipeline state"); break; } -#endif // D12_H_HAS_MESH_SHADER +#endif // D3D12_H_HAS_MESH_SHADER default: LOG_ERROR_AND_THROW("Unknown shader type"); diff --git a/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp index ea4d62a8..bdf596a4 100644 --- a/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/RenderDeviceD3D12Impl.cpp @@ -65,7 +65,7 @@ static CComPtr DXGIAdapterFromD3D12Device(ID3D12Device* pd3d12Dev return nullptr; } -ShaderVersion RenderDeviceD3D12Impl::GetShaderModel() const +ShaderVersion RenderDeviceD3D12Impl::GetMaxShaderModel() const { return ShaderVersion{Uint8((m_ShaderModel >> 4) & 0xF), Uint8(m_ShaderModel & 0xF)}; } @@ -89,7 +89,7 @@ D3D_FEATURE_LEVEL RenderDeviceD3D12Impl::GetD3DFeatureLevel() const return FeatureLevelsData.MaxSupportedFeatureLevel; } -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER ID3D12Device2* RenderDeviceD3D12Impl::GetD3D12Device2() { if (!m_pd3d12Device2) @@ -230,7 +230,7 @@ RenderDeviceD3D12Impl::RenderDeviceD3D12Impl(IReferenceCounters* pRefCo } // Check if mesh shader is supported. -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER { D3D12_FEATURE_DATA_D3D12_OPTIONS7 FeatureData = {}; bool SupportsMeshShader = SUCCEEDED(m_pd3d12Device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &FeatureData, sizeof(FeatureData))) && diff --git a/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp b/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp index 4f080fcc..0acaa810 100644 --- a/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp +++ b/Graphics/GraphicsEngineD3D12/src/RootSignature.cpp @@ -183,7 +183,7 @@ static D3D12_SHADER_VISIBILITY ShaderTypeInd2ShaderVisibilityMap[] D3D12_SHADER_VISIBILITY_HULL, // 3 D3D12_SHADER_VISIBILITY_DOMAIN, // 4 D3D12_SHADER_VISIBILITY_ALL, // 5 -#ifdef D12_H_HAS_MESH_SHADER +#ifdef D3D12_H_HAS_MESH_SHADER D3D12_SHADER_VISIBILITY_AMPLIFICATION, // 6 D3D12_SHADER_VISIBILITY_MESH // 7 #endif @@ -203,7 +203,7 @@ D3D12_SHADER_VISIBILITY GetShaderVisibility(SHADER_TYPE ShaderType) case SHADER_TYPE_HULL: VERIFY_EXPR(ShaderVisibility == D3D12_SHADER_VISIBILITY_HULL); break; case SHADER_TYPE_DOMAIN: VERIFY_EXPR(ShaderVisibility == D3D12_SHADER_VISIBILITY_DOMAIN); break; case SHADER_TYPE_COMPUTE: VERIFY_EXPR(ShaderVisibility == D3D12_SHADER_VISIBILITY_ALL); break; -# ifdef D12_H_HAS_MESH_SHADER +# ifdef D3D12_H_HAS_MESH_SHADER case SHADER_TYPE_AMPLIFICATION: VERIFY_EXPR(ShaderVisibility == D3D12_SHADER_VISIBILITY_AMPLIFICATION); break; case SHADER_TYPE_MESH: VERIFY_EXPR(ShaderVisibility == D3D12_SHADER_VISIBILITY_MESH); break; # endif @@ -242,7 +242,7 @@ SHADER_TYPE ShaderTypeFromShaderVisibility(D3D12_SHADER_VISIBILITY ShaderVisibil case D3D12_SHADER_VISIBILITY_HULL: VERIFY_EXPR(ShaderType == SHADER_TYPE_HULL); break; case D3D12_SHADER_VISIBILITY_DOMAIN: VERIFY_EXPR(ShaderType == SHADER_TYPE_DOMAIN); break; case D3D12_SHADER_VISIBILITY_ALL: VERIFY_EXPR(ShaderType == SHADER_TYPE_COMPUTE); break; -# ifdef D12_H_HAS_MESH_SHADER +# ifdef D3D12_H_HAS_MESH_SHADER case D3D12_SHADER_VISIBILITY_AMPLIFICATION: VERIFY_EXPR(ShaderType == SHADER_TYPE_AMPLIFICATION); break; case D3D12_SHADER_VISIBILITY_MESH: VERIFY_EXPR(ShaderType == SHADER_TYPE_MESH); break; # endif diff --git a/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp index 0634bcf1..753fcbf8 100644 --- a/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/ShaderD3D12Impl.cpp @@ -38,23 +38,15 @@ namespace Diligent static ShaderVersion GetD3D12ShaderModel(RenderDeviceD3D12Impl* pDevice, const ShaderVersion& HLSLVersion, SHADER_COMPILER ShaderCompiler) { - if (ShaderCompiler != SHADER_COMPILER_DXC) - return HLSLVersion.Major == 0 ? ShaderVersion{5, 1} : HLSLVersion; - - ShaderVersion DeviceSM = pDevice->GetShaderModel(); - ShaderVersion CompilerSM = pDevice->GetDxCompiler() && pDevice->GetDxCompiler()->IsLoaded() ? pDevice->GetDxCompiler()->GetMaxShaderModel() : ShaderVersion{5, 1}; - ShaderVersion MaxSM; - - MaxSM = DeviceSM.Major == CompilerSM.Major ? - (DeviceSM.Minor > CompilerSM.Minor ? CompilerSM : DeviceSM) : - (DeviceSM.Major > CompilerSM.Major ? CompilerSM : DeviceSM); - if (HLSLVersion.Major == 0 && HLSLVersion.Minor == 0) - return MaxSM; - - return HLSLVersion.Major == MaxSM.Major ? - (HLSLVersion.Minor > MaxSM.Minor ? MaxSM : HLSLVersion) : - (HLSLVersion.Major > MaxSM.Major ? MaxSM : HLSLVersion); + { + D3D_SHADER_MODEL ver = pDevice->GetMaxShaderModel(); + return ShaderVersion{Uint8((ver >> 4) & 0xF), Uint8(ver & 0xF)}; + } + else + { + return HLSLVersion; + } } ShaderD3D12Impl::ShaderD3D12Impl(IReferenceCounters* pRefCounters, -- cgit v1.2.3