summaryrefslogtreecommitdiffstats
path: root/Graphics/GraphicsEngineD3DBase
diff options
context:
space:
mode:
Diffstat (limited to 'Graphics/GraphicsEngineD3DBase')
-rw-r--r--Graphics/GraphicsEngineD3DBase/include/D3DCommonTypeConversions.hpp3
-rw-r--r--Graphics/GraphicsEngineD3DBase/src/D3DCommonTypeConversions.cpp60
2 files changed, 62 insertions, 1 deletions
diff --git a/Graphics/GraphicsEngineD3DBase/include/D3DCommonTypeConversions.hpp b/Graphics/GraphicsEngineD3DBase/include/D3DCommonTypeConversions.hpp
index 1432dffc..f9db0fc3 100644
--- a/Graphics/GraphicsEngineD3DBase/include/D3DCommonTypeConversions.hpp
+++ b/Graphics/GraphicsEngineD3DBase/include/D3DCommonTypeConversions.hpp
@@ -31,10 +31,13 @@
/// Common D3D type conversions
#include "GraphicsTypes.h"
+#include "PipelineResourceSignature.h"
namespace Diligent
{
RESOURCE_DIMENSION D3DSrvDimensionToResourceDimension(D3D_SRV_DIMENSION SrvDim);
+void GetShaderResourceTypeAndFlags(const struct D3DShaderResourceAttribs& Attribs, SHADER_RESOURCE_TYPE& OutType, PIPELINE_RESOURCE_FLAGS& OutFlags);
+
} // namespace Diligent
diff --git a/Graphics/GraphicsEngineD3DBase/src/D3DCommonTypeConversions.cpp b/Graphics/GraphicsEngineD3DBase/src/D3DCommonTypeConversions.cpp
index fb5fa24f..5f8bf910 100644
--- a/Graphics/GraphicsEngineD3DBase/src/D3DCommonTypeConversions.cpp
+++ b/Graphics/GraphicsEngineD3DBase/src/D3DCommonTypeConversions.cpp
@@ -25,8 +25,9 @@
* of the possibility of such damages.
*/
-#include <d3dcommon.h>
+#include "ShaderResources.hpp"
#include "D3DCommonTypeConversions.hpp"
+#include <d3dcommon.h>
namespace Diligent
{
@@ -52,4 +53,61 @@ RESOURCE_DIMENSION D3DSrvDimensionToResourceDimension(D3D_SRV_DIMENSION SrvDim)
}
}
+void GetShaderResourceTypeAndFlags(const D3DShaderResourceAttribs& Attribs,
+ SHADER_RESOURCE_TYPE& OutType,
+ PIPELINE_RESOURCE_FLAGS& OutFlags)
+{
+ OutFlags = PIPELINE_RESOURCE_FLAG_UNKNOWN;
+
+ switch (int{Attribs.GetInputType()})
+ {
+ case D3D_SIT_CBUFFER:
+ OutType = SHADER_RESOURCE_TYPE_CONSTANT_BUFFER;
+ break;
+ case D3D_SIT_TBUFFER:
+ UNSUPPORTED("TBuffers are not supported");
+ OutType = SHADER_RESOURCE_TYPE_TEXTURE_SRV;
+ break;
+ case D3D_SIT_TEXTURE:
+ if (Attribs.GetSRVDimension() == D3D_SRV_DIMENSION_BUFFER)
+ {
+ OutType = SHADER_RESOURCE_TYPE_BUFFER_SRV;
+ OutFlags = PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER;
+ }
+ else
+ OutType = SHADER_RESOURCE_TYPE_TEXTURE_SRV;
+ break;
+ case D3D_SIT_SAMPLER:
+ OutType = SHADER_RESOURCE_TYPE_SAMPLER;
+ break;
+ case D3D_SIT_UAV_RWTYPED:
+ if (Attribs.GetSRVDimension() == D3D_SRV_DIMENSION_BUFFER)
+ {
+ OutType = SHADER_RESOURCE_TYPE_BUFFER_UAV;
+ OutFlags = PIPELINE_RESOURCE_FLAG_FORMATTED_BUFFER;
+ }
+ else
+ OutType = SHADER_RESOURCE_TYPE_TEXTURE_UAV;
+ break;
+ case D3D_SIT_STRUCTURED:
+ case D3D_SIT_BYTEADDRESS:
+ OutType = SHADER_RESOURCE_TYPE_BUFFER_SRV;
+ break;
+ case D3D_SIT_UAV_RWSTRUCTURED:
+ case D3D_SIT_UAV_RWBYTEADDRESS:
+ case D3D_SIT_UAV_APPEND_STRUCTURED:
+ case D3D_SIT_UAV_CONSUME_STRUCTURED:
+ case D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER:
+ OutType = SHADER_RESOURCE_TYPE_BUFFER_UAV;
+ break;
+ case D3D_SIT_RTACCELERATIONSTRUCTURE:
+ OutType = SHADER_RESOURCE_TYPE_ACCEL_STRUCT;
+ break;
+ default:
+ UNEXPECTED("Unknown HLSL resource type");
+ OutType = SHADER_RESOURCE_TYPE_UNKNOWN;
+ break;
+ }
+}
+
} // namespace Diligent