3415 Commits

Author SHA1 Message Date
Giovanni Mascellani
da7c9694f1 vkd3d-shader/dxil: Emit SAMPLER, UAV and RESOURCE registers with only 2 indices.
DXIL handles are used to represent descriptors. Currently they are
translated to registers of the appropriate type (depending on the
descriptor type) and three indices. The first two indices are used
to represent the descriptor itself (through its signature and array
index), and are filled when the handle itself is created. The last
index is used with constant buffers to address the data inside the
buffer itself, and it goes unused with other descriptor types.

As currently implemented, however, registers for descriptors other
than constant buffers are still created with three indices, even if
the last one is useless and set to -1. In the interest of creating
more sensible VSIR code, this is now removed: DXIL handles are
created with just two indices; a third one is added when accessing
constant buffers, and nothing is changed for other descriptor types.
2024-10-03 19:08:33 +02:00
Elizabeth Figura
cebe0a8b95 vkd3d-shader/hlsl: Handle error expressions in method calls. 2024-10-03 17:47:26 +02:00
Elizabeth Figura
600f90e8b0 vkd3d-shader/hlsl: Handle error expressions in assignments. 2024-10-03 17:47:26 +02:00
Elizabeth Figura
c94aa5e03c vkd3d-shader/hlsl: Handle error expressions in binary expressions. 2024-10-03 17:47:26 +02:00
Elizabeth Figura
d6052bc31b vkd3d-shader/hlsl: Handle error expressions in function calls. 2024-10-03 17:47:26 +02:00
Elizabeth Figura
5d52bef19d vkd3d-shader/hlsl: Return an "error" expression when using an undeclared variable. 2024-10-03 17:47:26 +02:00
Elizabeth Figura
67093c5833 vkd3d-shader/hlsl: Free static initializers after functions.
We need users of a value to be freed before the value itself is.
Due to copy propagation or use of the pre-allocated error instruction,
static_initializers can contain values that will be used in function blocks.
2024-10-03 17:47:26 +02:00
Giovanni Mascellani
ae27fded1a vkd3d-shader/spirv: Handle all possible destination modifiers.
Historically the SPIR-V backend was only fed by the TPF parser,
which only generates _sat destination modifiers. Now it is fed
by the D3DBC parser too (among others), so it mustn't assert on
other modifiers.

Modifier _pp can be trivially ignored. Modifier _centroid would
probably require some handling, but I'm not immediately sure of
what should happen and it doesn't look like a very urgent thing
anyway, so I'm degrading the assertion to FIXME().
2024-10-02 22:31:50 +02:00
Henri Verbeet
fc4c9b7a95 vkd3d-shader/glsl: Implement VKD3DSIH_USHR. 2024-10-02 22:30:58 +02:00
Henri Verbeet
babbf11d52 vkd3d-shader/glsl: Implement VKD3DSIH_ISHR. 2024-10-02 22:30:58 +02:00
Henri Verbeet
7f1c78f8e2 vkd3d-shader/glsl: Implement VKD3DSIH_ISHL. 2024-10-02 22:30:58 +02:00
Henri Verbeet
f501b8c661 vkd3d-shader/glsl: Implement VKD3DSIH_MAD. 2024-10-02 22:30:58 +02:00
Henri Verbeet
4103e76245 vkd3d-shader/glsl: Implement support for VKD3DSPDM_SATURATE modifiers. 2024-10-02 22:30:58 +02:00
Nikolay Sivov
79aa75e98f vkd3d-shader/fx: Implement writing fx_2_0 object initializer data sections.
Object data is used for strings, textures, and shaders. Samplers are handled separately.
The section is a contigious stream of <id><size><object-data>, size field is used
to advance to the next <id> position.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-02 22:17:41 +02:00
Giovanni Mascellani
7e9dc8da97 vkd3d-shader/ir: Validate index count for MISCTYPE registers. 2024-10-02 22:12:47 +02:00
Giovanni Mascellani
99aebb1b31 vkd3d-shader/ir: Validate index count for RASTOUT registers. 2024-10-02 22:12:47 +02:00
Giovanni Mascellani
19d35d89cd vkd3d-shader/ir: Validate index count for DEPTHOUTLE registers. 2024-10-02 22:12:47 +02:00
Giovanni Mascellani
6259832680 vkd3d-shader/ir: Validate index count for DEPTHOUTGE registers. 2024-10-02 22:12:47 +02:00
Giovanni Mascellani
c3757e6930 vkd3d-shader/ir: Validate index count for DEPTHOUT registers. 2024-10-02 22:12:47 +02:00
Giovanni Mascellani
53e35f2d76 vkd3d-shader/d3dbc: Do not emit indices for DEPTHOUT registers. 2024-10-02 22:11:48 +02:00
Francisco Casas
caa2a9d314 vkd3d-shader/hlsl: Parse sampler_state. 2024-10-02 22:07:34 +02:00
Francisco Casas
f47d523e0b vkd3d-shader/hlsl: Process 'texture' as a valid stateblock lhs. 2024-10-02 22:07:34 +02:00
Nikolay Sivov
994e994231 vkd3d-shader/fx: Handle assignments with array RHS indexed with a constant or a single variable.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-02 22:05:46 +02:00
Nikolay Sivov
2722346ffb vkd3d-shader/hlsl: Do not lower index expressions for effects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-02 22:05:24 +02:00
Elizabeth Figura
4400315c4b vkd3d-shader: Allow controlling clip planes through vkd3d-shader parameters. 2024-10-02 21:49:54 +02:00