Henri Verbeet
d0e4331640
vkd3d-shader/hlsl: Use hlsl_error() instead of hlsl_fixme() for ambiguous function calls.
...
This changes the return code, and some tests start passing as a result.
2024-12-03 14:38:33 +01:00
Giovanni Mascellani
1c93d706d7
vkd3d-shader/ir: Merge removing I/O declarations in the general instruction lowering pass.
2024-12-03 14:36:13 +01:00
Giovanni Mascellani
4717775abb
vkd3d-shader/ir: Remove I/O declarations before flattening hull shader phases.
2024-12-03 14:19:50 +01:00
Giovanni Mascellani
4ef946287c
vkd3d-shader/ir: Remove I/O declarations before normalising hull shader control point I/O.
2024-12-03 14:19:50 +01:00
Giovanni Mascellani
66382f0d68
vkd3d-shader/ir: Remove I/O declarations before I/O normalisation.
2024-12-03 14:19:50 +01:00
Giovanni Mascellani
18e422dfe4
vkd3d-shader/ir: Encode I/O declarations in vsir_program.
...
Most I/O registers are already described by the shader signatures.
The registers that are not do not have any property other then
being used by the program or not, so they can be collectively
described with a bitmap.
2024-12-03 14:19:24 +01:00
Giovanni Mascellani
a92b602b33
vkd3d-shader/spirv: Merge emitting input and output registers.
...
The register storage class is now represented in
vkd3d_register_builtins, so the spirv_compiler_emit_io_register()
doesn't need to know it from the caller.
2024-12-03 13:48:39 +01:00
Elizabeth Figura
8bc9e15618
vkd3d-shader/hlsl: Translate invalid implicit-size arrays to an error type.
...
Instead of returning nonsense (such as, currently, a type with zero size).
In practice this improves error reporting for shaders such as the following:
void func(float x[])
{
float y[] = {x};
}
Currently this outputs a nonsense
test.hlsl:1:19: E5002: Implicit size arrays not allowed in function parameters.
test.hlsl:3:7: E5002: Implicit size arrays need to be initialized.
With this patch the second warning is removed.
2024-12-03 12:39:27 +01:00
Elizabeth Figura
e060b47330
vkd3d-shader/hlsl: Return an error expression when a function is used as a variable.
2024-12-03 12:39:27 +01:00
Elizabeth Figura
c553c45f00
vkd3d-shader/hlsl: Move the numeric type check to add_constructor().
2024-12-03 12:39:27 +01:00
Elizabeth Figura
97eac342d3
vkd3d-shader/hlsl: Do not abort parsing when invalid modifiers are used.
2024-12-03 12:39:27 +01:00
Elizabeth Figura
9c70348b39
vkd3d-shader/hlsl: Do not abort when modifying a const expression.
2024-12-03 12:39:27 +01:00
Elizabeth Figura
d56601c8d0
vkd3d-shader/ir: Implement exponential fog.
2024-12-02 17:12:20 +01:00
Elizabeth Figura
1fbbc82f3a
vkd3d-shader/ir: Allow controlling the fog source through a parameter.
2024-12-02 17:12:16 +01:00
Elizabeth Figura
fc98cb482f
vkd3d-shader/ir: Add a couple of traces for signature remapping.
2024-12-02 17:12:13 +01:00
Elizabeth Figura
f86d1e72a4
vkd3d-shader/ir: Allow controlling fog through parameters.
...
Fog requires several parameters to even implement the most basic of
functionality correctly, so this commit is relatively large.
2024-12-02 17:12:06 +01:00
Elizabeth Figura
a1de406de4
vkd3d-shader/spirv: Handle SSA registers in spirv_compiler_get_register_info().
...
Instead of in spirv_compiler_emit_load_reg(). This allows arbitrary swizzles to
work and reduces the amount of duplicated code.
2024-12-02 17:08:43 +01:00
Feifan He
7d2819249b
vkd3d-shader/msl: Implement support for the VKD3DSPR_DEPTHOUT register.
2024-11-30 14:25:10 +01:00
Feifan He
9619582d1b
vkd3d-shader/msl: Implement VKD3DSIH_ROUND_Z.
2024-11-27 14:00:51 +01:00
Feifan He
778382cd94
vkd3d-shader/msl: Implement VKD3DSIH_ROUND_PI.
2024-11-27 14:00:51 +01:00
Feifan He
a7ae6404de
vkd3d-shader/msl: Implement VKD3DSIH_FTOU.
2024-11-27 14:00:51 +01:00
Feifan He
9fd7f4f1ec
vkd3d-shader/msl: Implement VKD3DSIH_UTOF.
2024-11-27 14:00:51 +01:00
Feifan He
ffbade9ed1
vkd3d-shader/msl: Implement VKD3DSIH_FTOI.
2024-11-27 14:00:50 +01:00
Feifan He
16409569fd
vkd3d-shader/msl: Implement VKD3DSIH_ITOF.
2024-11-27 14:00:50 +01:00
Giovanni Mascellani
9e0c02a0ea
vkd3d-shader/ir: Evaluate OUTCONTROLPOINT usage in the patch constant phase directly.
...
Instead of using DCL_INPUT.
The main goal here is to eventually get rid of the I/O
declaration instructions. A positive side effect is that we don't
add a useless barrier to shaders which have a DCL_INPUT instruction
in the patch constant phase but don't actually read OUTCONTROLPOINT
registers.
2024-11-27 13:59:39 +01:00