From 9f2e1222398bb2e9fbf65843c7acc3872dfcab55 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 25 Aug 2025 16:53:24 +0200 Subject: [PATCH] vkd3d-shader/ir: Introduce vsir_data_type_get_name(). --- libs/vkd3d-shader/d3d_asm.c | 23 +++----------------- libs/vkd3d-shader/ir.c | 27 ++++++++++++++++++++++++ libs/vkd3d-shader/vkd3d_shader_private.h | 2 ++ 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/libs/vkd3d-shader/d3d_asm.c b/libs/vkd3d-shader/d3d_asm.c index 6425a8f62..58135e71f 100644 --- a/libs/vkd3d-shader/d3d_asm.c +++ b/libs/vkd3d-shader/d3d_asm.c @@ -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] = "", - [VSIR_DATA_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%s", compiler->colours.error, type, compiler->colours.reset); diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index 29176c42f..06d623476 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -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] = "", + [VSIR_DATA_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[] = diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 1e199ceb9..a3b763ff6 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -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