Henri Verbeet
e911433e0c
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_NI.
2024-09-30 20:08:58 +02:00
Giovanni Mascellani
5c2b057b56
vkd3d-shader/ir: Validate UAV registers.
2024-09-30 20:05:52 +02:00
Giovanni Mascellani
b7b5b0cff8
vkd3d-shader/ir: Validate RESOURCE registers.
2024-09-30 20:05:52 +02:00
Giovanni Mascellani
a0b98c1610
vkd3d-shader/ir: Validate SAMPLER registers.
2024-09-30 20:05:52 +02:00
Giovanni Mascellani
7404fa5285
vkd3d-shader/dxil: Emit RESOURCE and UAV registers with data type UNUSED.
2024-09-30 20:05:39 +02:00
Nikolay Sivov
300e4e0d12
vkd3d-shader/fx: Add support for writing annotations for fx_2_0.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-30 20:02:51 +02:00
Nikolay Sivov
c9c537faa0
vkd3d-shader/fx: Add initial support for writing default values for fx_2_0.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-30 20:02:05 +02:00
Nikolay Sivov
da0469f190
vkd3d-shader/fx: Handle the 'half' type in fx_4+.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-30 20:01:57 +02:00
Conor McCarthy
2bf517782d
vkd3d-shader/dxil: Load forward-referenced sources as value/type pairs in sm6_parser_emit_store().
2024-09-30 19:58:06 +02:00
Conor McCarthy
6a86e1a8d9
vkd3d-shader/dxil: Load forward-referenced comparands as value/type pairs in sm6_parser_emit_cmpxchg().
2024-09-30 19:57:55 +02:00
Giovanni Mascellani
828e5f1249
vkd3d-shader/ir: Disallow RESOURCE registers in destination parameters.
2024-09-26 17:44:52 +02:00
Giovanni Mascellani
674ad7d655
vkd3d-shader/ir: Disallow SAMPLER registers in destination parameters.
2024-09-26 17:44:52 +02:00
Giovanni Mascellani
6de741e5e7
vkd3d-shader/ir: Do not allow NULL registers in source parameters.
2024-09-26 17:44:52 +02:00
Giovanni Mascellani
8d85ea2dc5
vkd3d-shader: Get rid of the RESOURCE data type.
2024-09-26 17:42:16 +02:00
Giovanni Mascellani
e58726310b
vkd3d-shader: Get rid of the UAV data type.
2024-09-26 17:42:16 +02:00
Giovanni Mascellani
2934f820a9
vkd3d-shader: Get rid of the SAMPLER data type.
2024-09-26 17:42:16 +02:00
Giovanni Mascellani
afa2fd527c
vkd3d-shader/dxil: Release memory on exceptional paths when parsing DXIL code. (Valgrind)
2024-09-26 17:41:21 +02:00
Henri Verbeet
466c8bfbb7
vkd3d-shader/glsl: Implement VKD3DSIH_LTO.
2024-09-26 17:40:07 +02:00
Henri Verbeet
44e96ad4d6
vkd3d-shader/glsl: Implement VKD3DSIH_EXP.
2024-09-26 17:40:07 +02:00
Henri Verbeet
d68e60a78a
vkd3d-shader/glsl: Implement VKD3DSIH_IEQ.
2024-09-26 17:40:07 +02:00
Henri Verbeet
55de9ea405
vkd3d-shader/glsl: Implement VKD3DSIH_DCL_INPUT_PS.
2024-09-26 17:40:07 +02:00
Henri Verbeet
f0c8b4a3c5
vkd3d-shader/glsl: Implement VKD3DSIH_SQRT.
2024-09-26 17:40:07 +02:00
Giovanni Mascellani
5ad83a05ff
vkd3d-shader/dxil: Release memory on exceptional paths in sm6_parser_read_signature(). (Valgrind)
2024-09-26 01:05:35 +02:00
Henri Verbeet
92a7cc3420
vkd3d-shader/glsl: Implement VKD3DSIH_DP2.
2024-09-26 01:04:32 +02:00
Henri Verbeet
b9d8b84b06
vkd3d-shader/glsl: Implement VKD3DSIH_DP4.
2024-09-26 01:04:32 +02:00
Henri Verbeet
93cd63bc93
vkd3d-shader/glsl: Implement VKD3DSIH_DP3.
2024-09-26 01:04:32 +02:00
Henri Verbeet
929010ffd7
vkd3d-shader/glsl: Implement support for the VKD3DSPR_DEPTHOUT register.
2024-09-26 01:04:32 +02:00
Henri Verbeet
459f141e81
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_Z.
2024-09-26 01:04:32 +02:00
Feifan He
e8b14d765d
vkd3d-shader/msl: Implement support for VKD3DSPR_TEMP registers.
2024-09-24 13:56:11 +02:00
Henri Verbeet
f37be27bdc
vkd3d-shader/ir: Properly check the register bounds in shader_signature_find_element_for_reg().
...
Perhaps the existing code is safe in practice, but doing the check
properly avoids having to make that determination.
2024-09-24 13:39:43 +02:00
Henri Verbeet
8e39783770
vkd3d-shader/glsl: Implement VKD3DSIH_ROUND_PI.
2024-09-24 13:38:26 +02:00
Henri Verbeet
58472e7404
vkd3d-shader/glsl: Implement VKD3DSIH_FTOU.
2024-09-24 13:38:26 +02:00
Atharva Nimbalkar
f441d3e112
vkd3d-shader/glsl: Implement VKD3DSIH_UTOF.
2024-09-24 13:38:26 +02:00
Henri Verbeet
a3d06c8f12
vkd3d-shader/glsl: Implement VKD3DSIH_FTOI.
2024-09-24 13:38:26 +02:00
Atharva Nimbalkar
b81cdcb488
vkd3d-shader/glsl: Implement VKD3DSIH_ITOF.
2024-09-24 13:38:26 +02:00
Giovanni Mascellani
e2c6058734
vkd3d-shader/spirv: Do not specify depth for SPIR-V images.
...
SPIR-V images have a "depth" parameter that, as far as I understand
(the spec doesn't look terribly clear in that regard), specifies
whether the image can be used for depth-comparison operations.
In TPF (and therefore in VSIR) the same information is specified
on the sampler type instead of on the image type. This puts us in
a hard spot, because in principle an image can be used with
many different samplers, and the mapping might even be unknown
at compilation time, so it's not clear how we should define our
images.
We currently have some algorithms to deal with that, but they are
incomplete and lead to SPIR-V validation errors like:
Expected Image to have the same type as Result Type Image
%63 = OpSampledImage %62 %59 %61
The problem here is that the image has a non-depth type, but is
being sampled as a depth image. This check was added recently to
SPIRV-Tools, so we became aware of the problem.
As I said, it's not easy in general to decide whether an image is
going to be sampled with depth-comparison operators or not.
Fortunately the SPIR-V spec allow to mark the depth parameter as
unknown (using value 2), so until we come up with something better
we use that for all images to please the validator and avoid
giving misleading hints to the driver.
2024-09-24 13:19:17 +02:00
Arkadiusz Hiler
a3017fe9d5
vkd3d-shader/preproc: Support namespaces in macro identifiers.
2024-09-24 13:17:24 +02:00
Giovanni Mascellani
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
Giovanni Mascellani
3a21daa49e
vkd3d-shader/spirv: Rewrite vkd3d_spirv_get_type_id_for_data_type() in terms of vkd3d_spirv_get_type_id().
2024-09-23 15:48:35 +02:00
Elizabeth Figura
650bf4d83f
vkd3d-shader/hlsl: Fix a corner case in ternary type conversion.
...
If the condition and argument types are compatible, i.e. there is no broadcast,
the resulting shape should be the shape of the arguments, not the shape of the
condition.
2024-09-23 15:43:15 +02:00
Elizabeth Figura
b2cddecfc5
vkd3d-shader/hlsl: Use add_cast() in append_conditional_break().
...
Instead of creating a cast node directly.
This specifically handles the 1x1 matrix case, which currently the backend code does not expect.
2024-09-23 15:43:15 +02:00
Henri Verbeet
1e97e1203f
vkd3d-shader/d3dbc: Write the actual constant info offset in write_sm1_uniforms().
2024-09-23 15:42:25 +02:00
Atharva Nimbalkar
ee8e005209
vkd3d-shader/glsl: Implement VKD3DSIH_MOVC.
2024-09-23 15:41:07 +02:00
Henri Verbeet
7b99c33510
vkd3d-shader/glsl: Implement VKD3DSIH_FRC.
2024-09-23 15:41:07 +02:00
Henri Verbeet
36c08b47e9
vkd3d-shader/glsl: Implement VKD3DSIH_GEO.
2024-09-23 15:41:07 +02:00
Henri Verbeet
28ef331704
vkd3d-shader/glsl: Implement support for VKD3DSPSM_NEG modifiers.
2024-09-23 15:41:07 +02:00
Henri Verbeet
b9366def96
vkd3d-shader/glsl: Implement VKD3DSIH_DIV.
2024-09-23 15:41:07 +02:00
Elizabeth Figura
43b714d896
vkd3d-shader/hlsl: Handle error expressions in unary expressions.
2024-09-23 15:28:47 +02:00
Elizabeth Figura
7e3231c749
vkd3d-shader/hlsl: Return an "error" expression when constructing an arithmetic expression from incompatible types.
2024-09-23 15:28:47 +02:00
Elizabeth Figura
c43e5c8eb5
vkd3d-shader/hlsl: Introduce the "error" type.
...
Currently, if an expression successfully parses according to the bison grammar,
but for one reason or another cannot generate a meaningful IR instruction, we
abort parsing with YYABORT. This includes, for example, an undefined variable or
function, invalid swizzle or field reference, or a constructor with a complex or
non-numeric data type.
Aborting parsing is unfortunate, however, because it means that any further
errors in the program cannot be caught by the programmer, increasing the number
of times they will need to fix errors and recompile.
The idea of this patch is that any such expression will instead generate an IR
node whose data type is of HLSL_CLASS_ERROR. Any further expression which would
consume an "error" typed instruction will instead immediately return an
expression of type "error" (probably the same one) instead of aborting or doing
any other type-checking.
Currently these "error" instructions should not pass the parsing stage, since
hlsl_compile_shader() will immediately notice that compilation has failed and
skip any optimization, lowering, or bytecode-writing.
A further direction to take this is to pre-allocate one "error" expression
immediately when creating the HLSL parser, and return that expression when we
fail to allocate an hlsl_ir_node of any type. This means we do not need to
handle allocation errors when constructing nodes, saving us quite a lot of error
handling (which is not only tedious but currently often broken, if nothing else
by virtue of neglecting cleanup of local variables).
2024-09-23 15:28:47 +02:00
Elizabeth Figura
7daaaf6386
vkd3d-shader/hlsl: Clarify a comment.
2024-09-23 15:28:47 +02:00
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
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
Francisco Casas
6bd0390498
vkd3d-shader/hlsl: Save hlsl_ir_if in the vsir_program for SM1.
2024-09-14 16:33:25 +02:00
Henri Verbeet
6b0baeb6c2
vkd3d-shader/ir: Merge vsir_program_normalise_combined_samplers() into vsir_program_lower_instructions().
2024-09-14 16:11:45 +02:00
Henri Verbeet
3b68aa5b87
vkd3d-shader/ir: Introduce vsir_src_param_init_sampler().
2024-09-14 16:11:45 +02:00
Henri Verbeet
7ea8a29036
vkd3d-shader/ir: Introduce vsir_src_param_init_resource().
2024-09-14 16:11:45 +02:00
Henri Verbeet
ca445cd832
vkd3d-shader/ir: Move the instruction helpers together.
2024-09-14 16:11:45 +02:00
Henri Verbeet
d54e2ebd7d
vkd3d-shader/ir: Move the destination parameter helpers up.
2024-09-14 16:11:45 +02:00
Henri Verbeet
4bad83c9fb
vkd3d-shader/ir: Move the source parameter helpers up.
2024-09-14 16:11:45 +02:00
Francisco Casas
ffc1449412
vkd3d-shader/hlsl: Allow effect calls on default value initializers.
2024-09-14 16:09:12 +02:00
Francisco Casas
4aa262d773
vkd3d-shader/hlsl: Parse ConstructGSWithSO().
2024-09-14 16:09:08 +02:00
Francisco Casas
1f9fc2a422
vkd3d-shader/hlsl: Process GeometryShader as a valid stateblock lhs.
2024-09-14 16:02:43 +02:00
Francisco Casas
02b249d5e7
vkd3d-shader/hlsl: Introduce enum hlsl_compile_type.
2024-09-14 15:57:40 +02:00
Nikolay Sivov
4c03cda3c7
vkd3d-shader/tpf: Handle texture instructions in STAT.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-13 16:01:22 +02:00
Nikolay Sivov
9e4b2f5a1b
vkd3d-shader/tpf: Handle 'movc' in STAT.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-13 16:01:22 +02:00
Nikolay Sivov
7bd6c6b172
vkd3d-shader/tpf: Handle 'emit' and 'cut' in STAT.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-13 16:01:22 +02:00
Nikolay Sivov
908833fa6b
vkd3d-shader/tpf: Handle arithmetic instructions in STAT.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-13 16:01:22 +02:00
Nikolay Sivov
cfa8f0dccb
vkd3d-shader/tpf: Handle conversion instructions in STAT.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-13 16:01:22 +02:00
Giovanni Mascellani
44222ea739
vkd3d-shader/ir: Introduce a helper for validating ENDREP.
2024-09-13 15:59:49 +02:00
Giovanni Mascellani
e9fbbf26bb
vkd3d-shader/ir: Introduce a helper for validating REP.
2024-09-13 15:59:15 +02:00
Giovanni Mascellani
bf9022d3df
vkd3d-shader/ir: Introduce a helper for validating ENDLOOP.
2024-09-13 15:58:46 +02:00
Giovanni Mascellani
5ce10b9e68
vkd3d-shader/ir: Introduce a helper for validating LOOP.
2024-09-13 15:58:01 +02:00
Giovanni Mascellani
34c8aaad29
vkd3d-shader/ir: Introduce a helper for validating ENDIF.
2024-09-13 15:57:39 +02:00
Giovanni Mascellani
244838d344
vkd3d-shader/ir: Introduce a helper for validating ELSE.
2024-09-13 15:56:18 +02:00
Giovanni Mascellani
8af2d04dbc
vkd3d-shader/ir: Introduce a helper for validating IFC.
2024-09-13 15:54:51 +02:00
Giovanni Mascellani
af687c9522
vkd3d-shader/ir: Introduce a helper for validating IF.
2024-09-13 15:54:16 +02:00
Giovanni Mascellani
35fe5b48c8
vkd3d-shader/ir: Introduce a helper for validating DCL_TEMPS.
2024-09-13 15:52:07 +02:00
Henri Verbeet
d30160710b
vkd3d-shader/tpf: Include vkd3d_d3dcommon.h only from tpf.c.
2024-09-12 18:50:51 +02:00
Henri Verbeet
14ee3b3e4a
vkd3d-shader/d3dbc: Use VKD3D_SM1_DCL_USAGE_SHIFT and VKD3D_SM1_DCL_USAGE_INDEX_SHIFT in d3dbc_write_semantic_dcl().
2024-09-12 18:49:57 +02:00
Elizabeth Figura
1aa857735f
vkd3d-shader/hlsl: Preserve doubles in intrinsic_determinant().
2024-09-12 18:48:52 +02:00
Elizabeth Figura
e146cc4c8e
vkd3d-shader/hlsl: Preserve doubles in intrinsic_cross().
2024-09-12 18:48:52 +02:00
Elizabeth Figura
1176aaad22
vkd3d-shader/hlsl: Preserve doubles in elementwise_intrinsic_float_convert_args().
2024-09-12 18:48:52 +02:00
Elizabeth Figura
ebaf877b62
vkd3d-shader/hlsl: Preserve doubles in intrinsic_float_convert_arg().
2024-09-12 18:48:52 +02:00
Elizabeth Figura
534d546ed9
vkd3d-shader/hlsl: Use expr_common_base_type() in intrinsic_cross().
2024-09-12 18:48:52 +02:00
Elizabeth Figura
9260078300
vkd3d-shader/hlsl: Use intrinsic_float_convert_arg() in write_acos_or_asin().
2024-09-12 18:48:52 +02:00
Anna (navi) Figueiredo Gomes
e61046fb23
vkd3d-shader/hlsl: Implement the "earlydepthstencil" attribute.
2024-09-12 18:46:24 +02:00
Francisco Casas
0c621f9e4e
vkd3d-shader/hlsl: Save hlsl_ir_jump in the vsir_program for SM1.
2024-09-12 18:43:55 +02:00
Francisco Casas
08fb683784
vkd3d-shader/hlsl: Save hlsl_ir_resource_load in the vsir_program for SM1.
2024-09-12 18:42:25 +02:00
Francisco Casas
961c4f8b23
vkd3d-shader/hlsl: Save CAST hlsl_ir_exprs in the vsir_program for SM1.
2024-09-12 18:39:43 +02:00
Francisco Casas
8933620109
vkd3d-shader/hlsl: Save REINTERPRET hlsl_ir_exprs as vsir_program MOVs for SM1.
2024-09-12 18:33:19 +02:00
Giovanni Mascellani
866f138875
vkd3d-shader/ir: Record the control flow type in the program.
2024-09-12 18:31:32 +02:00
Giovanni Mascellani
dcee148b1a
vkd3d-shader/ir: Move the control flow type enumeration to vkd3d_shader_private.h.
2024-09-12 18:27:20 +02:00
Nikolay Sivov
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
Feifan He
5df81049aa
vkd3d-shader/msl: Call vsir_program_transform() before generating code.
2024-09-12 18:09:00 +02:00
Feifan He
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
Feifan He
23ba1a5e07
vkd3d-shader: Introduce VKD3D_SHADER_TARGET_MSL.
2024-09-12 17:03:32 +02:00
Henri Verbeet
ab525f31e4
vkd3d-shader/d3dbc: Use enum vkd3d_shader_src_modifier in struct sm1_src_register.
2024-09-11 15:24:54 +02:00
Henri Verbeet
f3e6c75c89
vkd3d-shader/d3dbc: Use enum vkd3d_shader_dst_modifier in struct sm1_dst_register.
2024-09-11 15:19:29 +02:00
Giovanni Mascellani
b31c9831fa
vkd3d-shader/ir: Print results as signed numbers.
2024-09-11 15:13:14 +02:00
Giovanni Mascellani
096f133b09
vkd3d-shader/ir: Rename vsir_program_normalise() to vsir_program_transform().
2024-09-11 15:13:14 +02:00
Giovanni Mascellani
03ab0156a2
vkd3d-shader/ir: Run validation after inserting the alpha test.
2024-09-11 15:13:14 +02:00
Giovanni Mascellani
5c0d640d18
vkd3d-shader/ir: Run validation after flattening control flow constructs.
2024-09-11 15:13:14 +02:00
Giovanni Mascellani
4b06729be8
vkd3d-shader/ir: Run validation after normalising combined samplers.
2024-09-11 15:13:14 +02:00
Giovanni Mascellani
c2fd1e42fd
vkd3d-shader/ir: Run validation after removing dead code.
2024-09-11 15:13:14 +02:00
Elizabeth Figura
82773eb805
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in refract().
2024-09-11 15:11:42 +02:00
Elizabeth Figura
2688a24bde
vkd3d-shader/hlsl: Preserve halves in intrinsic_step().
2024-09-11 15:11:42 +02:00
Elizabeth Figura
b23c172a47
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in intrinsic_smoothstep().
2024-09-11 15:11:42 +02:00
Elizabeth Figura
e7eadb38b8
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in intrinsic_faceforward().
2024-09-11 15:11:42 +02:00
Elizabeth Figura
24e29649c4
vkd3d-shader/hlsl: Use elementwise_intrinsic_convert_args() in intrinsic_dst().
...
This one preserves integer arguments.
2024-09-11 15:11:42 +02:00
Elizabeth Figura
7636f2a233
vkd3d-shader/hlsl: Use elementwise_intrinsic_float_convert_args() in write_atan_or_atan2().
2024-09-11 15:11:42 +02:00
Francisco Casas
6e6e2910d6
vkd3d-shader/hlsl: Save DP2ADD hlsl_ir_exprs in the vsir_program for SM1.
2024-09-11 15:10:16 +02:00
Francisco Casas
4ed16108f0
vkd3d-shader/hlsl: Save COS_REDUCED and SIN_REDUCED in the vsir_program for SM1.
2024-09-11 15:09:58 +02:00
Francisco Casas
5db2c2a949
vkd3d-shader/hlsl: Save DOT hlsl_ir_exprs in the vsir_program for SM1.
2024-09-11 15:09:17 +02:00
Francisco Casas
d70342d66d
vkd3d-shader/hlsl: Save per-component hlsl_ir_exprs in the vsir_program for SM1.
2024-09-11 15:07:35 +02:00
Francisco Casas
82dec5db46
vkd3d-shader/hlsl: Save simple hlsl_ir_exprs in the vsir_program for SM1.
2024-09-11 15:06:09 +02:00
Nikolay Sivov
3b4e0ce8e9
vkd3d-shader/fx: Check modifiers when reusing types.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-10 21:48:03 +02:00
Conor McCarthy
e550901efa
vkd3d-shader/ir: Free the semantic names of deleted signature elements in shader_signature_merge(). (Valgrind)
2024-09-10 21:45:22 +02:00
Giovanni Mascellani
828dfdf1bd
vkd3d-shader/ir: Run validation after normalising flat constants.
2024-09-10 21:43:14 +02:00
Giovanni Mascellani
1c285d40bd
vkd3d-shader/ir: Run validation after normalising I/O registers.
2024-09-10 21:43:14 +02:00
Giovanni Mascellani
d8c41cc270
vkd3d-shader/ir: Run validation after normalising Hull Shader control points I/O registers.
2024-09-10 21:43:14 +02:00
Giovanni Mascellani
a3fdc447de
vkd3d-shader/ir: Run validation after flattening hull shader phases.
2024-09-10 21:43:14 +02:00
Giovanni Mascellani
5fd93c28c4
vkd3d-shader/ir: Run validation after remapping the output signature.
2024-09-10 21:43:14 +02:00
Henri Verbeet
207664baca
vkd3d-shader/d3dbc: Use VKD3D_SM1_REGISTER_TYPE_SHIFT and related constants in sm1_encode_register_type().
2024-09-10 21:42:23 +02:00
Henri Verbeet
f163df787e
vkd3d-shader/d3dbc: Avoid D3DVS_VERSION and D3DPS_VERSION.
2024-09-10 21:41:33 +02:00
Nikolay Sivov
de6abd964e
vkd3d-shader/hlsl: Implement the mad() intrinsic.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-10 21:40:32 +02:00
Nikolay Sivov
75299c04fd
vkd3d-shader: Handle the SV_SampleIndex semantic.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-10 21:39:03 +02:00
Giovanni Mascellani
bfd1fc9cd6
vkd3d-shader/ir: Assume that Hull Shaders have a control point phase in vsir_program_normalise_io_registers().
...
The control point phase is always introduced, when missing, by the
earlier instruction_array_normalise_hull_shader_control_point_io()
pass.
2024-09-05 16:33:05 +02:00
Giovanni Mascellani
7b9a1bf6df
vkd3d-shader/ir: Run validation after materializing undominated SSAs to TEMPs.
2024-09-05 16:29:47 +02:00
Giovanni Mascellani
08c1f4d45e
vkd3d-shader/ir: Run validation after flattening control flow constructs.
2024-09-05 16:29:17 +02:00
Giovanni Mascellani
455c826a6a
vkd3d-shader/ir: Run validation after structurization.
2024-09-05 16:29:11 +02:00
Giovanni Mascellani
e935dcb88d
vkd3d-shader/ir: Run validation after lowering switches to selection ladders.
2024-09-05 16:29:02 +02:00
Giovanni Mascellani
4a28433ef5
vkd3d-shader/ir: Run validation after materializing PHI SSAs to TEMPs.
2024-09-05 16:26:52 +02:00
Giovanni Mascellani
fade5dd54c
vkd3d-shader/ir: Run validation after lowering instructions.
2024-09-05 16:25:33 +02:00
Giovanni Mascellani
ffb7284fb6
vkd3d-shader/ir: Do not decide the control flow type on NOPs.
2024-09-05 16:20:39 +02:00
Giovanni Mascellani
829e6f5cd0
vkd3d-shader/ir: Emit a warning instead of an error on validation failures.
2024-09-05 16:20:39 +02:00
Henri Verbeet
03d76f653b
vkd3d-shader/d3dbc: Use VKD3D_SM1_INSTRUCTION_LENGTH_SHIFT instead of D3DSI_INSTLENGTH_SHIFT.
2024-09-05 12:47:43 +02:00
Henri Verbeet
b9693393fd
vkd3d-shader/d3dbc: Store a enum vkd3d_sm1_opcode in struct sm1_instruction.
2024-09-05 12:45:43 +02:00
Nikolay Sivov
0a6bcf5da7
vkd3d-shader/tpf: Fix a typo when adding the SFI0 section.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-09-04 18:43:41 +02:00