Commit Graph

3248 Commits

Author SHA1 Message Date
Elizabeth Figura
010aa53bfa vkd3d-shader/hlsl: Do not handle HLSL_CLASS_CONSTANT_BUFFER in copy_propagation_transform_load(). 2024-09-23 15:28:47 +02:00
Elizabeth Figura
f73a23f735 vkd3d-shader/hlsl: Do not create a copy in add_assignment(). 2024-09-23 15:28:47 +02:00
Elizabeth Figura
eb7f5f7f68 vkd3d-shader/hlsl: Return bool from add_assignment(). 2024-09-23 15:28:47 +02:00
Elizabeth Figura
8975933aff vkd3d-shader/hlsl: Store a pointer to the block's "value" instruction in the block. 2024-09-23 15:28:47 +02:00
Nikolay Sivov
799e6105a4 vkd3d-shader/d3dbc: Add an option to treat doubles as floats.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55448
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-23 15:26:35 +02:00
Nikolay Sivov
d7def84253 vkd3d-shader/hlsl: Remove the 'double' keyword.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-23 15:26:35 +02:00
Nikolay Sivov
b5c5783293 vkd3d-shader: Explicitly set indices for the numeric type names array.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-23 15:25:36 +02:00
Nikolay Sivov
f64689eed8 vkd3d-shader/tpf: Set temps count in the STAT section.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-20 17:20:02 +02:00
Nikolay Sivov
478e28ea79 vkd3d-shader/tpf: Move STAT fields update to a separate helper.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-20 17:20:02 +02:00
Henri Verbeet
bc70d575ae vkd3d-shader/glsl: Implement VKD3DSIH_OR. 2024-09-20 17:16:33 +02:00
Henri Verbeet
e289c3999d vkd3d-shader/glsl: Implement VKD3DSIH_INE. 2024-09-20 17:16:33 +02:00
Henri Verbeet
3b3fe1da2c vkd3d-shader/glsl: Implement VKD3DSIH_MUL. 2024-09-20 17:16:33 +02:00
Atharva Nimbalkar
2fc35da940 vkd3d-shader/glsl: Implement support for VSIR_DIMENSION_VEC4 immediate constants. 2024-09-20 17:16:33 +02:00
Henri Verbeet
2409966ff2 vkd3d-shader/glsl: Implement VKD3DSIH_NEU. 2024-09-20 17:16:33 +02:00
Giovanni Mascellani
9777c8bc65 vkd3d-shader/spirv: Do not reallocate the SPIR-V program.
I ran the compilation of ~1000 DXBC-TPF shaders randomly taken from
my collection and measured the performance using callgrind and the
kcachegrind "cycle count" estimation.

BEFORE:
 * 1,846,641,596 cycles
 * 1,845,635,336 cycles
 * 1,841,335,225 cycles

AFTER:
 * 1,764,035,136 cycles
 * 1,767,948,767 cycles
 * 1,773,927,734 cycles

So callgrind would estimate a 3.6% improvement at least.

The counterpoint is that the caller might get an allocation that
is potentially bigger than necessary. I would expect that allocation
to be rather short-lived anyway, so that's probably not a problem.
2024-09-20 17:14:49 +02:00
Giovanni Mascellani
35d3161f9d vkd3d-shader/spirv: Propagate errors from vkd3d_spirv_stream_append(). 2024-09-20 17:04:31 +02:00
Giovanni Mascellani
637a3cabe7 vkd3d-shader/ir: Allow failure in shader_signature_find_element_for_reg().
shader_signature_find_element_for_reg() is also used in the TPF parser,
where the program has not been validated yet, so it must not crash
on errors.

The I/O normaliser can instead assume that the shader is already
validated.

This fixes a crash with a shader used by The Falconeer. The bug is still
present, because the shader will be incorrectly rejected, but at least
the vkd3d-shader will fail gracefully.
2024-09-20 17:01:29 +02:00
Nikolay Sivov
32ced3bd8f vkd3d-shader/tpf: Set 'gather' instructions counter in the STAT. 2024-09-19 14:38:59 +02:00
Nikolay Sivov
01f6ef5e6d vkd3d-shader/tpf: Add a 'lod' counter to the STAT. 2024-09-19 14:38:59 +02:00
Nikolay Sivov
7c9695b261 vkd3d-shader/tpf: Handle barrier instructions in STAT.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-19 14:38:59 +02:00
Henri Verbeet
d4bc51b850 vkd3d-shader/d3dbc: Introduce enum vkd3d_sm1_rastout_register. 2024-09-19 14:38:03 +02:00
Atharva Nimbalkar
f8d403f330 vkd3d-shader/glsl: Implement VKD3DSIH_AND. 2024-09-19 14:35:24 +02:00
Henri Verbeet
c8acf285cb vkd3d-shader/glsl: Implement support for VKD3DSPSM_ABS modifiers. 2024-09-19 14:35:20 +02:00
Atharva Nimbalkar
1d485cc8a9 vkd3d-shader/glsl: Implement support for VKD3DSPR_IMMCONST registers. 2024-09-19 14:32:29 +02:00
Atharva Nimbalkar
ab07637ee1 vkd3d-shader/glsl: Implement VKD3DSIH_ADD. 2024-09-19 14:29:46 +02:00
Henri Verbeet
ae40184631 vkd3d-shader/glsl: Implement support for VKD3DSPR_CONSTBUFFER registers. 2024-09-19 14:29:46 +02:00
Henri Verbeet
e9f0c6fef3 vkd3d-shader/glsl: Handle SV_TARGET outputs. 2024-09-18 15:04:52 +02:00
Henri Verbeet
6cae2d006c vkd3d-shader/d3dbc: Introduce enum vkd3d_sm1_misc_register. 2024-09-18 15:04:10 +02:00
Feifan He
9b1b7e86cf vkd3d-shader/msl: Implement VKD3DSIH_RET. 2024-09-18 15:02:57 +02:00
Feifan He
7aa0de27e9 vkd3d-shader/msl: Implement VKD3DSIH_MOV. 2024-09-18 14:48:03 +02:00
Henri Verbeet
a1487380bb vkd3d-shader/glsl: Implement support for VKD3DSPR_OUTPUT registers. 2024-09-17 18:05:47 +02:00
Henri Verbeet
c462c62108 vkd3d-shader/glsl: Implement support for VKD3DSPR_INPUT registers. 2024-09-17 18:05:47 +02:00
Feifan He
deda49e501 vkd3d-shader/msl: Implement VKD3DSIH_NOP. 2024-09-17 11:30:26 +02:00
Feifan He
842841907e vkd3d-shader/msl: Add vkd3d-shader version information to the generated shader. 2024-09-17 11:30:26 +02:00
Feifan He
c278c901b5 vkd3d-shader/msl: Keep track of the current indentation level 2024-09-17 11:30:26 +02:00
Giovanni Mascellani
56ec211d04 vkd3d-shader/ir: Introduce a helper for validating Hull Shader phases. 2024-09-16 19:32:32 +02:00
Giovanni Mascellani
259273a133 vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_PARTITIONING. 2024-09-16 19:32:32 +02:00
Giovanni Mascellani
a3c7bebc18 vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_OUTPUT_PRIMITIVE. 2024-09-16 19:32:32 +02:00
Giovanni Mascellani
48f512a83a vkd3d-shader/ir: Introduce a helper for validating DCL_TESSELLATOR_DOMAIN. 2024-09-16 19:32:32 +02:00
Giovanni Mascellani
8aa2364381 vkd3d-shader/ir: Introduce a helper for validating DCL_OUTPUT_CONTROL_POINT_COUNT. 2024-09-16 19:32:32 +02:00
Nikolay Sivov
0e9fcb1431 vkd3d-shader/tpf: Handle tessellation stage fields in STAT.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-16 14:04:46 +02:00
Nikolay Sivov
947b151ed4 vkd3d-shader/tpf: Handle atomic instructions in STAT.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-16 14:01:29 +02:00
Nikolay Sivov
7c12371298 vkd3d-shader/tpf: Handle bitwise instructions in STAT.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-16 14:01:18 +02:00
Nikolay Sivov
90fc57ff89 vkd3d-shader/tpf: Handle GS reflection fields in the STAT section.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-16 14:01:07 +02:00
Nikolay Sivov
97cc27d33f vkd3d-shader/d3d-asm: Tweak some GS declaration names.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-16 13:58:57 +02:00
Giovanni Mascellani
c45bb5badc vkd3d-shader/ir: Introduce a helper for validating DCL_GL_INSTANCES. 2024-09-16 13:53:52 +02:00
Giovanni Mascellani
dec7a0dbd2 vkd3d-shader/ir: Introduce a helper for validating DCL_OUTPUT_TOPOLOGY. 2024-09-16 13:53:52 +02:00
Giovanni Mascellani
22ba37c8b9 vkd3d-shader/ir: Introduce a helper for validating DCL_VERTICES_OUT. 2024-09-16 13:53:51 +02:00
Giovanni Mascellani
936adff58b vkd3d-shader/ir: Introduce a helper for validating DCL_INPUT_PRIMITIVE. 2024-09-16 13:53:51 +02:00
Giovanni Mascellani
0f07a2c512 vkd3d-shader/ir: Introduce a helper for validating DCL_HS_MAX_TESSFACTOR. 2024-09-16 13:53:51 +02:00