445 Commits

Author SHA1 Message Date
Francisco Casas
caa2a9d314 vkd3d-shader/hlsl: Parse sampler_state. 2024-10-02 22:07:34 +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
Victor Chiletto
2ea5f187f9 vkd3d-shader/hlsl: Allow cbuffer reservations to overlap if only one of them is allocated. 2024-10-01 17:28:41 +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
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
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
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
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
Shaun Ren
c1babbc8aa vkd3d-shader/hlsl: Validate hull shader attributes. 2024-09-04 18:30:04 +02:00
Shaun Ren
6c1dc53d15 vkd3d-shader/hlsl: Parse the patchconstantfunc attribute. 2024-09-04 18:30:04 +02:00
Shaun Ren
41cb29c4c8 vkd3d-shader/hlsl: Parse the partitioning attribute. 2024-09-04 18:28:59 +02:00
Shaun Ren
615ffb823b vkd3d-shader/hlsl: Parse the outputtopology attribute. 2024-09-04 18:28:57 +02:00