mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d-shader/spirv: Ensure the data register is UINT in spirv_compiler_emit_store_tgsm().
This commit is contained in:
committed by
Alexandre Julliard
parent
dc99159dd8
commit
e72c3bab71
Notes:
Alexandre Julliard
2024-04-09 15:45:14 -05:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Approved-by: Alexandre Julliard (@julliard) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/750
@@ -8904,8 +8904,8 @@ static void spirv_compiler_emit_store_tgsm(struct spirv_compiler *compiler,
|
|||||||
const struct vkd3d_shader_dst_param *dst = instruction->dst;
|
const struct vkd3d_shader_dst_param *dst = instruction->dst;
|
||||||
const struct vkd3d_shader_src_param *src = instruction->src;
|
const struct vkd3d_shader_src_param *src = instruction->src;
|
||||||
uint32_t base_coordinate_id, component_idx;
|
uint32_t base_coordinate_id, component_idx;
|
||||||
const struct vkd3d_shader_src_param *data;
|
|
||||||
struct vkd3d_shader_register_info reg_info;
|
struct vkd3d_shader_register_info reg_info;
|
||||||
|
struct vkd3d_shader_src_param data;
|
||||||
unsigned int component_count;
|
unsigned int component_count;
|
||||||
|
|
||||||
if (!spirv_compiler_get_register_info(compiler, &dst->reg, ®_info))
|
if (!spirv_compiler_get_register_info(compiler, &dst->reg, ®_info))
|
||||||
@@ -8917,8 +8917,9 @@ static void spirv_compiler_emit_store_tgsm(struct spirv_compiler *compiler,
|
|||||||
base_coordinate_id = spirv_compiler_emit_raw_structured_addressing(compiler,
|
base_coordinate_id = spirv_compiler_emit_raw_structured_addressing(compiler,
|
||||||
type_id, reg_info.structure_stride, &src[0], VKD3DSP_WRITEMASK_0, &src[1], VKD3DSP_WRITEMASK_0);
|
type_id, reg_info.structure_stride, &src[0], VKD3DSP_WRITEMASK_0, &src[1], VKD3DSP_WRITEMASK_0);
|
||||||
|
|
||||||
data = &src[instruction->src_count - 1];
|
data = src[instruction->src_count - 1];
|
||||||
val_id = spirv_compiler_emit_load_src(compiler, data, dst->write_mask);
|
data.reg.data_type = VKD3D_DATA_UINT;
|
||||||
|
val_id = spirv_compiler_emit_load_src(compiler, &data, dst->write_mask);
|
||||||
|
|
||||||
component_count = vsir_write_mask_component_count(dst->write_mask);
|
component_count = vsir_write_mask_component_count(dst->write_mask);
|
||||||
for (component_idx = 0; component_idx < component_count; ++component_idx)
|
for (component_idx = 0; component_idx < component_count; ++component_idx)
|
||||||
|
@@ -116,7 +116,7 @@ void main(uint local_idx : SV_GroupIndex, uint group_id : SV_GroupID,
|
|||||||
|
|
||||||
[test]
|
[test]
|
||||||
uniform 0 uint 1
|
uniform 0 uint 1
|
||||||
todo dispatch 2 1 1
|
todo(sm<6) dispatch 2 1 1
|
||||||
probe uav 1 (0) r (0.0)
|
probe uav 1 (0) r (0.0)
|
||||||
probe uav 1 (1) r (0.0)
|
probe uav 1 (1) r (0.0)
|
||||||
probe uav 1 (2) r (0.0)
|
probe uav 1 (2) r (0.0)
|
||||||
|
Reference in New Issue
Block a user