vkd3d-shader/ir: Introduce vsir_data_type_get_name().

This commit is contained in:
Henri Verbeet
2025-08-25 16:53:24 +02:00
parent 02d70be6ef
commit 9f2e122239
Notes: Henri Verbeet 2025-09-02 11:46:09 +02:00
Approved-by: Francisco Casas (@fcasas)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1706
3 changed files with 32 additions and 20 deletions

View File

@@ -390,27 +390,10 @@ static void shader_print_resource_type(struct vkd3d_d3d_asm_compiler *compiler,
static void shader_print_data_type(struct vkd3d_d3d_asm_compiler *compiler, enum vsir_data_type type) static void shader_print_data_type(struct vkd3d_d3d_asm_compiler *compiler, enum vsir_data_type type)
{ {
static const char *const data_type_names[] = const char *name;
{
[VSIR_DATA_BOOL ] = "bool",
[VSIR_DATA_F16 ] = "half",
[VSIR_DATA_F32 ] = "float",
[VSIR_DATA_F64 ] = "double",
[VSIR_DATA_I32 ] = "int",
[VSIR_DATA_U8 ] = "uint8",
[VSIR_DATA_U16 ] = "uint16",
[VSIR_DATA_U32 ] = "uint",
[VSIR_DATA_U64 ] = "uint64",
[VSIR_DATA_SNORM ] = "snorm",
[VSIR_DATA_UNORM ] = "unorm",
[VSIR_DATA_OPAQUE ] = "opaque",
[VSIR_DATA_MIXED ] = "mixed",
[VSIR_DATA_CONTINUED] = "<continued>",
[VSIR_DATA_UNUSED ] = "<unused>",
};
if (type < ARRAY_SIZE(data_type_names)) if ((name = vsir_data_type_get_name(type, NULL)))
vkd3d_string_buffer_printf(&compiler->buffer, "%s", data_type_names[type]); vkd3d_string_buffer_printf(&compiler->buffer, "%s", name);
else else
vkd3d_string_buffer_printf(&compiler->buffer, "%s<unhandled data type %#x>%s", vkd3d_string_buffer_printf(&compiler->buffer, "%s<unhandled data type %#x>%s",
compiler->colours.error, type, compiler->colours.reset); compiler->colours.error, type, compiler->colours.reset);

View File

@@ -45,6 +45,33 @@ static void vsir_transformation_context_init(struct vsir_transformation_context
}; };
}; };
const char *vsir_data_type_get_name(enum vsir_data_type t, const char *error)
{
static const char * const names[] =
{
[VSIR_DATA_BOOL ] = "bool",
[VSIR_DATA_F16 ] = "half",
[VSIR_DATA_F32 ] = "float",
[VSIR_DATA_F64 ] = "double",
[VSIR_DATA_I32 ] = "int",
[VSIR_DATA_U8 ] = "uint8",
[VSIR_DATA_U16 ] = "uint16",
[VSIR_DATA_U32 ] = "uint",
[VSIR_DATA_U64 ] = "uint64",
[VSIR_DATA_SNORM ] = "snorm",
[VSIR_DATA_UNORM ] = "unorm",
[VSIR_DATA_OPAQUE ] = "opaque",
[VSIR_DATA_MIXED ] = "mixed",
[VSIR_DATA_CONTINUED] = "<continued>",
[VSIR_DATA_UNUSED ] = "<unused>",
};
if ((size_t)t < ARRAY_SIZE(names))
return names[t] ? names[t] : error;
return error;
}
const char *vsir_opcode_get_name(enum vkd3d_shader_opcode op, const char *error) const char *vsir_opcode_get_name(enum vkd3d_shader_opcode op, const char *error)
{ {
static const char * const names[] = static const char * const names[] =

View File

@@ -734,6 +734,8 @@ enum vsir_data_type
VSIR_DATA_TYPE_COUNT, VSIR_DATA_TYPE_COUNT,
}; };
const char *vsir_data_type_get_name(enum vsir_data_type t, const char *error);
static inline bool data_type_is_integer(enum vsir_data_type data_type) static inline bool data_type_is_integer(enum vsir_data_type data_type)
{ {
return data_type == VSIR_DATA_I32 || data_type == VSIR_DATA_U8 || data_type == VSIR_DATA_U16 return data_type == VSIR_DATA_I32 || data_type == VSIR_DATA_U8 || data_type == VSIR_DATA_U16