vkd3d-shader/spirv: Handle "LiteralInteger" operands.

This commit is contained in:
Henri Verbeet
2025-03-01 15:14:40 +01:00
parent 8afeb13035
commit 0e092aef70
Notes: Henri Verbeet 2025-03-10 15:22:45 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1382

View File

@@ -320,6 +320,13 @@ static void spirv_parser_print_id(struct spirv_parser *parser,
prefix, parser->colours.id, id, parser->colours.reset, suffix); prefix, parser->colours.id, id, parser->colours.reset, suffix);
} }
static void spirv_parser_print_uint_literal(struct spirv_parser *parser,
struct vkd3d_string_buffer *buffer, const char *prefix, uint32_t i, const char *suffix)
{
vkd3d_string_buffer_printf(buffer, "%s%s%u%s%s",
prefix, parser->colours.literal, i, parser->colours.reset, suffix);
}
static void spirv_parser_print_opcode(struct spirv_parser *parser, static void spirv_parser_print_opcode(struct spirv_parser *parser,
struct vkd3d_string_buffer *buffer, const char *name) struct vkd3d_string_buffer *buffer, const char *name)
{ {
@@ -456,6 +463,10 @@ static bool spirv_parser_parse_operand(struct spirv_parser *parser, struct vkd3d
*result_id = spirv_parser_read_u32(parser); *result_id = spirv_parser_read_u32(parser);
return true; return true;
case SPIRV_PARSER_OPERAND_TYPE_LITERAL_INTEGER:
spirv_parser_print_uint_literal(parser, buffer, " ", spirv_parser_read_u32(parser), "");
return true;
default: default:
spirv_parser_warning(parser, VKD3D_SHADER_ERROR_SPV_NOT_IMPLEMENTED, spirv_parser_warning(parser, VKD3D_SHADER_ERROR_SPV_NOT_IMPLEMENTED,
"Unhandled operand type \"%s\".", info->name); "Unhandled operand type \"%s\".", info->name);