23#define DXBC_CHECKSUM_SKIP_BYTE_COUNT 20
38 memset(dxbc, 0,
sizeof(*dxbc));
56 size_t size_position, offsets_position, checksum_position,
i;
60 TRACE(
"section_count %zu, sections %p, dxbc %p, messages %p.\n", section_count,
sections, dxbc,
messages);
68 for (
i = 0;
i < 4; ++
i)
76 for (
i = 0;
i < section_count; ++
i)
79 for (
i = 0;
i < section_count; ++
i)
89 for (
i = 0;
i < 4; ++
i)
138 WARN(
"Skipping %u unknown DWORDs:\n",
count);
142 WARN(
"\t0x%08x\n",
d);
152 WARN(
"Invalid offset %#zx (data size %#zx).\n",
offset, data_size);
156 max_len = data_size -
offset;
172 size_t data_size = dxbc->
size;
182 WARN(
"Invalid data size %zu.\n", data_size);
184 "DXBC size %zu is smaller than the DXBC header size.", data_size);
193 WARN(
"Wrong tag.\n");
207 WARN(
"Checksum {0x%08x, 0x%08x, 0x%08x, 0x%08x} does not match "
208 "calculated checksum {0x%08x, 0x%08x, 0x%08x, 0x%08x}.\n",
210 calculated_checksum[0], calculated_checksum[1],
211 calculated_checksum[2], calculated_checksum[3]);
213 "Invalid DXBC checksum.");
222 WARN(
"Got unexpected DXBC version %#x.\n",
version);
224 "DXBC version %#x is not supported.",
version);
229 TRACE(
"total size: %#x\n", total_size);
232 TRACE(
"chunk count: %#x\n", chunk_count);
240 for (
i = 0;
i < chunk_count; ++
i)
243 const char *chunk_ptr;
247 TRACE(
"chunk %u at offset %#x\n",
i, chunk_offset);
251 WARN(
"Invalid chunk offset %#x (data size %zu).\n", chunk_offset, data_size);
253 "DXBC chunk %u has invalid offset %#x (data size %#zx).",
i, chunk_offset, data_size);
258 chunk_ptr =
data + chunk_offset;
265 WARN(
"Invalid chunk size %#x (data size %zu, chunk offset %#x).\n",
266 chunk_size, data_size, chunk_offset);
268 "DXBC chunk %u has invalid size %#x (data size %#zx, chunk offset %#x).",
269 i, chunk_offset, data_size, chunk_offset);
276 section->data.code = chunk_ptr;
277 section->data.size = chunk_size;
283 desc->size = total_size;
284 desc->section_count = chunk_count;
292 TRACE(
"dxbc %p.\n", dxbc);
309 for (
i = 0;
i <
desc.section_count; ++
i)
311 if ((
ret = section_handler(&
desc.sections[
i], message_context,
ctx)) < 0)
371 bool has_stream_index, has_min_precision;
380 WARN(
"Invalid data size %#zx.\n",
section->data.size);
382 "Section size %zu is smaller than the minimum signature header size.\n",
section->data.size);
394 WARN(
"Invalid header size %#x.\n", header_size);
396 "Signature header size %#x is invalid.\n", header_size);
409 ERR(
"Failed to allocate input signature memory.\n");
422 if (has_stream_index)
425 e[
i].stream_index = 0;
431 WARN(
"Invalid name offset %#zx (data size %#zx).\n", name_offset,
section->data.size);
432 for (
j = 0;
j <
i; ++
j)
443 e[
i].target_location =
e[
i].register_index;
444 e[
i].register_count = 1;
447 e[
i].used_mask = (
mask >> 8) & 0xff;
458 if (has_min_precision)
465 TRACE(
"Stream: %u, semantic: %s, semantic idx: %u, sysval_semantic %#x, "
466 "type %u, register idx: %u, use_mask %#x, input_mask %#x, precision %u.\n",
487 FIXME(
"Multiple input signatures.\n");
500 ERR(
"Failed to parse input signature.\n");
515 if (
desc->input_signature.elements)
517 FIXME(
"Multiple input signatures.\n");
527 if (
desc->output_signature.elements)
529 FIXME(
"Multiple output signatures.\n");
538 if (
desc->patch_constant_signature.elements)
540 FIXME(
"Multiple patch constant signatures.\n");
556 FIXME(
"Multiple shader code chunks.\n");
562 TRACE(
"Skipping AON9 shader code chunk.\n");
586 if (!
desc->byte_code)
591 WARN(
"Failed to parse shader, vkd3d result %d.\n",
ret);
599#define VKD3D_ROOT_SIGNATURE_1_0_ROOT_DESCRIPTOR_FLAGS VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE
601#define VKD3D_ROOT_SIGNATURE_1_0_DESCRIPTOR_RANGE_FLAGS \
602 (VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE | VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE)
631 TRACE(
"Type %#x, descriptor count %u, base shader register %u, "
632 "register space %u, offset %u.\n",
633 ranges[
i].range_type, ranges[
i].descriptor_count,
634 ranges[
i].base_shader_register, ranges[
i].register_space,
635 ranges[
i].descriptor_table_offset);
651 FIXME(
"Unknown descriptor range flags %#x.\n", unknown_flags);
676 TRACE(
"Type %#x, descriptor count %u, base shader register %u, "
677 "register space %u, flags %#x, offset %u.\n",
678 ranges[
i].range_type, ranges[
i].descriptor_count,
679 ranges[
i].base_shader_register, ranges[
i].register_space,
680 ranges[
i].
flags, ranges[
i].descriptor_table_offset);
711 table->descriptor_ranges = ranges;
738 table->descriptor_ranges = ranges;
758 TRACE(
"Shader register %u, register space %u, 32-bit value count %u.\n",
779 TRACE(
"Shader register %u, register space %u.\n",
793 FIXME(
"Unknown root descriptor flags %#x.\n", unknown_flags);
812 TRACE(
"Shader register %u, register space %u, flags %#x.\n",
840 TRACE(
"Type %#x, shader visibility %#x.\n",
888 TRACE(
"Type %#x, shader visibility %#x.\n",
963 WARN(
"Invalid data size %#zx.\n",
data->size);
1049 TRACE(
"dxbc {%p, %zu}, root_signature %p, messages %p.\n", dxbc->
code, dxbc->
size, root_signature,
messages);
1051 memset(root_signature, 0,
sizeof(*root_signature));
1072 return desc->u.v_1_0.parameter_count;
1074 return desc->u.v_1_1.parameter_count;
1081 return desc->u.v_1_0.parameters[
i].parameter_type;
1083 return desc->u.v_1_1.parameters[
i].parameter_type;
1090 return desc->u.v_1_0.parameters[
i].shader_visibility;
1092 return desc->u.v_1_1.parameters[
i].shader_visibility;
1099 return &
desc->u.v_1_0.parameters[
i].u.constants;
1101 return &
desc->u.v_1_1.parameters[
i].u.constants;
1108 return desc->u.v_1_0.static_sampler_count;
1110 return desc->u.v_1_1.static_sampler_count;
1117 return desc->u.v_1_0.static_samplers;
1119 return desc->u.v_1_1.static_samplers;
1125 return desc->u.v_1_0.flags;
1127 return desc->u.v_1_1.flags;
1153 for (
i = 0;
i < 4; ++
i)
1170 for (
i = 0;
i <
table->descriptor_range_count; ++
i)
1186 for (
i = 0;
i <
table->descriptor_range_count; ++
i)
1247 size_t parameters_position;
1251 for (
i = 0;
i < parameter_count; ++
i)
1258 for (
i = 0;
i < parameter_count; ++
i)
1284 "Invalid/unrecognised root signature root parameter type %#x.",
1321 size_t samplers_offset_position;
1342 bool have_srv_uav_cbv =
false;
1343 bool have_sampler =
false;
1354 have_srv_uav_cbv =
true;
1358 have_sampler =
true;
1362 WARN(
"Invalid descriptor range type %#x.\n",
r->range_type);
1364 "Invalid root signature descriptor range type %#x.",
r->range_type);
1369 if (have_srv_uav_cbv && have_sampler)
1371 WARN(
"Samplers cannot be mixed with CBVs/SRVs/UAVs in descriptor tables.\n");
1373 "Encountered both CBV/SRV/UAV and sampler descriptor ranges in the same root descriptor table.");
1383 bool have_srv_uav_cbv =
false;
1384 bool have_sampler =
false;
1395 have_srv_uav_cbv =
true;
1399 have_sampler =
true;
1403 WARN(
"Invalid descriptor range type %#x.\n",
r->range_type);
1405 "Invalid root signature descriptor range type %#x.",
r->range_type);
1410 if (have_srv_uav_cbv && have_sampler)
1412 WARN(
"Samplers cannot be mixed with CBVs/SRVs/UAVs in descriptor tables.\n");
1414 "Encountered both CBV/SRV/UAV and sampler descriptor ranges in the same root descriptor table.");
1451 size_t total_size, chunk_size;
1456 TRACE(
"root_signature %p, dxbc %p, messages %p.\n", root_signature, dxbc,
messages);
1468 WARN(
"Root signature version %#x not supported.\n", root_signature->
version);
1470 "Root signature version %#x is not supported.", root_signature->
version);
1477 memset(dxbc, 0,
sizeof(*dxbc));
1489 "Out of memory while writing root signature.");
1500 dxbc->
size = total_size;
1503 for (
i = 0;
i < 4; ++
i)
1528 vkd3d_free((
void *)
p->u.descriptor_table.descriptor_ranges);
1546 switch (
p->parameter_type)
1550 if ((
p->u.descriptor_table.descriptor_range_count = p1->
u.
descriptor_table.descriptor_range_count))
1552 if (!(ranges =
vkd3d_calloc(
p->u.descriptor_table.descriptor_range_count,
sizeof(*ranges))))
1558 p->u.descriptor_table.descriptor_ranges = ranges;
1560 for (
j = 0;
j <
p->u.descriptor_table.descriptor_range_count; ++
j)
1575 p->u.descriptor.shader_register = p1->
u.
descriptor.shader_register;
1576 p->u.descriptor.register_space = p1->
u.
descriptor.register_space;
1579 WARN(
"Invalid root parameter type %#x.\n",
p->parameter_type);
1647 vkd3d_free((
void *)
p->u.descriptor_table.descriptor_ranges);
1669 if ((p1->
u.
descriptor_table.descriptor_range_count =
p->u.descriptor_table.descriptor_range_count))
1678 ranges =
p->u.descriptor_table.descriptor_ranges;
1695 p1->
u.
descriptor.shader_register =
p->u.descriptor.shader_register;
1696 p1->
u.
descriptor.register_space =
p->u.descriptor.register_space;
1765 WARN(
"Nothing to convert.\n");
1771 WARN(
"Root signature version %#x not supported.\n",
version);
1778 WARN(
"Root signature version %#x not supported.\n",
src->version);
static void put_u32(struct bytecode_buffer *buffer, uint32_t value)
static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum)
static const WCHAR version[]
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP size_t __cdecl strnlen(const char *, size_t)
static void free_descriptor_ranges(const struct vkd3d_shader_root_parameter *parameters, unsigned int count)
static unsigned int versioned_root_signature_get_parameter_count(const struct vkd3d_shader_versioned_root_signature_desc *desc)
static int shader_parse_root_descriptor(struct root_signature_parser_context *context, unsigned int offset, struct vkd3d_shader_root_descriptor *descriptor)
static void shader_write_static_samplers(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_versioned_root_signature_desc *desc)
static int validate_descriptor_table_v_1_1(const struct vkd3d_shader_root_descriptor_table1 *descriptor_table, struct vkd3d_shader_message_context *message_context)
static int validate_root_signature_desc(const struct vkd3d_shader_versioned_root_signature_desc *desc, struct vkd3d_shader_message_context *message_context)
int shader_extract_from_dxbc(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, struct dxbc_shader_desc *desc)
static const struct vkd3d_shader_root_constants * versioned_root_signature_get_root_constants(const struct vkd3d_shader_versioned_root_signature_desc *desc, unsigned int i)
static bool require_space(size_t offset, size_t count, size_t size, size_t data_size)
static enum vkd3d_shader_visibility versioned_root_signature_get_parameter_shader_visibility(const struct vkd3d_shader_versioned_root_signature_desc *desc, unsigned int i)
static int shader_write_root_parameters(struct root_signature_writer_context *context, const struct vkd3d_shader_versioned_root_signature_desc *desc)
static int rts0_handler(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *context)
static int shader_parse_root_signature(const struct vkd3d_shader_code *data, struct vkd3d_shader_versioned_root_signature_desc *desc)
static size_t get_chunk_offset(struct root_signature_writer_context *context)
static unsigned int versioned_root_signature_get_flags(const struct vkd3d_shader_versioned_root_signature_desc *desc)
int dxbc_writer_write(struct dxbc_writer *dxbc, struct vkd3d_shader_code *out)
#define VKD3D_ROOT_SIGNATURE_1_0_ROOT_DESCRIPTOR_FLAGS
static const char * shader_get_string(const char *data, size_t data_size, size_t offset)
static void shader_write_root_constants(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_constants *constants)
#define DXBC_CHECKSUM_SKIP_BYTE_COUNT
static int convert_root_parameters_to_v_1_1(struct vkd3d_shader_root_parameter1 *dst, const struct vkd3d_shader_root_parameter *src, unsigned int count)
int vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_versioned_root_signature_desc *root_signature, char **messages)
static void shader_write_descriptor_ranges(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_descriptor_table *table)
static int isgn_handler(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *ctx)
static int parse_dxbc(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, uint32_t flags, struct vkd3d_shader_dxbc_desc *desc)
#define VKD3D_ROOT_SIGNATURE_1_0_DESCRIPTOR_RANGE_FLAGS
static int validate_descriptor_table_v_1_0(const struct vkd3d_shader_root_descriptor_table *descriptor_table, struct vkd3d_shader_message_context *message_context)
static void shader_write_descriptor_table(struct root_signature_writer_context *context, const struct vkd3d_shader_root_descriptor_table *table)
int vkd3d_shader_convert_root_signature(struct vkd3d_shader_versioned_root_signature_desc *dst, enum vkd3d_shader_root_signature_version version, const struct vkd3d_shader_versioned_root_signature_desc *src)
static int shader_parse_descriptor_ranges1(struct root_signature_parser_context *context, unsigned int offset, unsigned int count, struct vkd3d_shader_descriptor_range1 *ranges)
static void shader_write_descriptor_table1(struct root_signature_writer_context *context, const struct vkd3d_shader_root_descriptor_table1 *table)
static uint32_t read_u32(const char **ptr)
static int shader_parse_signature(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, struct shader_signature *s)
int vkd3d_shader_serialize_root_signature(const struct vkd3d_shader_versioned_root_signature_desc *root_signature, struct vkd3d_shader_code *dxbc, char **messages)
static int shader_parse_root_parameters(struct root_signature_parser_context *context, unsigned int offset, unsigned int count, struct vkd3d_shader_root_parameter *parameters)
static void shader_write_root_descriptor1(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_descriptor1 *descriptor)
static int shader_parse_static_samplers(struct root_signature_parser_context *context, unsigned int offset, unsigned int count, struct vkd3d_shader_static_sampler_desc *sampler_descs)
static int shdr_handler(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *context)
static int shader_parse_root_descriptor1(struct root_signature_parser_context *context, unsigned int offset, struct vkd3d_shader_root_descriptor1 *descriptor)
static void compute_dxbc_checksum(const void *dxbc, size_t size, uint32_t checksum[4])
void vkd3d_shader_free_dxbc(struct vkd3d_shader_dxbc_desc *dxbc)
static void shader_validate_root_descriptor1(const struct vkd3d_shader_root_descriptor1 *descriptor)
static enum vkd3d_shader_sysval_semantic map_fragment_output_sysval(const char *name)
static void shader_write_root_descriptor(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_descriptor *descriptor)
static void skip_dword_unknown(const char **ptr, unsigned int count)
static enum vkd3d_shader_root_parameter_type versioned_root_signature_get_parameter_type(const struct vkd3d_shader_versioned_root_signature_desc *desc, unsigned int i)
static void shader_write_root_signature_header(struct root_signature_writer_context *context)
static int shader_write_root_signature(struct root_signature_writer_context *context, const struct vkd3d_shader_versioned_root_signature_desc *desc)
int shader_parse_input_signature(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, struct shader_signature *signature)
static int for_each_dxbc_section(const struct vkd3d_shader_code *dxbc, struct vkd3d_shader_message_context *message_context, const char *source_name, int(*section_handler)(const struct vkd3d_shader_dxbc_section_desc *section, struct vkd3d_shader_message_context *message_context, void *ctx), void *ctx)
static int convert_root_signature_to_v1_0(struct vkd3d_shader_versioned_root_signature_desc *dst, const struct vkd3d_shader_versioned_root_signature_desc *src)
static int convert_root_signature_to_v1_1(struct vkd3d_shader_versioned_root_signature_desc *dst, const struct vkd3d_shader_versioned_root_signature_desc *src)
static int shader_parse_root_parameters1(struct root_signature_parser_context *context, uint32_t offset, unsigned int count, struct vkd3d_shader_root_parameter1 *parameters)
static int convert_root_parameters_to_v_1_0(struct vkd3d_shader_root_parameter *dst, const struct vkd3d_shader_root_parameter1 *src, unsigned int count)
static float read_float(const char **ptr)
static const struct vkd3d_shader_static_sampler_desc * versioned_root_signature_get_static_samplers(const struct vkd3d_shader_versioned_root_signature_desc *desc)
int vkd3d_shader_parse_dxbc(const struct vkd3d_shader_code *dxbc, uint32_t flags, struct vkd3d_shader_dxbc_desc *desc, char **messages)
static unsigned int versioned_root_signature_get_static_sampler_count(const struct vkd3d_shader_versioned_root_signature_desc *desc)
static int shader_parse_descriptor_table1(struct root_signature_parser_context *context, unsigned int offset, struct vkd3d_shader_root_descriptor_table1 *table)
static int shader_parse_descriptor_table(struct root_signature_parser_context *context, unsigned int offset, struct vkd3d_shader_root_descriptor_table *table)
void dxbc_writer_init(struct dxbc_writer *dxbc)
void free_dxbc_shader_desc(struct dxbc_shader_desc *desc)
static void shader_validate_descriptor_range1(const struct vkd3d_shader_descriptor_range1 *range)
static void shader_write_descriptor_ranges1(struct vkd3d_bytecode_buffer *buffer, const struct vkd3d_shader_root_descriptor_table1 *table)
void dxbc_writer_add_section(struct dxbc_writer *dxbc, uint32_t tag, const void *data, size_t size)
static int shader_parse_root_constants(struct root_signature_parser_context *context, unsigned int offset, struct vkd3d_shader_root_constants *constants)
int vkd3d_shader_serialize_dxbc(size_t section_count, const struct vkd3d_shader_dxbc_section_desc *sections, struct vkd3d_shader_code *dxbc, char **messages)
static int shader_parse_descriptor_ranges(struct root_signature_parser_context *context, unsigned int offset, unsigned int count, struct vkd3d_shader_descriptor_range *ranges)
static void free_descriptor_ranges1(const struct vkd3d_shader_root_parameter1 *parameters, unsigned int count)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
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
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 * u
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 GLint GLint j
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
struct section sections[2]
void vkd3d_compute_md5(const void *data, size_t size, uint32_t checksum[4], enum vkd3d_md5_variant variant)
struct vkd3d_shader_dxbc_section_desc sections[DXBC_MAX_SECTION_COUNT]
unsigned int section_count
struct vkd3d_shader_message_context message_context
size_t total_size_position
struct signature_element * elements
const char * semantic_name
enum vkd3d_shader_minimum_precision min_precision
unsigned int register_index
enum vkd3d_shader_sysval_semantic sysval_semantic
unsigned int semantic_index
unsigned int stream_index
enum vkd3d_shader_descriptor_range_flags flags
unsigned int descriptor_table_offset
unsigned int register_space
enum vkd3d_shader_descriptor_type range_type
unsigned int base_shader_register
unsigned int descriptor_count
unsigned int base_shader_register
unsigned int descriptor_table_offset
unsigned int register_space
enum vkd3d_shader_descriptor_type range_type
unsigned int descriptor_count
struct vkd3d_shader_dxbc_section_desc * sections
const struct vkd3d_shader_descriptor_range1 * descriptor_ranges
unsigned int descriptor_range_count
const struct vkd3d_shader_descriptor_range * descriptor_ranges
unsigned int descriptor_range_count
struct vkd3d_shader_root_descriptor_table1 descriptor_table
struct vkd3d_shader_root_descriptor1 descriptor
enum vkd3d_shader_root_parameter_type parameter_type
struct vkd3d_shader_root_constants constants
enum vkd3d_shader_visibility shader_visibility
union vkd3d_shader_root_parameter1::@5988 u
enum vkd3d_shader_root_parameter_type parameter_type
unsigned int static_sampler_count
enum vkd3d_shader_root_signature_flags flags
unsigned int parameter_count
const struct vkd3d_shader_static_sampler_desc * static_samplers
const struct vkd3d_shader_root_parameter1 * parameters
const struct vkd3d_shader_root_parameter * parameters
const struct vkd3d_shader_static_sampler_desc * static_samplers
enum vkd3d_shader_root_signature_flags flags
unsigned int parameter_count
unsigned int static_sampler_count
unsigned int max_anisotropy
unsigned int shader_register
enum vkd3d_shader_comparison_func comparison_func
enum vkd3d_shader_texture_address_mode address_u
enum vkd3d_shader_texture_address_mode address_v
enum vkd3d_shader_filter filter
enum vkd3d_shader_static_border_colour border_colour
enum vkd3d_shader_visibility shader_visibility
unsigned int register_space
enum vkd3d_shader_texture_address_mode address_w
enum vkd3d_shader_root_signature_version version
#define VKD3D_ASSERT(cond)
static int ascii_strcasecmp(const char *a, const char *b)
static void * vkd3d_calloc(size_t count, size_t size)
static char * vkd3d_strdup(const char *string)
static void vkd3d_free(void *ptr)
vkd3d_shader_root_parameter_type
@ VKD3D_SHADER_ROOT_PARAMETER_TYPE_SRV
@ VKD3D_SHADER_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE
@ VKD3D_SHADER_ROOT_PARAMETER_TYPE_CBV
@ VKD3D_SHADER_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS
@ VKD3D_SHADER_ROOT_PARAMETER_TYPE_UAV
vkd3d_shader_sysval_semantic
@ VKD3D_SHADER_SV_DEPTH_LESS_EQUAL
@ VKD3D_SHADER_SV_COVERAGE
@ VKD3D_SHADER_SV_DEPTH_GREATER_EQUAL
@ VKD3D_SHADER_SV_STENCIL_REF
@ VKD3D_SHADER_PARSE_DXBC_IGNORE_CHECKSUM
@ VKD3D_SHADER_DESCRIPTOR_TYPE_UAV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_CBV
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
@ VKD3D_SHADER_DESCRIPTOR_TYPE_SRV
@ VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC
@ VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_NONE
@ VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE
@ VKD3D_SHADER_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DATA_STATIC
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_NONE
@ VKD3D_SHADER_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE
vkd3d_shader_root_signature_version
@ VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_1
@ VKD3D_SHADER_ROOT_SIGNATURE_VERSION_1_0
@ VKD3D_SHADER_MINIMUM_PRECISION_NONE
VKD3D_SHADER_API void vkd3d_shader_free_root_signature(struct vkd3d_shader_versioned_root_signature_desc *root_signature)
void vkd3d_shader_message_context_cleanup(struct vkd3d_shader_message_context *context)
bool vkd3d_shader_message_context_copy_messages(struct vkd3d_shader_message_context *context, char **out)
size_t bytecode_align(struct vkd3d_bytecode_buffer *buffer)
void vkd3d_shader_message_context_init(struct vkd3d_shader_message_context *context, enum vkd3d_shader_log_level log_level)
void shader_signature_cleanup(struct shader_signature *signature)
void set_u32(struct vkd3d_bytecode_buffer *buffer, size_t offset, uint32_t value)
size_t bytecode_put_bytes(struct vkd3d_bytecode_buffer *buffer, const void *bytes, size_t size)
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_OFFSET
@ VKD3D_SHADER_ERROR_DXBC_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_DXBC_INVALID_SIZE
@ VKD3D_SHADER_ERROR_RS_OUT_OF_MEMORY
@ VKD3D_SHADER_ERROR_RS_MIXED_DESCRIPTOR_RANGE_TYPES
@ VKD3D_SHADER_ERROR_DXBC_INVALID_MAGIC
@ VKD3D_SHADER_ERROR_DXBC_INVALID_SIGNATURE
@ VKD3D_SHADER_ERROR_RS_INVALID_DESCRIPTOR_RANGE_TYPE
@ VKD3D_SHADER_ERROR_RS_INVALID_ROOT_PARAMETER_TYPE
@ VKD3D_SHADER_ERROR_RS_INVALID_VERSION
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHUNK_SIZE
@ VKD3D_SHADER_ERROR_DXBC_INVALID_CHECKSUM
@ VKD3D_SHADER_ERROR_DXBC_INVALID_VERSION
#define vkd3d_shader_message_context_trace_messages(context)
static size_t put_f32(struct vkd3d_bytecode_buffer *buffer, float value)
#define VKD3D_DXBC_HEADER_SIZE
static size_t bytecode_get_size(struct vkd3d_bytecode_buffer *buffer)
@ VKD3D_ERROR_INVALID_ARGUMENT
@ VKD3D_ERROR_OUT_OF_MEMORY
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static size_t align(size_t addr, size_t alignment)