summaryrefslogtreecommitdiffstats
path: root/Graphics
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-01-26 06:15:30 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-01-26 06:15:30 +0000
commitd066eca3eb7d60701a3cd5dc9159136ba233902e (patch)
tree435510cde28558b799fef748fbd495442ed8b490 /Graphics
parentUpdated shader C interface; added test. (diff)
downloadDiligentCore-d066eca3eb7d60701a3cd5dc9159136ba233902e.tar.gz
DiligentCore-d066eca3eb7d60701a3cd5dc9159136ba233902e.zip
Reworked IShaderResourceVariable::GetResourceDesc() method to be compatible with C
Diffstat (limited to 'Graphics')
-rw-r--r--Graphics/GraphicsEngine/interface/ShaderResourceVariable.h19
-rw-r--r--Graphics/GraphicsEngineD3D12/include/ShaderVariableD3D12.h4
-rw-r--r--Graphics/GraphicsEngineD3DBase/include/ShaderVariableD3DBase.h4
-rw-r--r--Graphics/GraphicsEngineOpenGL/include/GLPipelineResourceLayout.h4
-rw-r--r--Graphics/GraphicsEngineVulkan/include/ShaderVariableVk.h4
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