From dc9a4e784c8bb97fbb16a01624c7b8f0544977a4 Mon Sep 17 00:00:00 2001 From: azhirnov Date: Tue, 11 Aug 2020 22:48:23 +0300 Subject: Added mesh shader added mesh shader support to DX12 and Vulkan, added DXIL compiler for Shader Model 6.x --- .../GraphicsEngineOpenGL/include/DeviceContextGLImpl.hpp | 4 ++++ Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp | 12 +++++++++++- Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) (limited to 'Graphics/GraphicsEngineOpenGL') diff --git a/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.hpp b/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.hpp index e80e0d04..54eff631 100644 --- a/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.hpp +++ b/Graphics/GraphicsEngineOpenGL/include/DeviceContextGLImpl.hpp @@ -120,6 +120,10 @@ public: virtual void DILIGENT_CALL_TYPE DrawIndirect (const DrawIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final; /// Implementation of IDeviceContext::DrawIndexedIndirect() in OpenGL backend. virtual void DILIGENT_CALL_TYPE DrawIndexedIndirect(const DrawIndexedIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final; + /// Implementation of IDeviceContext::DrawMesh() in OpenGL backend. + virtual void DILIGENT_CALL_TYPE DrawMesh (const DrawMeshAttribs& Attribs) override final; + /// Implementation of IDeviceContext::DrawMeshIndirect() in OpenGL backend. + virtual void DILIGENT_CALL_TYPE DrawMeshIndirect (const DrawMeshIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) override final; /// Implementation of IDeviceContext::DispatchCompute() in OpenGL backend. virtual void DILIGENT_CALL_TYPE DispatchCompute (const DispatchComputeAttribs& Attribs) override final; diff --git a/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp index f6308229..7728de7b 100644 --- a/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/DeviceContextGLImpl.cpp @@ -84,7 +84,7 @@ void DeviceContextGLImpl::SetPipelineState(IPipelineState* pPipelineState) TDeviceContextBase::SetPipelineState(pPipelineStateGLImpl, 0 /*Dummy*/); const auto& Desc = pPipelineStateGLImpl->GetDesc(); - if (Desc.IsComputePipeline) + if (Desc.IsComputePipeline()) { } else @@ -874,6 +874,16 @@ void DeviceContextGLImpl::DrawIndexedIndirect(const DrawIndexedIndirectAttribs& #endif } +void DeviceContextGLImpl::DrawMesh(const DrawMeshAttribs& Attribs) +{ + UNSUPPORTED("DrawMesh is not supported in OpenGL"); +} + +void DeviceContextGLImpl::DrawMeshIndirect(const DrawMeshIndirectAttribs& Attribs, IBuffer* pAttribsBuffer) +{ + UNSUPPORTED("DrawMeshIndirect is not supported in OpenGL"); +} + void DeviceContextGLImpl::DispatchCompute(const DispatchComputeAttribs& Attribs) { diff --git a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp index 72d504be..bb2201d1 100644 --- a/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/PipelineStateGLImpl.cpp @@ -52,7 +52,7 @@ PipelineStateGLImpl::PipelineStateGLImpl(IReferenceCounters* pRefCoun m_StaticResourceLayout{*this} // clang-format on { - if (!m_Desc.IsComputePipeline && m_pPS == nullptr) + if (m_Desc.IsAnyGraphicsPipeline() && m_pPS == nullptr) { // Some OpenGL implementations fail if fragment shader is not present, so // create a dummy one. -- cgit v1.2.3