summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/src/shader_dxbc.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/src/shader_dxbc.h')
-rw-r--r--3rdparty/bgfx/src/shader_dxbc.h101
1 files changed, 100 insertions, 1 deletions
diff --git a/3rdparty/bgfx/src/shader_dxbc.h b/3rdparty/bgfx/src/shader_dxbc.h
index df87d7443a7..ba0e2862a39 100644
--- a/3rdparty/bgfx/src/shader_dxbc.h
+++ b/3rdparty/bgfx/src/shader_dxbc.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2018 Branimir Karadzic. All rights reserved.
+ * Copyright 2011-2022 Branimir Karadzic. All rights reserved.
* License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
*/
@@ -326,6 +326,72 @@ namespace bgfx
};
};
+ struct DxbcPrimitiveTopology
+ {
+ enum Enum
+ {
+ Unknown,
+ PointList,
+ LineList,
+ LineStrip,
+ TriangleList,
+ TriangleStrip,
+ LineListAdj = 10,
+ LineStripAdj,
+ TriangleListAdj,
+ TriangleStripAdj,
+
+ Count
+ };
+ };
+
+ struct DxbcPrimitive
+ {
+ enum Enum
+ {
+ Unknown,
+ Point,
+ Line,
+ Triangle,
+ LineAdj = 6,
+ TriangleAdj,
+ _1ControlPointPatch,
+ _2ControlPointPatch,
+ _3ControlPointPatch,
+ _4ControlPointPatch,
+ _5ControlPointPatch,
+ _6ControlPointPatch,
+ _7ControlPointPatch,
+ _8ControlPointPatch,
+ _9ControlPointPatch,
+ _10ControlPointPatch,
+ _11ControlPointPatch,
+ _12ControlPointPatch,
+ _13ControlPointPatch,
+ _14ControlPointPatch,
+ _15ControlPointPatch,
+ _16ControlPointPatch,
+ _17ControlPointPatch,
+ _18ControlPointPatch,
+ _19ControlPointPatch,
+ _20ControlPointPatch,
+ _21ControlPointPatch,
+ _22ControlPointPatch,
+ _23ControlPointPatch,
+ _24ControlPointPatch,
+ _25ControlPointPatch,
+ _26ControlPointPatch,
+ _27ControlPointPatch,
+ _28ControlPointPatch,
+ _29ControlPointPatch,
+ _30ControlPointPatch,
+ _31ControlPointPatch,
+ _32ControlPointPatch,
+
+ Count
+ };
+ };
+
struct DxbcResourceReturnType
{
enum Enum
@@ -562,6 +628,12 @@ namespace bgfx
DxbcInterpolation::Enum interpolation;
//
+ DxbcPrimitiveTopology::Enum primitiveTopology;
+
+ //
+ DxbcPrimitive::Enum primitive;
+
+ //
bool shadow;
bool mono;
@@ -633,6 +705,26 @@ namespace bgfx
bool aon9;
};
+ struct DxbcSFI0
+ {
+ uint64_t data;
+ };
+
+ struct DxbcSPDB
+ {
+ stl::vector<uint8_t> debugCode;
+ };
+
+ struct DxbcRDEF
+ {
+ stl::vector<uint8_t> rdefCode;
+ };
+
+ struct DxbcSTAT
+ {
+ stl::vector<uint8_t> statCode;
+ };
+
int32_t read(bx::ReaderSeekerI* _reader, DxbcShader& _shader, bx::Error* _err);
int32_t write(bx::WriterI* _writer, const DxbcShader& _shader, bx::Error* _err);
@@ -642,6 +734,8 @@ namespace bgfx
typedef void (*DxbcFilterFn)(DxbcInstruction& _instruction, void* _userData);
void filter(DxbcShader& _dst, const DxbcShader& _src, DxbcFilterFn _fn, void* _userData, bx::Error* _err = NULL);
+#define DXBC_MAX_CHUNKS 32
+
struct DxbcContext
{
struct Header
@@ -657,6 +751,11 @@ namespace bgfx
DxbcSignature inputSignature;
DxbcSignature outputSignature;
DxbcShader shader;
+ DxbcSFI0 sfi0;
+ DxbcSPDB spdb;
+ DxbcRDEF rdef;
+ DxbcSTAT stat;
+ uint32_t chunksFourcc[DXBC_MAX_CHUNKS];
};
int32_t read(bx::ReaderSeekerI* _reader, DxbcContext& _dxbc, bx::Error* _err);