23#include "wine/winternl.h"
33#define D3DCOMPILER_SHADER_TARGET_VERSION_MASK 0xffff
34#define D3DCOMPILER_SHADER_TARGET_SHADERTYPE_MASK 0xffff0000
169 ERR(
"Failed to allocate name memory.\n");
185 ERR(
"Failed to allocate value memory.\n");
215 TRACE(
"reflection type %p.\n",
t);
219 for (
i = 0;
i <
t->desc.Members; ++
i)
232 TRACE(
"Free signature %p\n", sig);
253 for (
i = 0;
i <
cb->variable_count; ++
i)
285 if (
ref->constant_buffers)
289 for (
i = 0;
i <
ref->constant_buffer_count; ++
i)
316 IUnknown_AddRef(iface);
359 FIXME(
"iface %p, desc %p partial stub!\n", iface,
desc);
363 WARN(
"Invalid argument specified\n");
370 desc->ConstantBuffers =
This->constant_buffer_count;
371 desc->BoundResources =
This->bound_resource_count;
372 desc->InputParameters =
This->isgn ?
This->isgn->element_count : 0;
373 desc->OutputParameters =
This->osgn ?
This->osgn->element_count : 0;
374 desc->InstructionCount =
This->instruction_count;
375 desc->TempRegisterCount =
This->temp_register_count;
376 desc->TempArrayCount =
This->temp_array_count;
379 desc->TextureNormalInstructions =
This->texture_normal_instructions;
380 desc->TextureLoadInstructions =
This->texture_load_instructions;
381 desc->TextureCompInstructions =
This->texture_comp_instructions;
382 desc->TextureBiasInstructions =
This->texture_bias_instructions;
383 desc->TextureGradientInstructions =
This->texture_gradient_instructions;
384 desc->FloatInstructionCount =
This->float_instruction_count;
385 desc->IntInstructionCount =
This->int_instruction_count;
386 desc->UintInstructionCount =
This->uint_instruction_count;
387 desc->StaticFlowControlCount =
This->static_flow_control_count;
388 desc->DynamicFlowControlCount =
This->dynamic_flow_control_count;
389 desc->MacroInstructionCount = 0;
390 desc->ArrayInstructionCount =
This->array_instruction_count;
391 desc->CutInstructionCount =
This->cut_instruction_count;
392 desc->EmitInstructionCount =
This->emit_instruction_count;
393 desc->GSOutputTopology =
This->gs_output_topology;
394 desc->GSMaxOutputVertexCount =
This->gs_max_output_vertex_count;
395 desc->InputPrimitive =
This->input_primitive;
396 desc->PatchConstantParameters =
This->pcsg ?
This->pcsg->element_count : 0;
397 desc->cGSInstanceCount = 0;
398 desc->cControlPoints =
This->c_control_points;
399 desc->HSOutputPrimitive =
This->hs_output_primitive;
400 desc->HSPartitioning =
This->hs_prtitioning;
401 desc->TessellatorDomain =
This->tessellator_domain;
402 desc->cBarrierInstructions = 0;
403 desc->cInterlockedInstructions = 0;
404 desc->cTextureStoreInstructions = 0;
410 ID3D11ShaderReflection *iface,
UINT index)
416 if (
index >=
This->constant_buffer_count)
418 WARN(
"Invalid argument specified\n");
422 return &
This->constant_buffers[
index].ID3D11ShaderReflectionConstantBuffer_iface;
426 ID3D11ShaderReflection *iface,
const char *
name)
435 WARN(
"Invalid argument specified\n");
439 for (
i = 0;
i <
This->constant_buffer_count; ++
i)
445 TRACE(
"Returning ID3D11ShaderReflectionConstantBuffer %p.\n",
d);
446 return &
d->ID3D11ShaderReflectionConstantBuffer_iface;
450 WARN(
"Invalid name specified\n");
464 WARN(
"Invalid argument specified\n");
482 WARN(
"Invalid argument specified\n");
500 WARN(
"Invalid argument specified\n");
518 WARN(
"Invalid argument specified\n");
528 ID3D11ShaderReflection *iface,
const char *
name)
537 WARN(
"Invalid name specified\n");
541 for (
i = 0;
i <
This->constant_buffer_count; ++
i)
545 for (
k = 0;
k <
cb->variable_count; ++
k)
551 TRACE(
"Returning ID3D11ShaderReflectionVariable %p.\n",
v);
552 return &
v->ID3D11ShaderReflectionVariable_iface;
557 WARN(
"Invalid name specified\n");
572 WARN(
"Invalid argument specified\n");
576 for (
i = 0;
i <
This->bound_resource_count; ++
i)
582 TRACE(
"Returning D3D11_SHADER_INPUT_BIND_DESC %p.\n",
d);
588 WARN(
"Invalid name specified\n");
594 ID3D11ShaderReflection *iface)
598 TRACE(
"iface %p\n", iface);
600 return This->mov_instruction_count;
604 ID3D11ShaderReflection *iface)
606 FIXME(
"iface %p stub!\n", iface);
612 ID3D11ShaderReflection *iface)
616 TRACE(
"iface %p\n", iface);
618 return This->conversion_instruction_count;
622 ID3D11ShaderReflection *iface)
624 FIXME(
"iface %p stub!\n", iface);
630 ID3D11ShaderReflection *iface)
632 FIXME(
"iface %p stub!\n", iface);
638 ID3D11ShaderReflection *iface)
640 FIXME(
"iface %p stub!\n", iface);
646 ID3D11ShaderReflection *iface)
648 FIXME(
"iface %p stub!\n", iface);
656 FIXME(
"iface %p, level %p stub!\n", iface,
level);
662 ID3D11ShaderReflection *iface,
UINT *sizex,
UINT *sizey,
UINT *sizez)
664 FIXME(
"iface %p, sizex %p, sizey %p, sizez %p stub!\n", iface, sizex, sizey, sizez);
670 ID3D11ShaderReflection *iface)
672 FIXME(
"iface %p stub!\n", iface);
717 TRACE(
"iface %p, desc %p\n", iface,
desc);
721 WARN(
"Null constant buffer specified\n");
727 WARN(
"Invalid argument specified\n");
733 desc->Variables =
This->variable_count;
741 ID3D11ShaderReflectionConstantBuffer *iface,
UINT index)
749 WARN(
"Invalid index specified\n");
753 return &
This->variables[
index].ID3D11ShaderReflectionVariable_iface;
757 ID3D11ShaderReflectionConstantBuffer *iface,
const char *
name)
766 WARN(
"Invalid argument specified\n");
770 for (
i = 0;
i <
This->variable_count; ++
i)
776 TRACE(
"Returning ID3D11ShaderReflectionVariable %p.\n",
v);
777 return &
v->ID3D11ShaderReflectionVariable_iface;
781 WARN(
"Invalid name specified\n");
806 TRACE(
"iface %p, desc %p\n", iface,
desc);
810 WARN(
"Null variable specified\n");
816 WARN(
"Invalid argument specified\n");
821 desc->StartOffset =
This->start_offset;
824 desc->DefaultValue =
This->default_value;
830 ID3D11ShaderReflectionVariable *iface)
834 TRACE(
"iface %p\n", iface);
836 return &
This->type->ID3D11ShaderReflectionType_iface;
840 ID3D11ShaderReflectionVariable *iface)
844 TRACE(
"iface %p\n", iface);
846 return &
This->constant_buffer->ID3D11ShaderReflectionConstantBuffer_iface;
850 ID3D11ShaderReflectionVariable *iface,
UINT index)
852 FIXME(
"iface %p, index %u stub!\n", iface,
index);
878 TRACE(
"iface %p, desc %p\n", iface,
desc);
882 WARN(
"Null type specified\n");
888 WARN(
"Invalid argument specified\n");
898 ID3D11ShaderReflectionType *iface,
UINT index)
906 WARN(
"Invalid index specified\n");
907 return &
null_type.ID3D11ShaderReflectionType_iface;
910 return &
This->members[
index].type->ID3D11ShaderReflectionType_iface;
914 ID3D11ShaderReflectionType *iface,
const char *
name)
923 WARN(
"Invalid argument specified\n");
924 return &
null_type.ID3D11ShaderReflectionType_iface;
927 for (
i = 0;
i <
This->desc.Members; ++
i)
934 return &
member->
type->ID3D11ShaderReflectionType_iface;
938 WARN(
"Invalid name specified\n");
940 return &
null_type.ID3D11ShaderReflectionType_iface;
944 ID3D11ShaderReflectionType *iface,
UINT index)
952 WARN(
"Null type specified\n");
958 WARN(
"Invalid index specified\n");
966 ID3D11ShaderReflectionType *iface, ID3D11ShaderReflectionType *
type)
970 TRACE(
"iface %p, type %p\n", iface,
type);
974 WARN(
"Null type specified\n");
985 ID3D11ShaderReflectionType *iface)
987 FIXME(
"iface %p stub!\n", iface);
993 ID3D11ShaderReflectionType *iface)
995 FIXME(
"iface %p stub!\n", iface);
1001 ID3D11ShaderReflectionType *iface)
1003 FIXME(
"iface %p stub!\n", iface);
1009 ID3D11ShaderReflectionType *iface,
UINT index)
1011 FIXME(
"iface %p, index %u stub!\n", iface,
index);
1017 ID3D11ShaderReflectionType *iface, ID3D11ShaderReflectionType *
type)
1019 FIXME(
"iface %p, type %p stub!\n", iface,
type);
1025 ID3D11ShaderReflectionType *iface, ID3D11ShaderReflectionType *
base)
1027 FIXME(
"iface %p, base %p stub!\n", iface,
base);
1056 TRACE(
"InstructionCount: %u\n",
r->instruction_count);
1059 TRACE(
"TempRegisterCount: %u\n",
r->temp_register_count);
1064 TRACE(
"DclCount: %u\n",
r->dcl_count);
1067 TRACE(
"FloatInstructionCount: %u\n",
r->float_instruction_count);
1070 TRACE(
"IntInstructionCount: %u\n",
r->int_instruction_count);
1073 TRACE(
"UintInstructionCount: %u\n",
r->uint_instruction_count);
1076 TRACE(
"StaticFlowControlCount: %u\n",
r->static_flow_control_count);
1079 TRACE(
"DynamicFlowControlCount: %u\n",
r->dynamic_flow_control_count);
1084 TRACE(
"TempArrayCount: %u\n",
r->temp_array_count);
1087 TRACE(
"ArrayInstructionCount: %u\n",
r->array_instruction_count);
1090 TRACE(
"CutInstructionCount: %u\n",
r->cut_instruction_count);
1093 TRACE(
"EmitInstructionCount: %u\n",
r->emit_instruction_count);
1096 TRACE(
"TextureNormalInstructions: %u\n",
r->texture_normal_instructions);
1099 TRACE(
"TextureLoadInstructions: %u\n",
r->texture_load_instructions);
1102 TRACE(
"TextureCompInstructions: %u\n",
r->texture_comp_instructions);
1105 TRACE(
"TextureBiasInstructions: %u\n",
r->texture_bias_instructions);
1108 TRACE(
"TextureGradientInstructions: %u\n",
r->texture_gradient_instructions);
1111 TRACE(
"MovInstructionCount: %u\n",
r->mov_instruction_count);
1116 TRACE(
"ConversionInstructionCount: %u\n",
r->conversion_instruction_count);
1125 TRACE(
"InputPrimitive: %x\n",
r->input_primitive);
1132 TRACE(
"GSOutputTopology: %x\n",
r->gs_output_topology);
1135 TRACE(
"GSMaxOutputVertexCount: %u\n",
r->gs_max_output_vertex_count);
1150 TRACE(
"cControlPoints: %u\n",
r->c_control_points);
1157 TRACE(
"HSOutputPrimitive: %x\n",
r->hs_output_primitive);
1164 TRACE(
"HSPartitioning: %x\n",
r->hs_prtitioning);
1171 TRACE(
"TessellatorDomain: %x\n",
r->tessellator_domain);
1191 ERR(
"Failed to copy name.\n");
1202 ERR(
"Failed to get member type\n");
1221 DWORD member_offset;
1239 TRACE(
"Elements %u, Members %u\n",
desc->Elements,
desc->Members);
1242 TRACE(
"Member Offset %u\n", member_offset);
1249 const char *ptr2 =
data + member_offset;
1254 ERR(
"Failed to allocate type memory.\n");
1258 for (
i = 0;
i <
desc->Members; ++
i)
1263 FIXME(
"Failed to parse type members.\n");
1274 ERR(
"Failed to copy name.\n");
1282 type->members = members;
1287 for (
i = 0;
i <
desc->Members; ++
i)
1304 TRACE(
"Returning existing type.\n");
1314 type->reflection = reflection;
1319 ERR(
"Failed to parse type info, hr %#x.\n",
hr);
1326 ERR(
"Failed to insert type entry.\n");
1344 ERR(
"Failed to allocate variables memory.\n");
1348 for (
i = 0;
i <
cb->variable_count;
i++)
1354 v->constant_buffer =
cb;
1359 ERR(
"Failed to copy name.\n");
1366 TRACE(
"Variable offset: %u\n",
v->start_offset);
1369 TRACE(
"Variable size: %u\n",
v->size);
1372 TRACE(
"Variable flags: %u\n",
v->flags);
1379 ERR(
"Failed to get type.\n");
1385 TRACE(
"Variable default value offset: %x\n",
offset);
1388 ERR(
"Failed to copy name.\n");
1397 cb->variables = variables;
1402 for (
i = 0;
i <
cb->variable_count;
i++)
1414 DWORD offset, cbuffer_offset, resource_offset, creator_offset;
1415 unsigned int i, string_data_offset, string_data_size;
1416 char *string_data =
NULL, *creator =
NULL;
1424 TRACE(
"Constant buffer count: %u\n",
r->constant_buffer_count);
1427 TRACE(
"Constant buffer offset: %#x\n", cbuffer_offset);
1430 TRACE(
"Bound resource count: %u\n",
r->bound_resource_count);
1433 TRACE(
"Bound resource offset: %#x\n", resource_offset);
1436 TRACE(
"Target: %#x\n",
r->target);
1439 TRACE(
"Flags: %u\n",
r->flags);
1442 TRACE(
"Creator at offset %#x.\n", creator_offset);
1446 ERR(
"Failed to copy name.\n");
1457 if (
r->bound_resource_count)
1460 string_data_offset = resource_offset +
r->bound_resource_count * 8 *
sizeof(
DWORD);
1461 string_data_size = (cbuffer_offset ? cbuffer_offset : creator_offset) - string_data_offset;
1466 ERR(
"Failed to allocate string data memory.\n");
1470 memcpy(string_data,
data + string_data_offset, string_data_size);
1473 if (!bound_resources)
1475 ERR(
"Failed to allocate resources memory.\n");
1481 for (
i = 0;
i <
r->bound_resource_count;
i++)
1486 desc->Name = string_data + (
offset - string_data_offset);
1494 TRACE(
"Input bind Type: %#x\n",
desc->Type);
1501 TRACE(
"Input bind ReturnType: %#x\n",
desc->ReturnType);
1508 TRACE(
"Input bind Dimension: %#x\n",
desc->Dimension);
1511 TRACE(
"Input bind NumSamples: %u\n",
desc->NumSamples);
1514 TRACE(
"Input bind BindPoint: %u\n",
desc->BindPoint);
1517 TRACE(
"Input bind BindCount: %u\n",
desc->BindCount);
1520 TRACE(
"Input bind uFlags: %u\n",
desc->uFlags);
1524 if (
r->constant_buffer_count)
1527 if (!constant_buffers)
1529 ERR(
"Failed to allocate constant buffer memory.\n");
1535 for (
i = 0;
i <
r->constant_buffer_count;
i++)
1545 ERR(
"Failed to copy name.\n");
1552 TRACE(
"Variable count: %u\n",
cb->variable_count);
1560 FIXME(
"Failed to parse variables.\n");
1565 TRACE(
"Cbuffer size: %u\n",
cb->size);
1568 TRACE(
"Cbuffer flags: %u\n",
cb->flags);
1575 TRACE(
"Cbuffer type: %#x\n",
cb->type);
1579 r->creator = creator;
1580 r->resource_string = string_data;
1581 r->bound_resources = bound_resources;
1582 r->constant_buffers = constant_buffers;
1587 for (
i = 0;
i <
r->constant_buffer_count; ++
i)
1602 unsigned int string_data_offset;
1603 unsigned int string_data_size;
1636 ERR(
"Failed to allocate signature memory.\n");
1641 string_data_offset = 2 *
sizeof(
DWORD) +
count * element_size *
sizeof(
DWORD);
1642 string_data_size =
section->data_size - string_data_offset;
1647 ERR(
"Failed to allocate string data memory.\n");
1651 memcpy(string_data,
section->data + string_data_offset, string_data_size);
1668 d[
i].SemanticName = string_data + (name_offset - string_data_offset);
1679 d[
i].ReadWriteMask = (
mask >> 8) & 0xff;
1685 TRACE(
"Pixelshader output signature fixup.\n");
1689 if (!
_strnicmp(
d[
i].SemanticName,
"sv_depth", -1))
1691 else if (!
_strnicmp(
d[
i].SemanticName,
"sv_coverage", -1))
1693 else if (!
_strnicmp(
d[
i].SemanticName,
"sv_depthgreaterequal", -1))
1695 else if (!
_strnicmp(
d[
i].SemanticName,
"sv_depthlessequal", -1))
1704 TRACE(
"semantic: %s, semantic idx: %u, sysval_semantic %#x, "
1705 "type %u, register idx: %u, use_mask %#x, input_mask %#x, stream %u\n",
1711 s->element_count =
count;
1712 s->string_data = string_data;
1722 TRACE(
"Shader version: %u\n",
r->version);
1732 struct dxbc src_dxbc;
1744 WARN(
"Failed to parse reflection\n");
1748 for (
i = 0;
i < src_dxbc.
count; ++
i)
1758 WARN(
"Failed to parse RDEF section.\n");
1765 if (!reflection->
isgn)
1767 ERR(
"Failed to allocate ISGN memory.\n");
1775 WARN(
"Failed to parse section ISGN.\n");
1783 if (!reflection->
osgn)
1785 ERR(
"Failed to allocate OSGN memory.\n");
1793 WARN(
"Failed to parse section OSGN.\n");
1800 if (!reflection->
pcsg)
1802 ERR(
"Failed to allocate PCSG memory.\n");
1810 WARN(
"Failed to parse section PCSG.\n");
1820 WARN(
"Failed to parse SHDR section.\n");
1829 WARN(
"Failed to parse section STAT.\n");
1859 if (!
data || data_size < 32)
1861 WARN(
"Invalid argument supplied.\n");
1865 if (
temp[6] != data_size)
1867 WARN(
"Wrong size supplied.\n");
1884 WARN(
"Failed to initialize shader reflection\n");
1891 TRACE(
"Created ID3D11ShaderReflection %p\n",
object);
unsigned long long UINT64
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
static BOOL heap_free(void *mem)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define STDMETHODCALLTYPE
D3D_TESSELLATOR_OUTPUT_PRIMITIVE
D3D_TESSELLATOR_PARTITIONING
@ D3D_NAME_DEPTH_GREATER_EQUAL
@ D3D_NAME_DEPTH_LESS_EQUAL
const char * debug_d3dcompiler_shader_variable_class(D3D_SHADER_VARIABLE_CLASS c) DECLSPEC_HIDDEN
void dxbc_destroy(struct dxbc *dxbc) DECLSPEC_HIDDEN
static void read_dword(const char **ptr, DWORD *d)
#define D3DERR_INVALIDCALL
const char * debug_d3dcompiler_shader_variable_type(D3D_SHADER_VARIABLE_TYPE t) DECLSPEC_HIDDEN
void skip_dword_unknown(const char **ptr, unsigned int count) DECLSPEC_HIDDEN
HRESULT dxbc_parse(const char *data, SIZE_T data_size, struct dxbc *dxbc) DECLSPEC_HIDDEN
static HRESULT d3dcompiler_parse_rdef(struct d3dcompiler_shader_reflection *r, const char *data, DWORD data_size)
static struct d3dcompiler_shader_reflection_variable * impl_from_ID3D11ShaderReflectionVariable(ID3D11ShaderReflectionVariable *iface)
#define D3DCOMPILER_SHADER_TARGET_SHADERTYPE_MASK
static ID3D11ShaderReflectionConstantBuffer *STDMETHODCALLTYPE d3dcompiler_shader_reflection_variable_GetBuffer(ID3D11ShaderReflectionVariable *iface)
static ID3D11ShaderReflectionType *STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetSubType(ID3D11ShaderReflectionType *iface)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_IsOfType(ID3D11ShaderReflectionType *iface, ID3D11ShaderReflectionType *type)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_IsEqual(ID3D11ShaderReflectionType *iface, ID3D11ShaderReflectionType *type)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_constant_buffer_GetDesc(ID3D11ShaderReflectionConstantBuffer *iface, D3D11_SHADER_BUFFER_DESC *desc)
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetMovInstructionCount(ID3D11ShaderReflection *iface)
#define D3DCOMPILER_SHADER_TARGET_VERSION_MASK
static const struct ID3D11ShaderReflectionVariableVtbl d3dcompiler_shader_reflection_variable_vtbl
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetMovcInstructionCount(ID3D11ShaderReflection *iface)
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetBitwiseInstructionCount(ID3D11ShaderReflection *iface)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetMinFeatureLevel(ID3D11ShaderReflection *iface, D3D_FEATURE_LEVEL *level)
static void d3dcompiler_shader_reflection_type_destroy(struct wine_rb_entry *entry, void *context)
static struct ID3D11ShaderReflectionConstantBuffer *STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetConstantBufferByName(ID3D11ShaderReflection *iface, const char *name)
static ID3D11ShaderReflectionType *STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetBaseClass(ID3D11ShaderReflectionType *iface)
D3DCOMPILER_SIGNATURE_ELEMENT_SIZE
@ D3DCOMPILER_SIGNATURE_ELEMENT_SIZE7
@ D3DCOMPILER_SIGNATURE_ELEMENT_SIZE6
static const struct ID3D11ShaderReflectionVtbl d3dcompiler_shader_reflection_vtbl
static ID3D11ShaderReflectionType *STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetMemberTypeByIndex(ID3D11ShaderReflectionType *iface, UINT index)
static BOOL copy_value(const char *ptr, void **value, DWORD size)
static BOOL STDMETHODCALLTYPE d3dcompiler_shader_reflection_IsSampleFrequencyShader(ID3D11ShaderReflection *iface)
static ULONG STDMETHODCALLTYPE d3dcompiler_shader_reflection_AddRef(ID3D11ShaderReflection *iface)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetDesc(ID3D11ShaderReflectionType *iface, D3D11_SHADER_TYPE_DESC *desc)
static void free_signature(struct d3dcompiler_shader_signature *sig)
static void free_type_member(struct d3dcompiler_shader_reflection_type_member *member)
static const struct ID3D11ShaderReflectionConstantBufferVtbl d3dcompiler_shader_reflection_constant_buffer_vtbl
static const char *STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetMemberTypeName(ID3D11ShaderReflectionType *iface, UINT index)
static ID3D11ShaderReflectionType *STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetMemberTypeByName(ID3D11ShaderReflectionType *iface, const char *name)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetResourceBindingDesc(ID3D11ShaderReflection *iface, UINT index, D3D11_SHADER_INPUT_BIND_DESC *desc)
static struct d3dcompiler_shader_reflection_constant_buffer * impl_from_ID3D11ShaderReflectionConstantBuffer(ID3D11ShaderReflectionConstantBuffer *iface)
static HRESULT d3dcompiler_parse_signature(struct d3dcompiler_shader_signature *s, struct dxbc_section *section, DWORD target)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetInputParameterDesc(ID3D11ShaderReflection *iface, UINT index, D3D11_SIGNATURE_PARAMETER_DESC *desc)
static HRESULT d3dcompiler_parse_shdr(struct d3dcompiler_shader_reflection *r, const char *data, DWORD data_size)
static D3D_PRIMITIVE STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetGSInputPrimitive(ID3D11ShaderReflection *iface)
static UINT64 STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetRequiresFlags(ID3D11ShaderReflection *iface)
static HRESULT d3dcompiler_parse_variables(struct d3dcompiler_shader_reflection_constant_buffer *cb, const char *data, DWORD data_size, const char *ptr)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetOutputParameterDesc(ID3D11ShaderReflection *iface, UINT index, D3D11_SIGNATURE_PARAMETER_DESC *desc)
static ID3D11ShaderReflectionType *STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetInterfaceByIndex(ID3D11ShaderReflectionType *iface, UINT index)
static HRESULT d3dcompiler_parse_type_members(struct d3dcompiler_shader_reflection *ref, struct d3dcompiler_shader_reflection_type_member *member, const char *data, const char **ptr)
HRESULT WINAPI D3DReflect(const void *data, SIZE_T data_size, REFIID riid, void **reflector)
static HRESULT d3dcompiler_parse_stat(struct d3dcompiler_shader_reflection *r, const char *data, DWORD data_size)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_QueryInterface(ID3D11ShaderReflection *iface, REFIID riid, void **object)
static void free_constant_buffer(struct d3dcompiler_shader_reflection_constant_buffer *cb)
static ULONG STDMETHODCALLTYPE d3dcompiler_shader_reflection_Release(ID3D11ShaderReflection *iface)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetResourceBindingDescByName(ID3D11ShaderReflection *iface, const char *name, D3D11_SHADER_INPUT_BIND_DESC *desc)
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetNumInterfaceSlots(ID3D11ShaderReflection *iface)
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_GetNumInterfaces(ID3D11ShaderReflectionType *iface)
static int d3dcompiler_shader_reflection_type_compare(const void *key, const struct wine_rb_entry *entry)
static HRESULT d3dcompiler_parse_type(struct d3dcompiler_shader_reflection_type *type, const char *data, DWORD offset)
static ID3D11ShaderReflectionType *STDMETHODCALLTYPE d3dcompiler_shader_reflection_variable_GetType(ID3D11ShaderReflectionVariable *iface)
static struct ID3D11ShaderReflectionVariable *STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetVariableByName(ID3D11ShaderReflection *iface, const char *name)
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetThreadGroupSize(ID3D11ShaderReflection *iface, UINT *sizex, UINT *sizey, UINT *sizez)
static HRESULT d3dcompiler_shader_reflection_init(struct d3dcompiler_shader_reflection *reflection, const void *data, SIZE_T data_size)
static void reflection_cleanup(struct d3dcompiler_shader_reflection *ref)
static struct d3dcompiler_shader_reflection * impl_from_ID3D11ShaderReflection(ID3D11ShaderReflection *iface)
static struct d3dcompiler_shader_reflection_type * impl_from_ID3D11ShaderReflectionType(ID3D11ShaderReflectionType *iface)
static ID3D11ShaderReflectionVariable *STDMETHODCALLTYPE d3dcompiler_shader_reflection_constant_buffer_GetVariableByIndex(ID3D11ShaderReflectionConstantBuffer *iface, UINT index)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_variable_GetDesc(ID3D11ShaderReflectionVariable *iface, D3D11_SHADER_VARIABLE_DESC *desc)
static struct d3dcompiler_shader_reflection_variable null_variable
static const struct ID3D11ShaderReflectionTypeVtbl d3dcompiler_shader_reflection_type_vtbl
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetConversionInstructionCount(ID3D11ShaderReflection *iface)
static struct d3dcompiler_shader_reflection_constant_buffer null_constant_buffer
static void free_variable(struct d3dcompiler_shader_reflection_variable *var)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_type_ImplementsInterface(ID3D11ShaderReflectionType *iface, ID3D11ShaderReflectionType *base)
static BOOL copy_name(const char *ptr, char **name)
static struct d3dcompiler_shader_reflection_type null_type
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetDesc(ID3D11ShaderReflection *iface, D3D11_SHADER_DESC *desc)
static UINT STDMETHODCALLTYPE d3dcompiler_shader_reflection_variable_GetInterfaceSlot(ID3D11ShaderReflectionVariable *iface, UINT index)
static HRESULT STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetPatchConstantParameterDesc(ID3D11ShaderReflection *iface, UINT index, D3D11_SIGNATURE_PARAMETER_DESC *desc)
static struct d3dcompiler_shader_reflection_type * get_reflection_type(struct d3dcompiler_shader_reflection *reflection, const char *data, DWORD offset)
static ID3D11ShaderReflectionVariable *STDMETHODCALLTYPE d3dcompiler_shader_reflection_constant_buffer_GetVariableByName(ID3D11ShaderReflectionConstantBuffer *iface, const char *name)
static struct ID3D11ShaderReflectionConstantBuffer *STDMETHODCALLTYPE d3dcompiler_shader_reflection_GetConstantBufferByIndex(ID3D11ShaderReflection *iface, UINT index)
static __inline const char * debugstr_an(const char *s, int n)
#define _strnicmp(_String1, _String2, _MaxCount)
#define HeapFree(x, y, z)
GLuint GLuint GLsizei GLenum type
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define memcpy(s1, s2, n)
static const WCHAR desc[]
static HMODULE MODULEINFO DWORD cb
#define IsEqualGUID(rguid1, rguid2)
static void wine_rb_destroy(struct wine_rb_tree *tree, wine_rb_traverse_func_t *callback, void *context)
#define WINE_RB_ENTRY_VALUE(element, type, field)
static struct wine_rb_entry * wine_rb_get(const struct wine_rb_tree *tree, const void *key)
static void wine_rb_init(struct wine_rb_tree *tree, wine_rb_compare_func_t compare)
static int wine_rb_put(struct wine_rb_tree *tree, const void *key, struct wine_rb_entry *entry)
ID3D11ShaderReflectionConstantBuffer ID3D11ShaderReflectionConstantBuffer_iface
struct d3dcompiler_shader_reflection * reflection
struct d3dcompiler_shader_reflection_variable * variables
struct d3dcompiler_shader_reflection_type * type
struct wine_rb_entry entry
ID3D11ShaderReflectionType ID3D11ShaderReflectionType_iface
D3D11_SHADER_TYPE_DESC desc
struct d3dcompiler_shader_reflection * reflection
struct d3dcompiler_shader_reflection_type_member * members
struct d3dcompiler_shader_reflection_constant_buffer * constant_buffer
ID3D11ShaderReflectionVariable ID3D11ShaderReflectionVariable_iface
struct d3dcompiler_shader_reflection_type * type
UINT texture_gradient_instructions
UINT texture_load_instructions
UINT array_instruction_count
struct d3dcompiler_shader_signature * osgn
UINT texture_normal_instructions
D3D_TESSELLATOR_OUTPUT_PRIMITIVE hs_output_primitive
struct d3dcompiler_shader_signature * pcsg
UINT conversion_instruction_count
UINT int_instruction_count
UINT constant_buffer_count
D3D_PRIMITIVE_TOPOLOGY gs_output_topology
UINT emit_instruction_count
ID3D11ShaderReflection ID3D11ShaderReflection_iface
UINT cut_instruction_count
UINT bound_resource_count
UINT uint_instruction_count
UINT texture_comp_instructions
D3D_TESSELLATOR_PARTITIONING hs_prtitioning
D3D_PRIMITIVE input_primitive
UINT float_instruction_count
struct d3dcompiler_shader_reflection_constant_buffer * constant_buffers
struct d3dcompiler_shader_signature * isgn
D3D_TESSELLATOR_DOMAIN tessellator_domain
UINT gs_max_output_vertex_count
D3D11_SHADER_INPUT_BIND_DESC * bound_resources
UINT texture_bias_instructions
UINT mov_instruction_count
UINT static_flow_control_count
UINT dynamic_flow_control_count
struct wine_rb_tree types
D3D11_SIGNATURE_PARAMETER_DESC * elements
struct dxbc_section * sections
#define CONTAINING_RECORD(address, type, field)