vkd3d-shader/dxil: Emit 16-bit structured TGSMs as minimum precision.

This commit is contained in:
Giovanni Mascellani
2025-05-29 19:06:40 +02:00
committed by Henri Verbeet
parent 5e1c8056ae
commit 39603f4bc2
Notes: Henri Verbeet 2025-06-18 15:59:59 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1568
2 changed files with 13 additions and 10 deletions

View File

@@ -3744,7 +3744,10 @@ static void sm6_parser_declare_tgsm_structured(struct sm6_parser *sm6, const str
dst_param_init(&ins->declaration.tgsm_structured.reg); dst_param_init(&ins->declaration.tgsm_structured.reg);
dst->value_type = VALUE_TYPE_GROUPSHAREDMEM; dst->value_type = VALUE_TYPE_GROUPSHAREDMEM;
dst->u.groupsharedmem.id = sm6->tgsm_count++; dst->u.groupsharedmem.id = sm6->tgsm_count++;
dst->structure_stride = elem_type->u.width / 8u; dst->structure_stride = elem_type->u.width / CHAR_BIT;
/* Convert minimum precision types to their 32-bit equivalent. */
if (dst->structure_stride == 2)
dst->structure_stride = 4;
sm6_register_from_value(&ins->declaration.tgsm_structured.reg.reg, dst, sm6); sm6_register_from_value(&ins->declaration.tgsm_structured.reg.reg, dst, sm6);
if (dst->structure_stride != 4) if (dst->structure_stride != 4)
{ {

View File

@@ -263,15 +263,15 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID)
} }
[test] [test]
todo dispatch 2 1 1 todo(sm<6) dispatch 2 1 1
todo probe uav 0 (0) u32(0x18) probe uav 0 (0) u32(0x18)
todo probe uav 0 (1) u32(0x18) probe uav 0 (1) u32(0x18)
todo probe uav 0 (2) u32(0x38) probe uav 0 (2) u32(0x38)
todo probe uav 0 (3) u32(0x38) probe uav 0 (3) u32(0x38)
todo probe uav 0 (4) u32(0x1a) probe uav 0 (4) u32(0x1a)
todo probe uav 0 (5) u32(0x1a) probe uav 0 (5) u32(0x1a)
todo probe uav 0 (6) u32(0x3a) probe uav 0 (6) u32(0x3a)
todo probe uav 0 (7) u32(0x3a) probe uav 0 (7) u32(0x3a)
[uav 0] [uav 0]
format r32-typeless format r32-typeless