Conor McCarthy
e1c774bfeb
vkd3d-shader/spirv: Implement the WAVE_READ_LANE_FIRST instruction.
2024-05-14 20:44:10 +02:00
Conor McCarthy
936d8e4f61
vkd3d-shader/spirv: Implement the WAVE_READ_LANE_AT instruction.
2024-05-14 20:44:04 +02:00
Conor McCarthy
f47ac703ab
vkd3d-shader/spirv: Emit a trace instead of a warning message for ignored alignment.
2024-05-13 22:27:13 +02:00
Conor McCarthy
e340855122
vkd3d-shader/spirv: Do not warn if no global flags are unhandled.
2024-05-13 22:27:13 +02:00
Conor McCarthy
77259da1ad
vkd3d-shader/spirv: Implement the WAVE_PREFIX_BIT_COUNT instruction.
2024-05-13 11:50:23 +02:00
Conor McCarthy
065ef0c5e4
vkd3d-shader/spirv: Implement the WAVE_IS_FIRST_LANE instruction.
2024-05-13 11:50:21 +02:00
Conor McCarthy
feef2577ef
vkd3d-shader/spirv: Implement the WAVE_ALL_BIT_COUNT instruction.
2024-05-13 11:50:19 +02:00
Conor McCarthy
cfcc789b42
vkd3d-shader/spirv: Implement the WAVE_OP_* instructions.
2024-05-06 22:12:27 +02:00
Conor McCarthy
fef5760af0
vkd3d-shader/spirv: Implement the WAVE_ACTIVE_BIT_* instructions.
2024-05-06 22:12:24 +02:00
Conor McCarthy
1c49b3a779
vkd3d-shader/spirv: Implement the WAVE_ACTIVE_BALLOT instruction.
2024-05-06 22:12:21 +02:00
Henri Verbeet
f948520504
vkd3d-shader/spirv: Pass a struct vsir_program to spirv_compile().
2024-05-02 22:19:17 +02:00
Henri Verbeet
e21215f466
vkd3d-shader/spirv: Pass a struct vsir_program to spirv_compiler_generate_spirv().
2024-05-02 22:19:16 +02:00
Conor McCarthy
95489899be
vkd3d-shader/spirv: Handle the WAVE_ANY_TRUE instruction.
2024-05-02 22:19:02 +02:00
Conor McCarthy
77ec2a5caa
vkd3d-shader/spirv: Handle the WAVE_ALL_TRUE instruction.
2024-05-02 22:18:59 +02:00
Conor McCarthy
78f2d2936d
vkd3d-shader/spirv: Handle the WAVE_ACTIVE_ALL_EQUAL instruction.
2024-05-02 22:18:57 +02:00
Conor McCarthy
c770efc530
vkd3d-shader/spirv: Handle the WAVELANEINDEX register.
2024-05-02 22:18:54 +02:00
Conor McCarthy
a130c970a6
vkd3d-shader/spirv: Handle the WAVELANECOUNT register.
2024-05-02 22:18:49 +02:00
Henri Verbeet
b761f1a263
vkd3d-shader/spirv: Use location information from the current instruction.
2024-04-30 16:31:14 +02:00
Conor McCarthy
6975a8d726
vkd3d-shader: Introduce SPIRV_ENVIRONMENT_VULKAN_1_1.
...
The SPIR-V backend may emit SPIR-V 1.3 if Vulkan 1.1 is available.
Some extensions which provide wave op instructions are available in
SPIR-V 1.0, but these are not sufficient to implement all Shader Model 6
wave op intrinsics. SPIR-V 1.3 has all of the required instructions, but
does not support reading from a quad at a non-constant (but uniform) lane
index, so it may later prove necessary to introduce a Vulkan 1.2
environment.
2024-04-17 22:51:49 +02:00
Conor McCarthy
a7870e1793
vkd3d-shader/spirv: Emit a compiler warning if an atomic op is flagged volatile.
2024-04-17 22:51:43 +02:00
Henri Verbeet
1d6c3eae78
vkd3d-shader/ir: Remove VKD3DSIH_DCL_CONSTANT_BUFFER instructions.
2024-04-16 22:18:52 +02:00
Conor McCarthy
54016b3ced
vkd3d-shader/dxil: Load hull shader properties.
2024-04-16 22:18:15 +02:00
Conor McCarthy
e72c3bab71
vkd3d-shader/spirv: Ensure the data register is UINT in spirv_compiler_emit_store_tgsm().
2024-04-09 12:27:30 -05:00
Conor McCarthy
dc99159dd8
vkd3d-shader/spirv: Bitcast if necessary in spirv_compiler_emit_store_dst_components().
2024-04-09 12:27:29 -05:00
Conor McCarthy
1c61776c18
vkd3d-shader/spirv: Handle uint2 to double bitcast in spirv_compiler_emit_mov().
...
Necessary for MakeDouble if the dst is SSA.
2024-04-09 12:27:18 -05:00
Conor McCarthy
c8eb7e1c81
vkd3d-shader/spirv: Emit a uint result for RESINFO_UINT if the dst register is SSA.
2024-04-09 12:27:16 -05:00
Conor McCarthy
8d947ce868
vkd3d-shader/spirv: Support bool source in spirv_compiler_emit_discard().
2024-03-27 22:37:40 +01:00
Francisco Casas
11e7265815
vkd3d-shader/spirv: Throw compiler error on unrecognized register.
...
This codepath path is currently triggered when transpiling d3dbc shaders
that use vPos (or other of these special registers).
While vPos gets added to the input signature and gets assigned an INPUT
register, the registers in the shader instructions are still of
VKD3DSPR_MISCTYPE type and are not propperly mapped yet. This gives
invalid results.
Some SM1 tests must be set back to "todo" but they only work because, by
coincidence, we are assigning vPos the input register with index 0.
Propper mapping of these registers is still required.
2024-03-27 22:37:15 +01:00
Zebediah Figura
172cb75872
vkd3d-shader/spirv: Implement VKD3DSIH_ABS.
2024-03-27 22:37:10 +01:00
Conor McCarthy
68b31b7396
vkd3d-shader/spirv: Handle the sequentially consistent ordering flag for atomic instructions.
2024-03-27 22:37:01 +01:00
Conor McCarthy
a8dd788f41
vkd3d-shader/spirv: Emit a warning if the atomic instruction volatile flag is unhandled.
2024-03-27 22:37:00 +01:00
Conor McCarthy
47e56cdfed
vkd3d-shader/spirv: Support 64-bit register info component type in spirv_compiler_emit_load_reg().
...
For 64-bit indexable temps (and any other 64-bit declarations) the write
mask must not be converted.
2024-03-27 22:36:55 +01:00
Conor McCarthy
83a67366da
vkd3d-shader/spirv: Do not assert if a TGSM store data register is not UINT.
2024-03-27 22:36:54 +01:00
Conor McCarthy
9da375414e
vkd3d-shader/spirv: Do not assert if a TGSM load dst register is not UINT.
2024-03-27 22:36:52 +01:00
Henri Verbeet
5de5f241a6
vkd3d-shader/ir: Pass a struct vsir_program to vkd3d_shader_normalise().
2024-03-19 22:57:56 +01:00
Conor McCarthy
421d311a49
vkd3d-shader/spirv: Use dst register data type in spirv_compiler_emit_imad().
2024-03-18 23:07:36 +01:00
Conor McCarthy
b22632ff1a
vkd3d-shader/spirv: Emit a trace message if TGSM alignment is ignored.
...
This would cause a lot of warning spam if it was a warning.
2024-03-14 22:48:45 +01:00
Conor McCarthy
6dd54eeb09
vkd3d-shader/spirv: Support zero-initialisation for workgroup memory.
2024-03-14 22:48:41 +01:00
Conor McCarthy
0dc174ebd7
vkd3d-shader/spirv: Emit an error if a FIRSTBIT instruction has a 64-bit source.
2024-03-13 21:50:37 +01:00
Conor McCarthy
a64eb75c1d
vkd3d-shader/spirv: Emit an error if COUNTBITS has a 64-bit source.
2024-03-13 21:50:36 +01:00
Conor McCarthy
066ea75945
vkd3d-shader/spirv: Introduce HALF and UINT16 types for minimum precision.
...
Minimum precision types must always be implemented as 32-bit to match how
reduced precision works in SPIR-V.
2024-03-11 22:10:05 +01:00
Conor McCarthy
58123c2e10
vkd3d-shader/spirv: Introduce a data_type_is_floating_point() helper function.
2024-03-11 22:10:03 +01:00
Zebediah Figura
ad495970e0
vkd3d-shader/spirv: Implement SLT and SGE.
2024-03-11 22:09:48 +01:00
Zebediah Figura
27196d8b0f
vkd3d-shader/spirv: Implement CMP.
2024-03-11 22:09:44 +01:00
Giovanni Mascellani
470d83a9da
vkd3d-shader: Move shader signatures to vsir_program.
2024-03-11 22:09:31 +01:00
Evan Tang
4553b2a0dc
vkd3d-shader/spirv: Implement support for rasteriser-ordered views.
...
Using SPV_EXT_fragment_shader_interlock.
2024-03-08 23:36:35 +01:00
Conor McCarthy
e65055b435
vkd3d-shader/spirv: Handle the ORD and UNO instructions.
2024-03-08 23:36:14 +01:00
Conor McCarthy
5082893e5d
vkd3d-shader/spirv: Always use a 64-bit write mask for IMMCONST64 src params.
...
There is no way to tell in spirv_compiler_emit_load_reg() if the write
mask is 64-bit. All loads are 32-bit except for IMMCONST64 and SSA, and
the latter ignores the mask, so the only issue lies with IMMCONST64.
2024-03-06 23:04:12 +01:00
Henri Verbeet
f866fb95ad
Release 1.11.
2024-03-05 20:39:45 +01:00
Conor McCarthy
625e289574
vkd3d-shader/dxil: Handle hyperbolic trigonometric functions in sm6_parser_emit_dx_unary().
2024-02-07 22:59:23 +01:00