mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/ir: Introduce vsir_data_type_get_name().
This commit is contained in:
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
@@ -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 const char *const data_type_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>",
|
||||
};
|
||||
const char *name;
|
||||
|
||||
if (type < ARRAY_SIZE(data_type_names))
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "%s", data_type_names[type]);
|
||||
if ((name = vsir_data_type_get_name(type, NULL)))
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "%s", name);
|
||||
else
|
||||
vkd3d_string_buffer_printf(&compiler->buffer, "%s<unhandled data type %#x>%s",
|
||||
compiler->colours.error, type, compiler->colours.reset);
|
||||
|
@@ -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)
|
||||
{
|
||||
static const char * const names[] =
|
||||
|
@@ -734,6 +734,8 @@ enum vsir_data_type
|
||||
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)
|
||||
{
|
||||
return data_type == VSIR_DATA_I32 || data_type == VSIR_DATA_U8 || data_type == VSIR_DATA_U16
|
||||
|
Reference in New Issue
Block a user