Browse Source

Merge pull request #2344 from Hyp-X/pr-more-shader-reflection

Add d3d12shader missing types and UUID's
gingerBill 2 years ago
parent
commit
d9b590c76e
1 changed files with 86 additions and 14 deletions
  1. 86 14
      vendor/directx/d3d12/d3d12.odin

+ 86 - 14
vendor/directx/d3d12/d3d12.odin

@@ -4928,16 +4928,40 @@ IGraphicsCommandList6_VTable :: struct {
 	DispatchMesh: proc "stdcall" (this: ^IGraphicsCommandList6, ThreadGroupCountX: u32, ThreadGroupCountY: u32, ThreadGroupCountZ: u32),
 	DispatchMesh: proc "stdcall" (this: ^IGraphicsCommandList6, ThreadGroupCountX: u32, ThreadGroupCountY: u32, ThreadGroupCountZ: u32),
 }
 }
 
 
-SHADER_VERSION_TYPE :: enum i32 {
-	PIXEL_SHADER    = 0,
-	VERTEX_SHADER   = 1,
-	GEOMETRY_SHADER = 2,
+SHADER_VERSION_TYPE :: enum u32 {
+	PIXEL_SHADER          = 0,
+	VERTEX_SHADER         = 1,
+	GEOMETRY_SHADER       = 2,    
 
 
-	HULL_SHADER     = 3,
-	DOMAIN_SHADER   = 4,
-	COMPUTE_SHADER  = 5,
+	HULL_SHADER           = 3,
+	DOMAIN_SHADER         = 4,
+	COMPUTE_SHADER        = 5,
 
 
-	RESERVED0       = 65520,
+	LIBRARY               = 6,
+
+	RAY_GENERATION_SHADER = 7,
+	INTERSECTION_SHADER   = 8,
+	ANY_HIT_SHADER        = 9,
+	CLOSEST_HIT_SHADER    = 10,
+	MISS_SHADER           = 11,
+	CALLABLE_SHADER       = 12,
+
+	MESH_SHADER           = 13,
+	AMPLIFICATION_SHADER  = 14,
+
+	RESERVED0             = 0xFFF0,
+}
+
+shver_get_type :: proc "contextless" (version: u32) -> SHADER_VERSION_TYPE {
+	return SHADER_VERSION_TYPE((version >> 16) & 0xffff)
+}
+
+shver_get_major :: proc "contextless" (version: u32) -> u8 {
+	return u8((version >> 4) & 0xf)
+}
+
+shver_get_minor :: proc "contextless" (version: u32) -> u8 {
+	return u8((version >> 0) & 0xf)
 }
 }
 
 
 SIGNATURE_PARAMETER_DESC :: struct {
 SIGNATURE_PARAMETER_DESC :: struct {
@@ -4984,6 +5008,7 @@ SHADER_TYPE_DESC :: struct {
 	Offset:   u32,
 	Offset:   u32,
 	Name:     cstring,
 	Name:     cstring,
 }
 }
+
 SHADER_DESC :: struct {
 SHADER_DESC :: struct {
 	Version:                     u32,
 	Version:                     u32,
 	Creator:                     cstring,
 	Creator:                     cstring,
@@ -5042,6 +5067,39 @@ SHADER_INPUT_BIND_DESC :: struct {
 	uID:        u32,
 	uID:        u32,
 }
 }
 
 
+SHADER_REQUIRES_FLAGS :: distinct bit_set[SHADER_REQUIRES; u64]
+SHADER_REQUIRES :: enum u64 {
+	DOUBLES                                                        = 0,
+	EARLY_DEPTH_STENCIL                                            = 1,
+	UAVS_AT_EVERY_STAGE                                            = 2,
+	_64_UAVS                                                       = 3,
+	MINIMUM_PRECISION                                              = 4,
+	_11_1_DOUBLE_EXTENSIONS                                        = 5,
+	_11_1_SHADER_EXTENSIONS                                        = 6,
+	LEVEL_9_COMPARISON_FILTERING                                   = 7,
+	TILED_RESOURCES                                                = 8,
+	STENCIL_REF                                                    = 9,
+	INNER_COVERAGE                                                 = 10,
+	TYPED_UAV_LOAD_ADDITIONAL_FORMATS                              = 11,
+	ROVS                                                           = 12,
+	VIEWPORT_AND_RT_ARRAY_INDEX_FROM_ANY_SHADER_FEEDING_RASTERIZER = 13,
+	WAVE_OPS                                                       = 14,
+	INT64_OPS                                                      = 15,
+	VIEW_ID                                                        = 16,
+	BARYCENTRICS                                                   = 17,
+	NATIVE_16BIT_OPS                                               = 18,
+	SHADING_RATE                                                   = 19,
+	RAYTRACING_TIER_1_1                                            = 20,
+	SAMPLER_FEEDBACK                                               = 21,
+	ATOMIC_INT64_ON_TYPED_RESOURCE                                 = 22,
+	ATOMIC_INT64_ON_GROUP_SHARED                                   = 23,
+	DERIVATIVES_IN_MESH_AND_AMPLIFICATION_SHADERS                  = 24,
+	RESOURCE_DESCRIPTOR_HEAP_INDEXING                              = 25,
+	SAMPLER_DESCRIPTOR_HEAP_INDEXING                               = 26,
+	WAVE_MMA                                                       = 27,
+	ATOMIC_INT64_ON_DESCRIPTOR_HEAP_RESOURCE                       = 28,
+}
+
 LIBRARY_DESC :: struct {
 LIBRARY_DESC :: struct {
 	Creator:       cstring,
 	Creator:       cstring,
 	Flags:         u32,
 	Flags:         u32,
@@ -5103,8 +5161,10 @@ PARAMETER_DESC :: struct {
 	FirstOutComponent: u32,
 	FirstOutComponent: u32,
 }
 }
 
 
+IShaderReflectionType_UUID_STRING :: "E913C351-783D-48CA-A1D1-4F306284AD56"
+IShaderReflectionType_UUID := &IID{0xE913C351, 0x783D, 0x48CA, {0xA1, 0xD1, 0x4F, 0x30, 0x62, 0x84, 0xAD, 0x56}}
 IShaderReflectionType :: struct {
 IShaderReflectionType :: struct {
-	using vtable: ^IShaderReflectionType_VTable,
+	using id3d12shaderreflectiontype_vtable: ^IShaderReflectionType_VTable,
 }
 }
 IShaderReflectionType_VTable :: struct {
 IShaderReflectionType_VTable :: struct {
 	GetDesc:              proc "stdcall" (this: ^IShaderReflectionType, pDesc: ^SHADER_TYPE_DESC) -> HRESULT,
 	GetDesc:              proc "stdcall" (this: ^IShaderReflectionType, pDesc: ^SHADER_TYPE_DESC) -> HRESULT,
@@ -5120,8 +5180,10 @@ IShaderReflectionType_VTable :: struct {
 	ImplementsInterface:  proc "stdcall" (this: ^IShaderReflectionType, pBase: ^IShaderReflectionType) -> HRESULT,
 	ImplementsInterface:  proc "stdcall" (this: ^IShaderReflectionType, pBase: ^IShaderReflectionType) -> HRESULT,
 }
 }
 
 
+IShaderReflectionVariable_UUID_STRING :: "8337A8A6-A216-444A-B2F4-314733A73AEA"
+IShaderReflectionVariable_UUID := &IID{0x8337A8A6, 0xA216, 0x444A, {0xB2, 0xF4, 0x31, 0x47, 0x33, 0xA7, 0x3A, 0xEA}}
 IShaderReflectionVariable :: struct {
 IShaderReflectionVariable :: struct {
-	using vtable: ^IShaderReflectionVariable_VTable,
+	using id3d12shaderreflectionvariable_vtable: ^IShaderReflectionVariable_VTable,
 }
 }
 IShaderReflectionVariable_VTable :: struct {
 IShaderReflectionVariable_VTable :: struct {
 	GetDesc:          proc "stdcall" (this: ^IShaderReflectionVariable, pDesc: ^SHADER_VARIABLE_DESC) -> HRESULT,
 	GetDesc:          proc "stdcall" (this: ^IShaderReflectionVariable, pDesc: ^SHADER_VARIABLE_DESC) -> HRESULT,
@@ -5130,8 +5192,10 @@ IShaderReflectionVariable_VTable :: struct {
 	GetInterfaceSlot: proc "stdcall" (this: ^IShaderReflectionVariable, uArrayIndex: u32) -> u32,
 	GetInterfaceSlot: proc "stdcall" (this: ^IShaderReflectionVariable, uArrayIndex: u32) -> u32,
 }
 }
 
 
+IShaderReflectionConstantBuffer_UUID_STRING :: "C59598B4-48B3-4869-B9B1-B1618B14A8B7"
+IShaderReflectionConstantBuffer_UUID := &IID{0xC59598B4, 0x48B3, 0x4869, {0xB9, 0xB1, 0xB1, 0x61, 0x8B, 0x14, 0xA8, 0xB7}}
 IShaderReflectionConstantBuffer :: struct {
 IShaderReflectionConstantBuffer :: struct {
-	using vtable: ^IShaderReflectionConstantBuffer_VTable,
+	using id3d12shaderreflectionconstantbuffer_vtable: ^IShaderReflectionConstantBuffer_VTable,
 }
 }
 IShaderReflectionConstantBuffer_VTable :: struct {
 IShaderReflectionConstantBuffer_VTable :: struct {
 	GetDesc:            proc "stdcall" (this: ^IShaderReflectionConstantBuffer, pDesc: ^SHADER_BUFFER_DESC) -> HRESULT,
 	GetDesc:            proc "stdcall" (this: ^IShaderReflectionConstantBuffer, pDesc: ^SHADER_BUFFER_DESC) -> HRESULT,
@@ -5139,6 +5203,8 @@ IShaderReflectionConstantBuffer_VTable :: struct {
 	GetVariableByName:  proc "stdcall" (this: ^IShaderReflectionConstantBuffer, Name: cstring) -> ^IShaderReflectionVariable,
 	GetVariableByName:  proc "stdcall" (this: ^IShaderReflectionConstantBuffer, Name: cstring) -> ^IShaderReflectionVariable,
 }
 }
 
 
+IShaderReflection_UUID_STRING :: "5A58797D-A72C-478D-8BA2-EFC6B0EFE88E"
+IShaderReflection_UUID := &IID{0x5A58797D, 0xA72C, 0x478D, {0x8B, 0xA2, 0xEF, 0xC6, 0xB0, 0xEF, 0xE8, 0x8E}}
 IShaderReflection :: struct #raw_union {
 IShaderReflection :: struct #raw_union {
 	#subtype iunknown: IUnknown,
 	#subtype iunknown: IUnknown,
 	using id3d12shaderreflection_vtable: ^IShaderReflection_VTable,
 	using id3d12shaderreflection_vtable: ^IShaderReflection_VTable,
@@ -5163,9 +5229,11 @@ IShaderReflection_VTable :: struct {
 	GetNumInterfaceSlots:          proc "stdcall" (this: ^IShaderReflection) -> u32,
 	GetNumInterfaceSlots:          proc "stdcall" (this: ^IShaderReflection) -> u32,
 	GetMinFeatureLevel:            proc "stdcall" (this: ^IShaderReflection, pLevel: ^FEATURE_LEVEL) -> HRESULT,
 	GetMinFeatureLevel:            proc "stdcall" (this: ^IShaderReflection, pLevel: ^FEATURE_LEVEL) -> HRESULT,
 	GetThreadGroupSize:            proc "stdcall" (this: ^IShaderReflection, pSizeX: ^u32, pSizeY: ^u32, pSizeZ: ^u32) -> u32,
 	GetThreadGroupSize:            proc "stdcall" (this: ^IShaderReflection, pSizeX: ^u32, pSizeY: ^u32, pSizeZ: ^u32) -> u32,
-	GetRequiresFlags:              proc "stdcall" (this: ^IShaderReflection) -> u64,
+	GetRequiresFlags:              proc "stdcall" (this: ^IShaderReflection) -> SHADER_REQUIRES_FLAGS,
 }
 }
 
 
+ILibraryReflection_UUID_STRING :: "8E349D19-54DB-4A56-9DC9-119D87BDB804"
+ILibraryReflection_UUID := &IID{0x8E349D19, 0x54DB, 0x4A56, {0x9D, 0xC9, 0x11, 0x9D, 0x87, 0xBD, 0xB8, 0x04}}
 ILibraryReflection :: struct #raw_union {
 ILibraryReflection :: struct #raw_union {
 	#subtype iunknown: IUnknown,
 	#subtype iunknown: IUnknown,
 	using id3d12libraryreflection_vtable: ^ILibraryReflection_VTable,
 	using id3d12libraryreflection_vtable: ^ILibraryReflection_VTable,
@@ -5176,8 +5244,10 @@ ILibraryReflection_VTable :: struct {
 	GetFunctionByIndex: proc "stdcall" (this: ^ILibraryReflection, FunctionIndex: i32) -> ^IFunctionReflection,
 	GetFunctionByIndex: proc "stdcall" (this: ^ILibraryReflection, FunctionIndex: i32) -> ^IFunctionReflection,
 }
 }
 
 
+IFunctionReflection_UUID_STRING :: "1108795C-2772-4BA9-B2A8-D464DC7E2799"
+IFunctionReflection_UUID := &IID{0x1108795C, 0x2772, 0x4BA9, {0xB2, 0xA8, 0xD4, 0x64, 0xDC, 0x7E, 0x27, 0x99}}
 IFunctionReflection :: struct {
 IFunctionReflection :: struct {
-	vtable: ^IFunctionReflection_VTable,
+	using id3d12functionreflection_vtable: ^IFunctionReflection_VTable,
 }
 }
 IFunctionReflection_VTable :: struct {
 IFunctionReflection_VTable :: struct {
 	GetDesc:                      proc "stdcall" (this: ^IFunctionReflection, pDesc: ^FUNCTION_DESC) -> HRESULT,
 	GetDesc:                      proc "stdcall" (this: ^IFunctionReflection, pDesc: ^FUNCTION_DESC) -> HRESULT,
@@ -5189,8 +5259,10 @@ IFunctionReflection_VTable :: struct {
 	GetFunctionParameter:         proc "stdcall" (this: ^IFunctionReflection, ParameterIndex: i32) -> ^IFunctionParameterReflection,
 	GetFunctionParameter:         proc "stdcall" (this: ^IFunctionReflection, ParameterIndex: i32) -> ^IFunctionParameterReflection,
 }
 }
 
 
+IFunctionParameterReflection_UUID_STRING :: "EC25F42D-7006-4F2B-B33E-02CC3375733F"
+IFunctionParameterReflection_UUID := &IID{0xEC25F42D, 0x7006, 0x4F2B, {0xB3, 0x3E, 0x2, 0xCC, 0x33, 0x75, 0x73, 0x3F}}
 IFunctionParameterReflection :: struct {
 IFunctionParameterReflection :: struct {
-	vtable: ^IFunctionParameterReflection_VTable,
+	using id3d12functionparameterreflection_vtable: ^IFunctionParameterReflection_VTable,
 }
 }
 IFunctionParameterReflection_VTable :: struct {
 IFunctionParameterReflection_VTable :: struct {
 	GetDesc: proc "stdcall" (this: ^IFunctionParameterReflection, pDesc: ^PARAMETER_DESC) -> HRESULT,
 	GetDesc: proc "stdcall" (this: ^IFunctionParameterReflection, pDesc: ^PARAMETER_DESC) -> HRESULT,