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
Henri Verbeet
29e58a2be3
build: Use a tab to indent the "tests/hlsl/constructgswithso.shader_test" line in Makefile.am.
...
I had originally noticed this during review, and then promptly forgot about it.
2024-09-18 15:03:53 +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
Giovanni Mascellani
e1c3266793
vkd3d-shader/ir: Record entering a block in the LABEL validation handler.
2024-09-16 13:53:51 +02:00
Giovanni Mascellani
1d21588de7
vkd3d-shader/ir: Record leaving a block in the relevant validation handlers.
2024-09-16 13:53:51 +02:00
Giovanni Mascellani
3e012c355d
vkd3d-shader/ir: Validate NOP instructions.
2024-09-14 16:44:17 +02:00
Giovanni Mascellani
27b421be6a
vkd3d-shader/ir: Do not access a missing destination register when validating PHI.
2024-09-14 16:44:17 +02:00
Giovanni Mascellani
e27cf68173
vkd3d-shader/ir: Introduce a helper for validating PHI.
2024-09-14 16:44:16 +02:00
Giovanni Mascellani
9696a0cd4a
vkd3d-shader/ir: Introduce a helper for validating SWITCH_MONOLITHIC.
2024-09-14 16:44:16 +02:00
Giovanni Mascellani
ce6306c6fb
vkd3d-shader/ir: Introduce a helper for validating BRANCH.
2024-09-14 16:44:16 +02:00
Giovanni Mascellani
504f4223c2
vkd3d-shader/ir: Introduce a helper for validating LABEL.
2024-09-14 16:44:16 +02:00
Giovanni Mascellani
c447a062c4
vkd3d-shader/ir: Introduce a helper for validating RET.
2024-09-14 16:44:16 +02:00
Giovanni Mascellani
88b3d4fb3a
vkd3d-shader/ir: Introduce a helper for validating ENDSWITCH.
2024-09-14 16:44:16 +02:00
Giovanni Mascellani
4939f580a4
vkd3d-shader/ir: Introduce a helper for validating SWITCH.
2024-09-14 16:44:16 +02:00
Francisco Casas
4b85e6b1f8
vkd3d-shader/d3dbc: Remove ctx and entry_func args in d3dbc_compile().
2024-09-14 16:39:24 +02:00
Francisco Casas
b72ef6038d
vkd3d-shader/hlsl: Remove hlsl_ir_vsir_instruction_ref.
2024-09-14 16:39:17 +02:00