Commit Graph

1049 Commits

Author SHA1 Message Date
Henri Verbeet
32a6967778 vkd3d-shader/dxil: Ignore ORDERING_SEQCST.
More recent versions of the Vulkan/SPIR-V validation layers have started
to complain about our usage of "SequentiallyConsistent" in our SPIR-V
output. Specifically, VUID-StandaloneSpirv-MemorySemantics-10866 "Memory
Semantics with SequentiallyConsistent memory order must not be used in
the Vulkan API".

The SPIR-V specification says: "If the declared memory model is Vulkan,
SequentiallyConsistent must not be used." However, we're using the
GLSL450 memory model with SPIR-V 1.3, and "Vulkan" is not available
before SPIR-V 1.5.

The Vulkan specification says "Sequentially consistent atomics and
barriers are not supported and SequentiallyConsistent is treated as
AcquireRelease. SequentiallyConsistent should not be used." in the
"Shader Memory Access Ordering" section.

Those don't quite add up to the "... must not be used in the Vulkan
API", from the validation layers, but it does seem clear that
SequentiallyConsistent isn't actually supported. On the DXIL side, when
targetting SPIR-V with dxc, the generated SPIR-V uses the
"None"/"Relaxed" memory semantics. I wasn't immediately able to find a
reference for what seq_cst is supposed to mean in the context of DXIL,
but "None"/"Relaxed" does seem consistent with how the HLSL
atomic/interlocked intrinsics are expected to behave, as well as with
our behaviour for tpf shaders.
2025-10-09 15:39:41 +02:00
Henri Verbeet
d50503f116 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_interpolation_decorations(). 2025-10-08 13:32:42 +02:00
Henri Verbeet
8bf97a27bf vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_store_dst_swizzled(). 2025-10-08 13:32:42 +02:00
Henri Verbeet
408eb145a6 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_load_src_with_type(). 2025-10-08 13:32:42 +02:00
Giovanni Mascellani
112bbbb161 vkd3d-shader/ir: Lower ABS modifiers to instructions. 2025-10-08 13:30:17 +02:00
Henri Verbeet
6b7e4453d5 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_atomic_instruction(). 2025-10-07 13:11:22 +02:00
Henri Verbeet
cd5e1b0e20 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_store_uav_raw_structured(). 2025-10-07 13:11:22 +02:00
Henri Verbeet
7ffcbaaf66 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_emit_ld_raw_structured_srv_uav(). 2025-10-07 13:11:22 +02:00
Henri Verbeet
8f688afc83 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_get_image_type_id(). 2025-10-07 13:11:22 +02:00
Henri Verbeet
81a13b9902 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_store_dst_components(). 2025-10-07 13:11:22 +02:00
Henri Verbeet
b7b62c9f03 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_store_scalar(). 2025-10-06 15:21:03 +02:00
Henri Verbeet
384f07a140 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_vector_shuffle(). 2025-10-06 15:21:03 +02:00
Henri Verbeet
beb0b7bcfc vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_swizzle(). 2025-10-06 15:21:03 +02:00
Henri Verbeet
94990717f9 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_array_variable(). 2025-10-06 15:21:03 +02:00
Henri Verbeet
8923847ed0 vkd3d-shader/spirv: Use vsir_data_type in struct vkd3d_shader_output_info. 2025-10-06 15:21:03 +02:00
Henri Verbeet
0f9a2bdf34 vkd3d-shader/spirv: Use vsir_data_type in struct vkd3d_shader_image. 2025-10-03 00:14:03 +02:00
Henri Verbeet
0f504be1e8 vkd3d-shader/spirv: Use vsir_data_type in struct vkd3d_symbol_resource_data. 2025-10-03 00:14:03 +02:00
Henri Verbeet
9623ca4a6f vkd3d-shader/spirv: Use vsir_data_type in struct vkd3d_shader_register_info. 2025-10-03 00:14:03 +02:00
Henri Verbeet
a38b86fb3a vkd3d-shader/spirv: Use vsir_data_type in struct vkd3d_symbol_register_data. 2025-10-03 00:14:03 +02:00
Henri Verbeet
b4301a6562 vkd3d-shader/spirv: Use vsir_data_type in struct vkd3d_spirv_builtin. 2025-10-03 00:14:03 +02:00
Henri Verbeet
f5f03dad11 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_emit_construct_vector(). 2025-09-30 17:15:34 +02:00
Henri Verbeet
06b8db02da vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_get_constant64(). 2025-09-30 17:15:34 +02:00
Henri Verbeet
81166e5885 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_get_constant(). 2025-09-30 17:15:34 +02:00
Henri Verbeet
4f57e656d2 vkd3d-shader/spirv: Pass a vsir_data_type to spirv_compiler_get_constant_vector(). 2025-09-30 17:15:34 +02:00
Henri Verbeet
6d8909b927 vkd3d-shader/spirv: Use spirv_get_type_id() in spirv_compiler_generate_spirv(). 2025-09-30 17:15:34 +02:00