[PATCH vkd3d 2/4] libs/vkd3d-shader: Factor out shader_dump_instruction_flags().
Józef Kucia
joseph.kucia at gmail.com
Tue Jun 5 06:52:57 CDT 2018
From: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Józef Kucia <jkucia at 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
--
2.16.4
More information about the wine-devel
mailing list