From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- libs/vkd3d-shader/trace.c | 58 +++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 27 deletions(-)
diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c index faa009e03a4c..ce8db46b6f21 100644 --- a/libs/vkd3d-shader/trace.c +++ b/libs/vkd3d-shader/trace.c @@ -1234,58 +1234,62 @@ static void shader_dump_interpolation_mode(struct vkd3d_string_buffer *buffer, } }
-void vkd3d_shader_trace(void *data) +static void shader_dump_version(struct vkd3d_string_buffer *buffer, + const struct vkd3d_shader_version *shader_version) { - struct vkd3d_shader_version shader_version; - struct vkd3d_string_buffer buffer; - const char *type_prefix; - const char *p, *q; - const DWORD *ptr; - DWORD i; + const char *prefix;
- if (!string_buffer_init(&buffer)) - { - ERR("Failed to initialize string buffer.\n"); - return; - } - - shader_sm4_read_header(data, &ptr, &shader_version); - - TRACE("Parsing %p.\n", ptr); - - switch (shader_version.type) + switch (shader_version->type) { case VKD3D_SHADER_TYPE_VERTEX: - type_prefix = "vs"; + prefix = "vs"; break;
case VKD3D_SHADER_TYPE_HULL: - type_prefix = "hs"; + prefix = "hs"; break;
case VKD3D_SHADER_TYPE_DOMAIN: - type_prefix = "ds"; + prefix = "ds"; break;
case VKD3D_SHADER_TYPE_GEOMETRY: - type_prefix = "gs"; + prefix = "gs"; break;
case VKD3D_SHADER_TYPE_PIXEL: - type_prefix = "ps"; + prefix = "ps"; break;
case VKD3D_SHADER_TYPE_COMPUTE: - type_prefix = "cs"; + prefix = "cs"; break;
default: - FIXME("Unhandled shader type %#x.\n", shader_version.type); - type_prefix = "unknown"; + FIXME("Unhandled shader type %#x.\n", shader_version->type); + prefix = "unknown"; break; }
- shader_addline(&buffer, "%s_%u_%u\n", type_prefix, shader_version.major, shader_version.minor); + shader_addline(buffer, "%s_%u_%u\n", prefix, shader_version->major, shader_version->minor); +} + +void vkd3d_shader_trace(void *data) +{ + struct vkd3d_shader_version shader_version; + struct vkd3d_string_buffer buffer; + const char *p, *q; + const DWORD *ptr; + DWORD i; + + if (!string_buffer_init(&buffer)) + { + ERR("Failed to initialize string buffer.\n"); + return; + } + + shader_sm4_read_header(data, &ptr, &shader_version); + shader_dump_version(&buffer, &shader_version);
while (!shader_sm4_is_end(data, &ptr)) {
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- libs/vkd3d-shader/trace.c | 126 ++++++++++++++++--------------- libs/vkd3d-shader/vkd3d_shader_private.h | 12 +-- 2 files changed, 73 insertions(+), 65 deletions(-)
diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c index ce8db46b6f21..f987e3caa877 100644 --- a/libs/vkd3d-shader/trace.c +++ b/libs/vkd3d-shader/trace.c @@ -1274,6 +1274,72 @@ static void shader_dump_version(struct vkd3d_string_buffer *buffer, shader_addline(buffer, "%s_%u_%u\n", prefix, shader_version->major, shader_version->minor); }
+static void shader_dump_instruction_flags(struct vkd3d_string_buffer *buffer, + const struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_version *shader_version) +{ + switch (ins->handler_idx) + { + case VKD3DSIH_BREAKP: + case VKD3DSIH_CONTINUEP: + case VKD3DSIH_IF: + case VKD3DSIH_RETP: + case VKD3DSIH_TEXKILL: + switch (ins->flags) + { + case VKD3D_SHADER_CONDITIONAL_OP_NZ: shader_addline(buffer, "_nz"); break; + case VKD3D_SHADER_CONDITIONAL_OP_Z: shader_addline(buffer, "_z"); break; + default: shader_addline(buffer, "_unrecognized(%#x)", ins->flags); break; + } + break; + + case VKD3DSIH_IFC: + case VKD3DSIH_BREAKC: + switch (ins->flags) + { + case VKD3D_SHADER_REL_OP_GT: shader_addline(buffer, "_gt"); break; + case VKD3D_SHADER_REL_OP_EQ: shader_addline(buffer, "_eq"); break; + case VKD3D_SHADER_REL_OP_GE: shader_addline(buffer, "_ge"); break; + case VKD3D_SHADER_REL_OP_LT: shader_addline(buffer, "_lt"); break; + case VKD3D_SHADER_REL_OP_NE: shader_addline(buffer, "_ne"); break; + case VKD3D_SHADER_REL_OP_LE: shader_addline(buffer, "_le"); break; + default: shader_addline(buffer, "_(%u)", ins->flags); + } + break; + + case VKD3DSIH_RESINFO: + switch (ins->flags) + { + case VKD3DSI_NONE: break; + case VKD3DSI_RESINFO_RCP_FLOAT: shader_addline(buffer, "_rcpFloat"); break; + case VKD3DSI_RESINFO_UINT: shader_addline(buffer, "_uint"); break; + default: shader_addline(buffer, "_unrecognized(%#x)", ins->flags); + } + break; + + case VKD3DSIH_SAMPLE_INFO: + switch (ins->flags) + { + case VKD3DSI_NONE: break; + case VKD3DSI_SAMPLE_INFO_UINT: shader_addline(buffer, "_uint"); break; + default: shader_addline(buffer, "_unrecognized(%#x)", ins->flags); + } + break; + + case VKD3DSIH_SYNC: + shader_dump_sync_flags(buffer, ins->flags); + break; + + case VKD3DSIH_TEX: + if (shader_version->major >= 2 && (ins->flags & VKD3DSI_TEXLD_PROJECT)) + shader_addline(buffer, "p"); + break; + + default: + shader_dump_precise_flags(buffer, ins->flags); + break; + } +} + void vkd3d_shader_trace(void *data) { struct vkd3d_shader_version shader_version; @@ -1518,65 +1584,7 @@ void vkd3d_shader_trace(void *data)
shader_addline(&buffer, "%s", shader_opcode_names[ins.handler_idx]);
- if (ins.handler_idx == VKD3DSIH_BREAKP - || ins.handler_idx == VKD3DSIH_CONTINUEP - || ins.handler_idx == VKD3DSIH_IF - || ins.handler_idx == VKD3DSIH_RETP - || ins.handler_idx == VKD3DSIH_TEXKILL) - { - switch (ins.flags) - { - case VKD3D_SHADER_CONDITIONAL_OP_NZ: shader_addline(&buffer, "_nz"); break; - case VKD3D_SHADER_CONDITIONAL_OP_Z: shader_addline(&buffer, "_z"); break; - default: shader_addline(&buffer, "_unrecognized(%#x)", ins.flags); break; - } - } - else if (ins.handler_idx == VKD3DSIH_IFC - || ins.handler_idx == VKD3DSIH_BREAKC) - { - switch (ins.flags) - { - case VKD3D_SHADER_REL_OP_GT: shader_addline(&buffer, "_gt"); break; - case VKD3D_SHADER_REL_OP_EQ: shader_addline(&buffer, "_eq"); break; - case VKD3D_SHADER_REL_OP_GE: shader_addline(&buffer, "_ge"); break; - case VKD3D_SHADER_REL_OP_LT: shader_addline(&buffer, "_lt"); break; - case VKD3D_SHADER_REL_OP_NE: shader_addline(&buffer, "_ne"); break; - case VKD3D_SHADER_REL_OP_LE: shader_addline(&buffer, "_le"); break; - default: shader_addline(&buffer, "_(%u)", ins.flags); - } - } - else if (ins.handler_idx == VKD3DSIH_TEX - && shader_version.major >= 2 - && (ins.flags & VKD3DSI_TEXLD_PROJECT)) - { - shader_addline(&buffer, "p"); - } - else if (ins.handler_idx == VKD3DSIH_RESINFO && ins.flags) - { - switch (ins.flags) - { - case VKD3DSI_RESINFO_RCP_FLOAT: shader_addline(&buffer, "_rcpFloat"); break; - case VKD3DSI_RESINFO_UINT: shader_addline(&buffer, "_uint"); break; - default: shader_addline(&buffer, "_unrecognized(%#x)", ins.flags); - } - } - else if (ins.handler_idx == VKD3DSIH_SAMPLE_INFO && ins.flags) - { - switch (ins.flags) - { - case VKD3DSI_SAMPLE_INFO_UINT: shader_addline(&buffer, "_uint"); break; - default: shader_addline(&buffer, "_unrecognized(%#x)", ins.flags); - } - } - else if (ins.handler_idx == VKD3DSIH_SYNC) - { - shader_dump_sync_flags(&buffer, ins.flags); - } - else - { - shader_dump_precise_flags(&buffer, ins.flags); - } - + shader_dump_instruction_flags(&buffer, &ins, &shader_version); if (vkd3d_shader_instruction_has_texel_offset(&ins)) shader_addline(&buffer, "(%d,%d,%d)", ins.texel_offset.u, ins.texel_offset.v, ins.texel_offset.w);
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 8ed700be3756..7fc42627f820 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -480,12 +480,12 @@ enum vkd3d_tessellator_partitioning };
-#define VKD3DSI_TEXLD_PROJECT 0x1 - -#define VKD3DSI_INDEXED_DYNAMIC 0x4 -#define VKD3DSI_RESINFO_RCP_FLOAT 0x1 -#define VKD3DSI_RESINFO_UINT 0x2 -#define VKD3DSI_SAMPLE_INFO_UINT 0x1 +#define VKD3DSI_NONE 0x0 +#define VKD3DSI_TEXLD_PROJECT 0x1 +#define VKD3DSI_INDEXED_DYNAMIC 0x4 +#define VKD3DSI_RESINFO_RCP_FLOAT 0x1 +#define VKD3DSI_RESINFO_UINT 0x2 +#define VKD3DSI_SAMPLE_INFO_UINT 0x1 #define VKD3DSI_SAMPLER_COMPARISON_MODE 0x1
#define VKD3DSI_PRECISE_X 0x100
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- libs/vkd3d-shader/trace.c | 484 ++++++++++++++++++++++++---------------------- 1 file changed, 249 insertions(+), 235 deletions(-)
diff --git a/libs/vkd3d-shader/trace.c b/libs/vkd3d-shader/trace.c index f987e3caa877..420ccea37f94 100644 --- a/libs/vkd3d-shader/trace.c +++ b/libs/vkd3d-shader/trace.c @@ -1340,13 +1340,260 @@ static void shader_dump_instruction_flags(struct vkd3d_string_buffer *buffer, } }
+static void shader_dump_instruction(struct vkd3d_string_buffer *buffer, + const struct vkd3d_shader_instruction *ins, const struct vkd3d_shader_version *shader_version) +{ + unsigned int i; + + switch (ins->handler_idx) + { + case VKD3DSIH_DCL: + case VKD3DSIH_DCL_UAV_TYPED: + shader_dump_decl_usage(buffer, &ins->declaration.semantic, ins->flags, shader_version); + shader_dump_ins_modifiers(buffer, &ins->declaration.semantic.reg); + shader_addline(buffer, " "); + shader_dump_dst_param(buffer, &ins->declaration.semantic.reg, shader_version); + break; + + case VKD3DSIH_DCL_CONSTANT_BUFFER: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_src_param(buffer, &ins->declaration.src, shader_version); + shader_addline(buffer, ", %s", + ins->flags & VKD3DSI_INDEXED_DYNAMIC ? "dynamicIndexed" : "immediateIndexed"); + break; + + case VKD3DSIH_DCL_FUNCTION_BODY: + shader_addline(buffer, "%s fb%u", + shader_opcode_names[ins->handler_idx], ins->declaration.index); + break; + + case VKD3DSIH_DCL_FUNCTION_TABLE: + shader_addline(buffer, "%s ft%u = {...}", + shader_opcode_names[ins->handler_idx], ins->declaration.index); + break; + + case VKD3DSIH_DCL_GLOBAL_FLAGS: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_global_flags(buffer, ins->flags); + break; + + case VKD3DSIH_DCL_HS_MAX_TESSFACTOR: + shader_addline(buffer, "%s %.8e", shader_opcode_names[ins->handler_idx], + ins->declaration.max_tessellation_factor); + break; + + case VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER: + shader_addline(buffer, "%s {\n", shader_opcode_names[ins->handler_idx]); + for (i = 0; i < ins->declaration.icb->vec4_count; ++i) + { + shader_addline(buffer, " {0x%08x, 0x%08x, 0x%08x, 0x%08x},\n", + ins->declaration.icb->data[4 * i + 0], + ins->declaration.icb->data[4 * i + 1], + ins->declaration.icb->data[4 * i + 2], + ins->declaration.icb->data[4 * i + 3]); + } + shader_addline(buffer, "}"); + break; + + case VKD3DSIH_DCL_INDEX_RANGE: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.index_range.first_register, shader_version); + shader_addline(buffer, " %u", ins->declaration.index_range.last_register); + break; + + case VKD3DSIH_DCL_INDEXABLE_TEMP: + shader_addline(buffer, "%s x[%u][%u], %u", shader_opcode_names[ins->handler_idx], + ins->declaration.indexable_temp.register_idx, + ins->declaration.indexable_temp.register_size, + ins->declaration.indexable_temp.component_count); + break; + + case VKD3DSIH_DCL_INPUT_PS: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_interpolation_mode(buffer, ins->flags); + shader_addline(buffer, " "); + shader_dump_dst_param(buffer, &ins->declaration.dst, shader_version); + break; + + case VKD3DSIH_DCL_INPUT_PS_SGV: + case VKD3DSIH_DCL_INPUT_SGV: + case VKD3DSIH_DCL_INPUT_SIV: + case VKD3DSIH_DCL_OUTPUT_SIV: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.register_semantic.reg, shader_version); + shader_addline(buffer, ", "); + shader_dump_shader_input_sysval_semantic(buffer, ins->declaration.register_semantic.sysval_semantic); + break; + + case VKD3DSIH_DCL_INPUT_PS_SIV: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_interpolation_mode(buffer, ins->flags); + shader_addline(buffer, " "); + shader_dump_dst_param(buffer, &ins->declaration.register_semantic.reg, shader_version); + shader_addline(buffer, ", "); + shader_dump_shader_input_sysval_semantic(buffer, ins->declaration.register_semantic.sysval_semantic); + break; + + case VKD3DSIH_DCL_INPUT: + case VKD3DSIH_DCL_OUTPUT: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.dst, shader_version); + break; + + case VKD3DSIH_DCL_INPUT_PRIMITIVE: + case VKD3DSIH_DCL_OUTPUT_TOPOLOGY: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_primitive_type(buffer, &ins->declaration.primitive_type); + break; + + case VKD3DSIH_DCL_INTERFACE: + shader_addline(buffer, "%s fp[%u][%u][%u] = {...}", + shader_opcode_names[ins->handler_idx], ins->declaration.fp.index, + ins->declaration.fp.array_size, ins->declaration.fp.body_count); + break; + + case VKD3DSIH_DCL_RESOURCE_RAW: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.dst, shader_version); + break; + + case VKD3DSIH_DCL_RESOURCE_STRUCTURED: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.structured_resource.reg, shader_version); + shader_addline(buffer, ", %u", ins->declaration.structured_resource.byte_stride); + break; + + case VKD3DSIH_DCL_SAMPLER: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.dst, shader_version); + if (ins->flags == VKD3DSI_SAMPLER_COMPARISON_MODE) + shader_addline(buffer, ", comparisonMode"); + break; + + case VKD3DSIH_DCL_TEMPS: + case VKD3DSIH_DCL_GS_INSTANCES: + case VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT: + case VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT: + case VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT: + case VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT: + case VKD3DSIH_DCL_VERTICES_OUT: + shader_addline(buffer, "%s %u", shader_opcode_names[ins->handler_idx], ins->declaration.count); + break; + + case VKD3DSIH_DCL_TESSELLATOR_DOMAIN: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_tessellator_domain(buffer, ins->declaration.tessellator_domain); + break; + + case VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_tessellator_output_primitive(buffer, ins->declaration.tessellator_output_primitive); + break; + + case VKD3DSIH_DCL_TESSELLATOR_PARTITIONING: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_tessellator_partitioning(buffer, ins->declaration.tessellator_partitioning); + break; + + case VKD3DSIH_DCL_TGSM_RAW: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.tgsm_raw.reg, shader_version); + shader_addline(buffer, ", %u", ins->declaration.tgsm_raw.byte_count); + break; + + case VKD3DSIH_DCL_TGSM_STRUCTURED: + shader_addline(buffer, "%s ", shader_opcode_names[ins->handler_idx]); + shader_dump_dst_param(buffer, &ins->declaration.tgsm_structured.reg, shader_version); + shader_addline(buffer, ", %u, %u", ins->declaration.tgsm_structured.byte_stride, + ins->declaration.tgsm_structured.structure_count); + break; + + case VKD3DSIH_DCL_THREAD_GROUP: + shader_addline(buffer, "%s %u, %u, %u", shader_opcode_names[ins->handler_idx], + ins->declaration.thread_group_size.x, + ins->declaration.thread_group_size.y, + ins->declaration.thread_group_size.z); + break; + + case VKD3DSIH_DCL_UAV_RAW: + shader_addline(buffer, "%s", shader_opcode_names[ins->handler_idx]); + shader_dump_uav_flags(buffer, ins->flags); + shader_addline(buffer, " "); + shader_dump_dst_param(buffer, &ins->declaration.dst, shader_version); + break; + + case VKD3DSIH_DCL_UAV_STRUCTURED: + shader_addline(buffer, "%s", shader_opcode_names[ins->handler_idx]); + shader_dump_uav_flags(buffer, ins->flags); + shader_addline(buffer, " "); + shader_dump_dst_param(buffer, &ins->declaration.structured_resource.reg, shader_version); + shader_addline(buffer, ", %u", ins->declaration.structured_resource.byte_stride); + break; + + case VKD3DSIH_DEF: + shader_addline(buffer, "def c%u = %.8e, %.8e, %.8e, %.8e", + shader_get_float_offset(ins->dst[0].reg.type, ins->dst[0].reg.idx[0].offset), + ins->src[0].reg.u.immconst_float[0], ins->src[0].reg.u.immconst_float[1], + ins->src[0].reg.u.immconst_float[2], ins->src[0].reg.u.immconst_float[3]); + break; + + case VKD3DSIH_DEFI: + shader_addline(buffer, "defi i%u = %d, %d, %d, %d", ins->dst[0].reg.idx[0].offset, + ins->src[0].reg.u.immconst_uint[0], ins->src[0].reg.u.immconst_uint[1], + ins->src[0].reg.u.immconst_uint[2], ins->src[0].reg.u.immconst_uint[3]); + break; + + case VKD3DSIH_DEFB: + shader_addline(buffer, "defb b%u = %s", + ins->dst[0].reg.idx[0].offset, ins->src[0].reg.u.immconst_uint[0] ? "true" : "false"); + break; + + default: + if (ins->predicate) + { + shader_addline(buffer, "("); + shader_dump_src_param(buffer, ins->predicate, shader_version); + shader_addline(buffer, ") "); + } + + /* PixWin marks instructions with the coissue flag with a '+' */ + if (ins->coissue) + shader_addline(buffer, "+"); + + shader_addline(buffer, "%s", shader_opcode_names[ins->handler_idx]); + + shader_dump_instruction_flags(buffer, ins, shader_version); + if (vkd3d_shader_instruction_has_texel_offset(ins)) + { + shader_addline(buffer, "(%d,%d,%d)", + ins->texel_offset.u, ins->texel_offset.v, ins->texel_offset.w); + } + + for (i = 0; i < ins->dst_count; ++i) + { + shader_dump_ins_modifiers(buffer, &ins->dst[i]); + shader_addline(buffer, !i ? " " : ", "); + shader_dump_dst_param(buffer, &ins->dst[i], shader_version); + } + + /* Other source tokens */ + for (i = ins->dst_count; i < (ins->dst_count + ins->src_count); ++i) + { + shader_addline(buffer, !i ? " " : ", "); + shader_dump_src_param(buffer, &ins->src[i - ins->dst_count], shader_version); + } + break; + } + + shader_addline(buffer, "\n"); +} + void vkd3d_shader_trace(void *data) { struct vkd3d_shader_version shader_version; struct vkd3d_string_buffer buffer; const char *p, *q; const DWORD *ptr; - DWORD i;
if (!string_buffer_init(&buffer)) { @@ -1369,240 +1616,7 @@ void vkd3d_shader_trace(void *data) continue; }
- if (ins.handler_idx == VKD3DSIH_DCL || ins.handler_idx == VKD3DSIH_DCL_UAV_TYPED) - { - shader_dump_decl_usage(&buffer, &ins.declaration.semantic, ins.flags, &shader_version); - shader_dump_ins_modifiers(&buffer, &ins.declaration.semantic.reg); - shader_addline(&buffer, " "); - shader_dump_dst_param(&buffer, &ins.declaration.semantic.reg, &shader_version); - } - else if (ins.handler_idx == VKD3DSIH_DCL_CONSTANT_BUFFER) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_src_param(&buffer, &ins.declaration.src, &shader_version); - shader_addline(&buffer, ", %s", - ins.flags & VKD3DSI_INDEXED_DYNAMIC ? "dynamicIndexed" : "immediateIndexed"); - } - else if (ins.handler_idx == VKD3DSIH_DCL_FUNCTION_BODY) - { - shader_addline(&buffer, "%s fb%u", - shader_opcode_names[ins.handler_idx], ins.declaration.index); - } - else if (ins.handler_idx == VKD3DSIH_DCL_FUNCTION_TABLE) - { - shader_addline(&buffer, "%s ft%u = {...}", - shader_opcode_names[ins.handler_idx], ins.declaration.index); - } - else if (ins.handler_idx == VKD3DSIH_DCL_GLOBAL_FLAGS) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_global_flags(&buffer, ins.flags); - } - else if (ins.handler_idx == VKD3DSIH_DCL_HS_MAX_TESSFACTOR) - { - shader_addline(&buffer, "%s %.8e", shader_opcode_names[ins.handler_idx], - ins.declaration.max_tessellation_factor); - } - else if (ins.handler_idx == VKD3DSIH_DCL_IMMEDIATE_CONSTANT_BUFFER) - { - shader_addline(&buffer, "%s {\n", shader_opcode_names[ins.handler_idx]); - for (i = 0; i < ins.declaration.icb->vec4_count; ++i) - { - shader_addline(&buffer, " {0x%08x, 0x%08x, 0x%08x, 0x%08x},\n", - ins.declaration.icb->data[4 * i + 0], - ins.declaration.icb->data[4 * i + 1], - ins.declaration.icb->data[4 * i + 2], - ins.declaration.icb->data[4 * i + 3]); - } - shader_addline(&buffer, "}"); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INDEX_RANGE) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.index_range.first_register, &shader_version); - shader_addline(&buffer, " %u", ins.declaration.index_range.last_register); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INDEXABLE_TEMP) - { - shader_addline(&buffer, "%s x[%u][%u], %u", shader_opcode_names[ins.handler_idx], - ins.declaration.indexable_temp.register_idx, - ins.declaration.indexable_temp.register_size, - ins.declaration.indexable_temp.component_count); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INPUT_PS) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_interpolation_mode(&buffer, ins.flags); - shader_addline(&buffer, " "); - shader_dump_dst_param(&buffer, &ins.declaration.dst, &shader_version); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INPUT_PS_SGV - || ins.handler_idx == VKD3DSIH_DCL_INPUT_SGV - || ins.handler_idx == VKD3DSIH_DCL_INPUT_SIV - || ins.handler_idx == VKD3DSIH_DCL_OUTPUT_SIV) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.register_semantic.reg, &shader_version); - shader_addline(&buffer, ", "); - shader_dump_shader_input_sysval_semantic(&buffer, ins.declaration.register_semantic.sysval_semantic); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INPUT_PS_SIV) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_interpolation_mode(&buffer, ins.flags); - shader_addline(&buffer, " "); - shader_dump_dst_param(&buffer, &ins.declaration.register_semantic.reg, &shader_version); - shader_addline(&buffer, ", "); - shader_dump_shader_input_sysval_semantic(&buffer, ins.declaration.register_semantic.sysval_semantic); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INPUT - || ins.handler_idx == VKD3DSIH_DCL_OUTPUT) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.dst, &shader_version); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INPUT_PRIMITIVE - || ins.handler_idx == VKD3DSIH_DCL_OUTPUT_TOPOLOGY) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_primitive_type(&buffer, &ins.declaration.primitive_type); - } - else if (ins.handler_idx == VKD3DSIH_DCL_INTERFACE) - { - shader_addline(&buffer, "%s fp[%u][%u][%u] = {...}", - shader_opcode_names[ins.handler_idx], ins.declaration.fp.index, - ins.declaration.fp.array_size, ins.declaration.fp.body_count); - } - else if (ins.handler_idx == VKD3DSIH_DCL_RESOURCE_RAW) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.dst, &shader_version); - } - else if (ins.handler_idx == VKD3DSIH_DCL_RESOURCE_STRUCTURED) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.structured_resource.reg, &shader_version); - shader_addline(&buffer, ", %u", ins.declaration.structured_resource.byte_stride); - } - else if (ins.handler_idx == VKD3DSIH_DCL_SAMPLER) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.dst, &shader_version); - if (ins.flags == VKD3DSI_SAMPLER_COMPARISON_MODE) - shader_addline(&buffer, ", comparisonMode"); - } - else if (ins.handler_idx == VKD3DSIH_DCL_TEMPS - || ins.handler_idx == VKD3DSIH_DCL_GS_INSTANCES - || ins.handler_idx == VKD3DSIH_DCL_HS_FORK_PHASE_INSTANCE_COUNT - || ins.handler_idx == VKD3DSIH_DCL_HS_JOIN_PHASE_INSTANCE_COUNT - || ins.handler_idx == VKD3DSIH_DCL_INPUT_CONTROL_POINT_COUNT - || ins.handler_idx == VKD3DSIH_DCL_OUTPUT_CONTROL_POINT_COUNT - || ins.handler_idx == VKD3DSIH_DCL_VERTICES_OUT) - { - shader_addline(&buffer, "%s %u", shader_opcode_names[ins.handler_idx], ins.declaration.count); - } - else if (ins.handler_idx == VKD3DSIH_DCL_TESSELLATOR_DOMAIN) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_tessellator_domain(&buffer, ins.declaration.tessellator_domain); - } - else if (ins.handler_idx == VKD3DSIH_DCL_TESSELLATOR_OUTPUT_PRIMITIVE) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_tessellator_output_primitive(&buffer, ins.declaration.tessellator_output_primitive); - } - else if (ins.handler_idx == VKD3DSIH_DCL_TESSELLATOR_PARTITIONING) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_tessellator_partitioning(&buffer, ins.declaration.tessellator_partitioning); - } - else if (ins.handler_idx == VKD3DSIH_DCL_TGSM_RAW) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.tgsm_raw.reg, &shader_version); - shader_addline(&buffer, ", %u", ins.declaration.tgsm_raw.byte_count); - } - else if (ins.handler_idx == VKD3DSIH_DCL_TGSM_STRUCTURED) - { - shader_addline(&buffer, "%s ", shader_opcode_names[ins.handler_idx]); - shader_dump_dst_param(&buffer, &ins.declaration.tgsm_structured.reg, &shader_version); - shader_addline(&buffer, ", %u, %u", ins.declaration.tgsm_structured.byte_stride, - ins.declaration.tgsm_structured.structure_count); - } - else if (ins.handler_idx == VKD3DSIH_DCL_THREAD_GROUP) - { - shader_addline(&buffer, "%s %u, %u, %u", shader_opcode_names[ins.handler_idx], - ins.declaration.thread_group_size.x, - ins.declaration.thread_group_size.y, - ins.declaration.thread_group_size.z); - } - else if (ins.handler_idx == VKD3DSIH_DCL_UAV_RAW) - { - shader_addline(&buffer, "%s", shader_opcode_names[ins.handler_idx]); - shader_dump_uav_flags(&buffer, ins.flags); - shader_addline(&buffer, " "); - shader_dump_dst_param(&buffer, &ins.declaration.dst, &shader_version); - } - else if (ins.handler_idx == VKD3DSIH_DCL_UAV_STRUCTURED) - { - shader_addline(&buffer, "%s", shader_opcode_names[ins.handler_idx]); - shader_dump_uav_flags(&buffer, ins.flags); - shader_addline(&buffer, " "); - shader_dump_dst_param(&buffer, &ins.declaration.structured_resource.reg, &shader_version); - shader_addline(&buffer, ", %u", ins.declaration.structured_resource.byte_stride); - } - else if (ins.handler_idx == VKD3DSIH_DEF) - { - shader_addline(&buffer, "def c%u = %.8e, %.8e, %.8e, %.8e", - shader_get_float_offset(ins.dst[0].reg.type, ins.dst[0].reg.idx[0].offset), - ins.src[0].reg.u.immconst_float[0], ins.src[0].reg.u.immconst_float[1], - ins.src[0].reg.u.immconst_float[2], ins.src[0].reg.u.immconst_float[3]); - } - else if (ins.handler_idx == VKD3DSIH_DEFI) - { - shader_addline(&buffer, "defi i%u = %d, %d, %d, %d", ins.dst[0].reg.idx[0].offset, - ins.src[0].reg.u.immconst_uint[0], ins.src[0].reg.u.immconst_uint[1], - ins.src[0].reg.u.immconst_uint[2], ins.src[0].reg.u.immconst_uint[3]); - } - else if (ins.handler_idx == VKD3DSIH_DEFB) - { - shader_addline(&buffer, "defb b%u = %s", - ins.dst[0].reg.idx[0].offset, ins.src[0].reg.u.immconst_uint[0] ? "true" : "false"); - } - else - { - if (ins.predicate) - { - shader_addline(&buffer, "("); - shader_dump_src_param(&buffer, ins.predicate, &shader_version); - shader_addline(&buffer, ") "); - } - - /* PixWin marks instructions with the coissue flag with a '+' */ - if (ins.coissue) - shader_addline(&buffer, "+"); - - shader_addline(&buffer, "%s", shader_opcode_names[ins.handler_idx]); - - shader_dump_instruction_flags(&buffer, &ins, &shader_version); - if (vkd3d_shader_instruction_has_texel_offset(&ins)) - shader_addline(&buffer, "(%d,%d,%d)", ins.texel_offset.u, ins.texel_offset.v, ins.texel_offset.w); - - for (i = 0; i < ins.dst_count; ++i) - { - shader_dump_ins_modifiers(&buffer, &ins.dst[i]); - shader_addline(&buffer, !i ? " " : ", "); - shader_dump_dst_param(&buffer, &ins.dst[i], &shader_version); - } - - /* Other source tokens */ - for (i = ins.dst_count; i < (ins.dst_count + ins.src_count); ++i) - { - shader_addline(&buffer, !i ? " " : ", "); - shader_dump_src_param(&buffer, &ins.src[i - ins.dst_count], &shader_version); - } - } - shader_addline(&buffer, "\n"); + shader_dump_instruction(&buffer, &ins, &shader_version); }
for (p = buffer.buffer; *p; p = q)
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com
From: Józef Kucia jkucia@codeweavers.com
It's unused.
Signed-off-by: Józef Kucia jkucia@codeweavers.com --- demos/demo_win32.h | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-)
diff --git a/demos/demo_win32.h b/demos/demo_win32.h index 3b61bcf8eeae..d2a54989e9a7 100644 --- a/demos/demo_win32.h +++ b/demos/demo_win32.h @@ -25,10 +25,6 @@
struct demo { - HMODULE d3dcompiler; - HRESULT (WINAPI *compile_from_file)(const WCHAR *filename, const void *defines, void *include, - const char *entry_point, const char *profile, UINT flags1, UINT flags2, - ID3DBlob **code, ID3DBlob **errors); size_t window_count; bool quit;
@@ -198,11 +194,6 @@ static inline bool demo_init(struct demo *demo, void *user_data) { WNDCLASSEXW wc;
- if (!(demo->d3dcompiler = LoadLibraryW(L"d3dcompiler_47"))) - return false; - if (!(demo->compile_from_file = (void *)GetProcAddress(demo->d3dcompiler, "D3DCompileFromFile"))) - goto fail; - wc.cbSize = sizeof(wc); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = demo_window_proc; @@ -216,7 +207,7 @@ static inline bool demo_init(struct demo *demo, void *user_data) wc.lpszClassName = DEMO_WINDOW_CLASS_NAME; wc.hIconSm = LoadIconW(NULL, IDI_WINLOGO); if (!RegisterClassExW(&wc)) - goto fail; + return false;
demo->window_count = 0; demo->quit = false; @@ -224,16 +215,11 @@ static inline bool demo_init(struct demo *demo, void *user_data) demo->idle_func = NULL;
return true; - -fail: - FreeLibrary(demo->d3dcompiler); - return false; }
static inline void demo_cleanup(struct demo *demo) { UnregisterClassW(DEMO_WINDOW_CLASS_NAME, GetModuleHandle(NULL)); - FreeLibrary(demo->d3dcompiler); }
static inline void demo_set_idle_func(struct demo *demo,
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com