diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-01-26 06:15:30 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-01-26 06:15:30 +0000 |
| commit | d066eca3eb7d60701a3cd5dc9159136ba233902e (patch) | |
| tree | 435510cde28558b799fef748fbd495442ed8b490 /Graphics | |
| parent | Updated shader C interface; added test. (diff) | |
| download | DiligentCore-d066eca3eb7d60701a3cd5dc9159136ba233902e.tar.gz DiligentCore-d066eca3eb7d60701a3cd5dc9159136ba233902e.zip | |
Reworked IShaderResourceVariable::GetResourceDesc() method to be compatible with C
Diffstat (limited to 'Graphics')
5 files changed, 16 insertions, 19 deletions
diff --git a/Graphics/GraphicsEngine/interface/ShaderResourceVariable.h b/Graphics/GraphicsEngine/interface/ShaderResourceVariable.h index 6c682ab1..44c0d058 100644 --- a/Graphics/GraphicsEngine/interface/ShaderResourceVariable.h +++ b/Graphics/GraphicsEngine/interface/ShaderResourceVariable.h @@ -132,7 +132,7 @@ public: virtual SHADER_RESOURCE_VARIABLE_TYPE GetType() const = 0; /// Returns shader resource description. See Diligent::ShaderResourceDesc. - virtual ShaderResourceDesc GetResourceDesc() const = 0; + virtual void GetResourceDesc(ShaderResourceDesc& ResourceDesc) const = 0; /// Returns the variable index that can be used to access the variable. virtual Uint32 GetIndex() const = 0; @@ -154,7 +154,7 @@ struct IShaderResourceVariableMethods void (*Set) (struct IShaderResourceVariable*, class IDeviceObject* pObject); void (*SetArray) (struct IShaderResourceVariable*, class IDeviceObject* const* ppObjects, Uint32 FirstElement, Uint32 NumElements); SHADER_RESOURCE_VARIABLE_TYPE (*GetType) (struct IShaderResourceVariable*); - struct ShaderResourceDesc (*GetResourceDesc)(struct IShaderResourceVariable*); + void (*GetResourceDesc)(struct IShaderResourceVariable*, struct ShaderResourceDesc* ResourceDesc); Uint32 (*GetIndex) (struct IShaderResourceVariable*); bool (*IsBound) (struct IShaderResourceVariable*, Uint32 ArrayIndex); }; @@ -173,15 +173,12 @@ struct IShaderResourceVariable // clang-format off -# define IShaderResourceVariable_Set(This, ...) (This)->pVtbl->ShaderResourceVariable.Set ((struct IShaderResourceVariable*)(This), __VA_ARGS__) -# define IShaderResourceVariable_SetArray(This, ...) (This)->pVtbl->ShaderResourceVariable.SetArray ((struct IShaderResourceVariable*)(This), __VA_ARGS__) -# define IShaderResourceVariable_GetType(This) (This)->pVtbl->ShaderResourceVariable.GetType ((struct IShaderResourceVariable*)(This)) - -// TODO: returning structure from a function produces different signatures in C and C++ -//# define IShaderResourceVariable_GetResourceDesc(This) (This)->pVtbl->ShaderResourceVariable.GetResourceDesc((struct IShaderResourceVariable*)(This)) - -# define IShaderResourceVariable_GetIndex(This) (This)->pVtbl->ShaderResourceVariable.GetIndex ((struct IShaderResourceVariable*)(This)) -# define IShaderResourceVariable_IsBound(This, ...) (This)->pVtbl->ShaderResourceVariable.IsBound ((struct IShaderResourceVariable*)(This), __VA_ARGS__) +# define IShaderResourceVariable_Set(This, ...) (This)->pVtbl->ShaderResourceVariable.Set ((struct IShaderResourceVariable*)(This), __VA_ARGS__) +# define IShaderResourceVariable_SetArray(This, ...) (This)->pVtbl->ShaderResourceVariable.SetArray ((struct IShaderResourceVariable*)(This), __VA_ARGS__) +# define IShaderResourceVariable_GetType(This) (This)->pVtbl->ShaderResourceVariable.GetType ((struct IShaderResourceVariable*)(This)) +# define IShaderResourceVariable_GetResourceDesc(This, ...) (This)->pVtbl->ShaderResourceVariable.GetResourceDesc((struct IShaderResourceVariable*)(This), __VA_ARGS__) +# define IShaderResourceVariable_GetIndex(This) (This)->pVtbl->ShaderResourceVariable.GetIndex ((struct IShaderResourceVariable*)(This)) +# define IShaderResourceVariable_IsBound(This, ...) (This)->pVtbl->ShaderResourceVariable.IsBound ((struct IShaderResourceVariable*)(This), __VA_ARGS__) // clang-format on diff --git a/Graphics/GraphicsEngineD3D12/include/ShaderVariableD3D12.h b/Graphics/GraphicsEngineD3D12/include/ShaderVariableD3D12.h index b19b98cf..f7a1f8c8 100644 --- a/Graphics/GraphicsEngineD3D12/include/ShaderVariableD3D12.h +++ b/Graphics/GraphicsEngineD3D12/include/ShaderVariableD3D12.h @@ -187,9 +187,9 @@ public: m_Resource.BindResource(ppObjects[Elem], FirstElement + Elem, m_ParentManager.m_ResourceCache); } - virtual ShaderResourceDesc GetResourceDesc() const override final + virtual void GetResourceDesc(ShaderResourceDesc& ResourceDesc) const override final { - return GetHLSLResourceDesc(); + ResourceDesc = GetHLSLResourceDesc(); } virtual HLSLShaderResourceDesc GetHLSLResourceDesc() const override final diff --git a/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h b/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h index d47150f4..3c566b20 100644 --- a/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h +++ b/Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h @@ -65,9 +65,9 @@ struct ShaderVariableD3DBase : public ShaderVariableBase<TShaderResourceLayout, return m_VariableType; } - virtual ShaderResourceDesc GetResourceDesc() const override final + virtual void GetResourceDesc(ShaderResourceDesc& ResourceDesc) const override final { - return GetHLSLResourceDesc(); + ResourceDesc = GetHLSLResourceDesc(); } virtual HLSLShaderResourceDesc GetHLSLResourceDesc() const override final diff --git a/Graphics/GraphicsEngineOpenGL/include/GLPipelineResourceLayout.h b/Graphics/GraphicsEngineOpenGL/include/GLPipelineResourceLayout.h index a7d65a9a..7b95aadc 100644 --- a/Graphics/GraphicsEngineOpenGL/include/GLPipelineResourceLayout.h +++ b/Graphics/GraphicsEngineOpenGL/include/GLPipelineResourceLayout.h @@ -132,9 +132,9 @@ public: return m_VariableType; } - virtual ShaderResourceDesc GetResourceDesc() const override final + virtual void GetResourceDesc(ShaderResourceDesc& ResourceDesc) const override final { - return m_Attribs.GetResourceDesc(); + ResourceDesc = m_Attribs.GetResourceDesc(); } virtual Uint32 GetIndex() const override final diff --git a/Graphics/GraphicsEngineVulkan/include/ShaderVariableVk.h b/Graphics/GraphicsEngineVulkan/include/ShaderVariableVk.h index 716b62ac..43e47834 100644 --- a/Graphics/GraphicsEngineVulkan/include/ShaderVariableVk.h +++ b/Graphics/GraphicsEngineVulkan/include/ShaderVariableVk.h @@ -182,9 +182,9 @@ public: m_Resource.BindResource(ppObjects[Elem], FirstElement + Elem, m_ParentManager.m_ResourceCache); } - virtual ShaderResourceDesc GetResourceDesc() const override final + virtual void GetResourceDesc(ShaderResourceDesc& ResourceDesc) const override final { - return m_Resource.SpirvAttribs.GetResourceDesc(); + ResourceDesc = m_Resource.SpirvAttribs.GetResourceDesc(); } virtual Uint32 GetIndex() const override final |
