Commit Graph

198 Commits

Author SHA1 Message Date
Henri Verbeet
74ebd4621f vkd3d-shader/msl: Implement VSIR_OP_FIRSTBIT_HI. 2025-11-04 14:59:38 +01:00
Henri Verbeet
c576a09d57 vkd3d-shader/msl: Implement VSIR_OP_FIRSTBIT_LO. 2025-11-04 14:59:38 +01:00
Henri Verbeet
08026880d6 vkd3d-shader/msl: Implement VSIR_OP_COUNTBITS. 2025-11-04 14:59:38 +01:00
Henri Verbeet
f431cddc9f vkd3d-shader/msl: Implement support for VKD3DSPR_IMMCONSTBUFFER registers. 2025-11-04 14:59:38 +01:00
Henri Verbeet
51cce61770 vkd3d-shader/msl: Implement VSIR_OP_SYNC. 2025-11-04 14:59:38 +01:00
Henri Verbeet
3660a5a79c vkd3d-shader/msl: Include metal_stdlib in the generated code.
We're already using functions not made available through either
metal_common or metal_texture. This doesn't seem to be an issue for the
Metal shader runner, possibly because the "online" compiler includes the
required headers by default. In any case, including metal_stdlib should
make all of MSLib available.
2025-11-04 14:59:38 +01:00
Giovanni Mascellani
cc1db404b0 vkd3d-shader/msl: Implement support for VKD3DSPR_UNDEF registers.
MSL doesn't seem to have any special handling for undefined values,
differently from SPIR-V. Thus we just emit zeros.

UNDEF registers are sometimes created by the DXIL parser,
for example in sm6_parser_emit_composite_construct().
2025-10-30 18:18:14 +01:00
Giovanni Mascellani
eaabd2ffd7 vkd3d-shader/msl: Allow binding to descriptor arrays.
This requires merging adjacent bindings in the Metal shader runner,
mostly like 805a4bc1e8 did for the
d3d12 backend.
2025-10-30 17:53:10 +01:00
Giovanni Mascellani
39391230d2 vkd3d-shader/msl: Pass a descriptor to msl_get_binding(). 2025-10-29 13:37:12 +01:00
Giovanni Mascellani
a0db928473 vkd3d-shader/msl: Pass a descriptor to msl_get_uav_binding(). 2025-10-29 13:35:45 +01:00
Giovanni Mascellani
6915388289 vkd3d-shader/msl: Pass a descriptor to msl_get_sampler_binding(). 2025-10-29 13:32:47 +01:00
Giovanni Mascellani
53a349b46c vkd3d-shader/msl: Pass a descriptor to msl_get_srv_binding(). 2025-10-29 13:31:33 +01:00
Giovanni Mascellani
13d105c104 vkd3d-shader/msl: Pass a descriptor to msl_get_cbv_binding(). 2025-10-29 13:28:53 +01:00
Giovanni Mascellani
b3f5bfdb7e vkd3d-shader/msl: Retrieve the CBV register space from the descriptor information. 2025-10-28 16:46:33 +01:00
Giovanni Mascellani
957c6728f1 vkd3d-shader/msl: Return a raw index from msl_get_binding().
In the future that will involve some computation, and it will not
necessarily correspond to a struct vkd3d_shader_descriptor_binding
object.
2025-10-28 16:42:14 +01:00
Giovanni Mascellani
491fecc6a3 vkd3d-shader/msl: Introduce msl_get_binding(). 2025-10-28 16:36:33 +01:00
Giovanni Mascellani
6654b88407 vkd3d-shader/ir: Check that no modifier is added to a vsir program after lowering. 2025-10-27 18:48:33 +01:00
Giovanni Mascellani
86b8f2de35 vkd3d-shader/ir: Error out on unsupported source modifiers. 2025-10-16 15:15:05 +02:00
Giovanni Mascellani
c99c729513 vkd3d-shader/ir: Error out on unsupported destination modifiers. 2025-10-16 15:10:39 +02:00
Giovanni Mascellani
8a100fa06d vkd3d-shader/ir: Ignore and drop PARTIALPRECISION modifiers. 2025-10-16 14:57:56 +02:00
Giovanni Mascellani
737158e7b8 vkd3d-shader/ir: Remove SATURATE modifiers after lowering them. 2025-10-16 14:55:51 +02:00
Giovanni Mascellani
835044dd8e vkd3d-shader/ir: Introduce VSIR_OP_SATURATE to represent floating-point clamping to [0, 1]. 2025-10-14 15:53:26 +02:00
Henri Verbeet
9b98761909 vkd3d-shader/msl: Implement VSIR_OP_IREM. 2025-10-14 15:49:18 +02:00
Henri Verbeet
b6acac49f1 vkd3d-shader/msl: Implement VSIR_OP_UREM. 2025-10-14 15:49:18 +02:00
Henri Verbeet
69879129f8 vkd3d-shader/msl: Implement VSIR_OP_IDIV. 2025-10-14 15:49:18 +02:00