mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/msl: Emit indexable temps with the appropriate component count.
This commit is contained in:
committed by
Henri Verbeet
parent
6ed0bd0bab
commit
16b06c295b
Notes:
Henri Verbeet
2025-07-28 16:39:33 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1655
@@ -1402,8 +1402,9 @@ static void msl_ret(struct msl_generator *gen, const struct vkd3d_shader_instruc
|
|||||||
|
|
||||||
static void msl_dcl_indexable_temp(struct msl_generator *gen, const struct vkd3d_shader_instruction *ins)
|
static void msl_dcl_indexable_temp(struct msl_generator *gen, const struct vkd3d_shader_instruction *ins)
|
||||||
{
|
{
|
||||||
|
const char *type = ins->declaration.indexable_temp.component_count == 4 ? "vkd3d_vec4" : "vkd3d_scalar";
|
||||||
msl_print_indent(gen->buffer, gen->indent);
|
msl_print_indent(gen->buffer, gen->indent);
|
||||||
vkd3d_string_buffer_printf(gen->buffer, "vkd3d_vec4 x%u[%u];\n",
|
vkd3d_string_buffer_printf(gen->buffer, "%s x%u[%u];\n", type,
|
||||||
ins->declaration.indexable_temp.register_idx,
|
ins->declaration.indexable_temp.register_idx,
|
||||||
ins->declaration.indexable_temp.register_size);
|
ins->declaration.indexable_temp.register_size);
|
||||||
}
|
}
|
||||||
@@ -2035,6 +2036,11 @@ static int msl_generator_generate(struct msl_generator *gen, struct vkd3d_shader
|
|||||||
msl_compiler_error(gen, VKD3D_SHADER_ERROR_MSL_INTERNAL,
|
msl_compiler_error(gen, VKD3D_SHADER_ERROR_MSL_INTERNAL,
|
||||||
"Internal compiler error: Unhandled global flags %#"PRIx64".", (uint64_t)gen->program->global_flags);
|
"Internal compiler error: Unhandled global flags %#"PRIx64".", (uint64_t)gen->program->global_flags);
|
||||||
|
|
||||||
|
vkd3d_string_buffer_printf(gen->buffer, "union vkd3d_scalar\n{\n");
|
||||||
|
vkd3d_string_buffer_printf(gen->buffer, " uint u;\n");
|
||||||
|
vkd3d_string_buffer_printf(gen->buffer, " int i;\n");
|
||||||
|
vkd3d_string_buffer_printf(gen->buffer, " float f;\n};\n\n");
|
||||||
|
|
||||||
vkd3d_string_buffer_printf(gen->buffer, "union vkd3d_vec4\n{\n");
|
vkd3d_string_buffer_printf(gen->buffer, "union vkd3d_vec4\n{\n");
|
||||||
vkd3d_string_buffer_printf(gen->buffer, " uint4 u;\n");
|
vkd3d_string_buffer_printf(gen->buffer, " uint4 u;\n");
|
||||||
vkd3d_string_buffer_printf(gen->buffer, " int4 i;\n");
|
vkd3d_string_buffer_printf(gen->buffer, " int4 i;\n");
|
||||||
|
Reference in New Issue
Block a user