summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorassiduous <assiduous@diligentgraphics.com>2020-01-28 18:55:06 +0000
committerassiduous <assiduous@diligentgraphics.com>2020-01-28 18:55:06 +0000
commitf3db428efac051ff89bed1703d3c2ab3d3a69ffb (patch)
tree01e46c7494f9315d5d6c78bdc322149f17ee92aa
parentReworked C inteface method calls to use CALL_IFACE_METHOD macro (diff)
downloadDiligentCore-f3db428efac051ff89bed1703d3c2ab3d3a69ffb.tar.gz
DiligentCore-f3db428efac051ff89bed1703d3c2ab3d3a69ffb.zip
Implemented IShaderD3D C interface.
Closed https://github.com/DiligentGraphics/DiligentCore/issues/55
-rw-r--r--Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h1
-rw-r--r--Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h1
-rw-r--r--Graphics/GraphicsEngineD3DBase/interface/ShaderD3D.h37
-rw-r--r--Tests/IncludeTest/GraphicsEngineD3DBase/ShaderD3DH_test.c33
4 files changed, 67 insertions, 5 deletions
diff --git a/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h b/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h
index 29d8345d..4a68af4a 100644
--- a/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h
+++ b/Graphics/GraphicsEngineD3D11/interface/ShaderD3D11.h
@@ -60,6 +60,7 @@ struct IShaderD3D11Vtbl
struct IObjectMethods Object;
struct IDeviceObjectMethods DeviceObject;
struct IShaderMethods Shader;
+ struct IShaderD3DMethods ShaderD3D;
struct IShaderD3D11Methods ShaderD3D11;
};
diff --git a/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h b/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h
index 65c8e32f..2027e0cd 100644
--- a/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h
+++ b/Graphics/GraphicsEngineD3D12/interface/ShaderD3D12.h
@@ -63,6 +63,7 @@ struct IShaderD3D12Vtbl
struct IObjectMethods Object;
struct IDeviceObjectMethods DeviceObject;
struct IShaderMethods Shader;
+ struct IShaderD3DMethods ShaderD3D;
//struct IShaderD3D12Methods ShaderD3D12;
};
diff --git a/Graphics/GraphicsEngineD3DBase/interface/ShaderD3D.h b/Graphics/GraphicsEngineD3DBase/interface/ShaderD3D.h
index f64ba232..b5ef72b9 100644
--- a/Graphics/GraphicsEngineD3DBase/interface/ShaderD3D.h
+++ b/Graphics/GraphicsEngineD3DBase/interface/ShaderD3D.h
@@ -47,20 +47,47 @@ struct HLSLShaderResourceDesc DILIGENT_DERIVE(ShaderResourceDesc)
Uint32 ShaderRegister DEFAULT_INITIALIZER(0);
};
+typedef struct HLSLShaderResourceDesc HLSLShaderResourceDesc;
// clang-format on
-#if DILIGENT_CPP_INTERFACE
+#define DILIGENT_INTERFACE_NAME IShaderD3D
+#include "../../../Primitives/interface/DefineInterfaceHelperMacros.h"
+
+// clang-format off
/// Exposes Direct3D-specific functionality of a shader object.
-class IShaderD3D : public IShader
+DILIGENT_INTERFACE(IShaderD3D, IShader)
{
-public:
/// Returns HLSL shader resource description
- virtual void GetHLSLResource(Uint32 Index, HLSLShaderResourceDesc& ResourceDesc) const = 0;
+ VIRTUAL void METHOD(GetHLSLResource)(THIS_
+ Uint32 Index,
+ HLSLShaderResourceDesc REF ResourceDesc) CONST PURE;
};
-#else
+#include "../../../Primitives/interface/UndefInterfaceHelperMacros.h"
+
+#if DILIGENT_C_INTERFACE
+
+// clang-format on
+
+struct IShaderD3DVtbl
+{
+ struct IObjectMethods Object;
+ struct IDeviceObjectMethods DeviceObject;
+ struct IShaderD3DMethods ShaderD3D;
+};
+
+typedef struct IShaderD3D
+{
+ struct IShaderD3DVtbl* pVtbl;
+} IShaderD3D;
+
+// clang-format off
+
+# define IShaderD3D_GetHLSLResource(This, ...) CALL_IFACE_METHOD(ShaderD3D, GetHLSLResource, This, __VA_ARGS__)
+
+// clang-format on
#endif
diff --git a/Tests/IncludeTest/GraphicsEngineD3DBase/ShaderD3DH_test.c b/Tests/IncludeTest/GraphicsEngineD3DBase/ShaderD3DH_test.c
new file mode 100644
index 00000000..0b4b06b4
--- /dev/null
+++ b/Tests/IncludeTest/GraphicsEngineD3DBase/ShaderD3DH_test.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2019-2020 Diligent Graphics LLC
+ * Copyright 2015-2019 Egor Yusov
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * In no event and under no legal theory, whether in tort (including negligence),
+ * contract, or otherwise, unless required by applicable law (such as deliberate
+ * and grossly negligent acts) or agreed to in writing, shall any Contributor be
+ * liable for any damages, including any direct, indirect, special, incidental,
+ * or consequential damages of any character arising as a result of this License or
+ * out of the use or inability to use the software (including but not limited to damages
+ * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
+ * all other commercial damages or losses), even if such Contributor has been advised
+ * of the possibility of such damages.
+ */
+
+#include "DiligentCore/Graphics/GraphicsEngineD3DBase/interface/ShaderD3D.h"
+
+void TestShaderD3D_CInterface(IShaderD3D* pShaderD3D)
+{
+ IShaderD3D_GetHLSLResource(pShaderD3D, 0, (HLSLShaderResourceDesc*)NULL);
+}