Commit Graph

503 Commits

Author SHA1 Message Date
2d7832e738 vkd3d-shader/msl: Generate shader descriptor structure declarations. 2024-10-10 19:40:34 +02:00
7202e6e2f3 vkd3d-shader/ir: Allow a patch constant signature only for Hull and Domain Shaders. 2024-10-09 13:13:00 +02:00
cd74461d6d vkd3d-shader/ir: Set the signature sort indices in shader_signature_merge().
Since the sort index is just a convenience field it is more
appropriate to only set it where it is required, instead of
requiring all frontends and passes to retain sensible values for
it.
2024-10-08 22:05:38 +02:00
1256b4f862 vkd3d-shader/d3d-asm: Rename vkd3d_shader_trace() to vsir_program_trace(). 2024-10-08 22:04:59 +02:00
cf92d9f398 vkd3d-shader/ir: Store the thread group size in struct vsir_program. 2024-10-08 22:03:05 +02:00
eb10f0897e vkd3d-shader/glsl: Implement VKD3DSIH_LD. 2024-10-03 19:14:43 +02:00
caa2a9d314 vkd3d-shader/hlsl: Parse sampler_state. 2024-10-02 22:07:34 +02:00
4400315c4b vkd3d-shader: Allow controlling clip planes through vkd3d-shader parameters. 2024-10-02 21:49:54 +02:00
0f91149260 vkd3d-shader/d3d-asm: Dump all indices when tracing VSIR code.
Our ASM dumper currently hides or interprets some register indices
in order to match users expectations. This can be inconvenient for
developers, though, because it makes it harder to understand what's
really going on in the VSIR code when reading logs. With this change
the whole index structure is dumped.
2024-09-30 20:22:53 +02:00
8d85ea2dc5 vkd3d-shader: Get rid of the RESOURCE data type. 2024-09-26 17:42:16 +02:00
e58726310b vkd3d-shader: Get rid of the UAV data type. 2024-09-26 17:42:16 +02:00
2934f820a9 vkd3d-shader: Get rid of the SAMPLER data type. 2024-09-26 17:42:16 +02:00
a2aeb3a142 vkd3d-shader/spirv: Cache numeric types without through the general declaration cache.
Numeric types are used very frequently, and doing a tree search
each time one is needed tends to waste a lot of time.

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,764,035,136 cycles
 * 1,767,948,767 cycles
 * 1,773,927,734 cycles

AFTER:
 * 1,472,384,755 cycles
 * 1,469,506,188 cycles
 * 1,470,191,425 cycles

So callgrind would estimate a 16% improvement at least.
2024-09-23 15:48:35 +02:00
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
ae40184631 vkd3d-shader/glsl: Implement support for VKD3DSPR_CONSTBUFFER registers. 2024-09-19 14:29:46 +02:00
ffc1449412 vkd3d-shader/hlsl: Allow effect calls on default value initializers. 2024-09-14 16:09:12 +02:00
866f138875 vkd3d-shader/ir: Record the control flow type in the program. 2024-09-12 18:31:32 +02:00
dcee148b1a vkd3d-shader/ir: Move the control flow type enumeration to vkd3d_shader_private.h. 2024-09-12 18:27:20 +02:00
ec644b395b vkd3d-shader/tpf: Create a stub STAT section.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-12 18:26:08 +02:00
5df81049aa vkd3d-shader/msl: Call vsir_program_transform() before generating code. 2024-09-12 18:09:00 +02:00
47981def0d vkd3d-shader/msl: Generate comments for unhandled instructions.
Similar to commit 8a60814476 for the GLSL
target.
2024-09-12 18:04:44 +02:00
23ba1a5e07 vkd3d-shader: Introduce VKD3D_SHADER_TARGET_MSL. 2024-09-12 17:03:32 +02:00
096f133b09 vkd3d-shader/ir: Rename vsir_program_normalise() to vsir_program_transform(). 2024-09-11 15:13:14 +02:00
d70342d66d vkd3d-shader/hlsl: Save per-component hlsl_ir_exprs in the vsir_program for SM1. 2024-09-11 15:07:35 +02:00
d8c41cc270 vkd3d-shader/ir: Run validation after normalising Hull Shader control points I/O registers. 2024-09-10 21:43:14 +02:00