vkd3d-shader/dxil: Emit 16-bit CONSTANT values as minimum precision registers.

This commit is contained in:
Giovanni Mascellani
2025-05-15 14:12:43 +02:00
committed by Henri Verbeet
parent 14477b1066
commit 1d780e1a6b
Notes: Henri Verbeet 2025-06-11 20:36:59 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1558
2 changed files with 76 additions and 3 deletions

View File

@@ -4603,15 +4603,14 @@ static uint32_t spirv_compiler_emit_load_constant(struct spirv_compiler *compile
if (reg->dimension == VSIR_DIMENSION_SCALAR)
{
for (i = 0; i < component_count; ++i)
values[i] = convert_raw_constant32(reg->data_type, reg->u.immconst_u32[0]);
values[i] = reg->u.immconst_u32[0];
}
else
{
for (i = 0, j = 0; i < VKD3D_VEC4_SIZE; ++i)
{
if (write_mask & (VKD3DSP_WRITEMASK_0 << i))
values[j++] = convert_raw_constant32(reg->data_type,
reg->u.immconst_u32[vsir_swizzle_get_component(swizzle, i)]);
values[j++] = reg->u.immconst_u32[vsir_swizzle_get_component(swizzle, i)];
}
}