Nikolay Sivov
18c1477464
vkd3d-shader/hlsl: Ignore 'inline' modifier for functions.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-28 20:39:53 +02:00
Nikolay Sivov
89eda51855
vkd3d-shader/hlsl: Change warning code for unknown loop attributes.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-24 21:43:50 +02:00
Nikolay Sivov
1153f6bb34
vkd3d-shader/hlsl: Parse "if" statement attributes.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-24 21:43:49 +02:00
Nikolay Sivov
4f2e07a45d
vkd3d-shader/hlsl: Allow 'const' modifier without initializer in the global scope.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-15 21:51:50 +02:00
Zebediah Figura
0652bb1950
vkd3d-shader/hlsl: Store the "instrs" field of struct hlsl_attribute as a hlsl_block.
2023-08-08 21:15:08 +09:00
Zebediah Figura
372ddd1f29
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_load_component().
2023-08-08 21:15:05 +09:00
Nikolay Sivov
d50b5fe767
vkd3d-shader/hlsl: Parse GetDimensions() method.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-31 21:07:48 +09:00
Zebediah Figura
819c5f1943
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_expr().
2023-07-27 17:17:48 +09:00
Zebediah Figura
9d94506313
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_cast().
2023-07-27 17:17:47 +09:00
Zebediah Figura
fe70ee2158
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_implicit_conversion().
2023-07-27 17:17:46 +09:00
Zebediah Figura
21d5ee4df2
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_array_access().
2023-07-27 17:17:41 +09:00
Zebediah Figura
c861a937e8
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_method_call().
2023-07-27 17:17:37 +09:00
Zebediah Figura
f95ab2a5e8
vkd3d-shader/hlsl: Pass an hlsl_block pointer to add_assignment().
2023-07-24 22:41:16 +02:00
Zebediah Figura
7e7a6d3691
vkd3d-shader/hlsl: Pass a hlsl_block pointer to hlsl_add_conditional().
2023-07-24 22:41:15 +02:00
Zebediah Figura
cdabe172cb
vkd3d-shader/hlsl: Return a hlsl_block from the "declaration" and "struct_declaration" rules.
2023-07-20 22:33:00 +02:00
Zebediah Figura
54bd6f7b4b
vkd3d-shader/hlsl: Return a hlsl_block from the "declaration_statement" rule.
2023-07-20 22:32:59 +02:00
Zebediah Figura
77e1c5893e
vkd3d-shader/hlsl: Return a hlsl_block from the "primary_expr" rule.
2023-07-20 22:32:57 +02:00
Zebediah Figura
aec9ea085e
vkd3d-shader/hlsl: Return a hlsl_block from the "postfix_expr" rule.
2023-07-11 22:44:15 +02:00
Zebediah Figura
e222a786a1
vkd3d-shader/hlsl: Return a hlsl_block from binary and ternary expression rules.
2023-07-11 22:44:12 +02:00
Zebediah Figura
3079c874e3
vkd3d-shader/hlsl: Return a hlsl_block from the "unary_expr" rule.
2023-07-11 22:44:10 +02:00
Zebediah Figura
28dff58fb5
vkd3d-shader/hlsl: Return a hlsl_block from the "initializer_expr" rule.
2023-07-11 22:44:09 +02:00
Zebediah Figura
53d5ea639c
vkd3d-shader/hlsl: Return a hlsl_block from the "assignment_expr" rule.
2023-07-11 22:44:06 +02:00
Zebediah Figura
6e303af519
vkd3d-shader/hlsl: Free the "iter" block pointer on success in create_loop().
...
Spotted by Giovanni Mascellani.
2023-07-05 22:32:48 +02:00
Zebediah Figura
b0ac77b44d
vkd3d-shader/hlsl: Return a hlsl_block from the "expr_statement" and "expr" rules.
2023-07-05 22:32:47 +02:00
Zebediah Figura
07ce711583
vkd3d-shader/hlsl: Return a hlsl_block from the "jump_statement" rule.
2023-07-05 22:32:46 +02:00
Zebediah Figura
e4bf5933b9
vkd3d-shader/hlsl: Return a hlsl_block from the "selection_statement" rule.
2023-07-05 22:32:45 +02:00
Zebediah Figura
79dd9544b7
vkd3d-shader/hlsl: Return a hlsl_block from the "loop_statement" rule.
2023-07-05 22:32:43 +02:00
Zebediah Figura
23ff83e8a0
vkd3d-shader/hlsl: Return a hlsl_block from the "statement" rule.
...
As well as from the "statement_list" and "compound_statement" rules, which
trivially pass through from "statement".
2023-07-05 22:32:41 +02:00
Nikolay Sivov
06040d2a30
vkd3d-shader/hlsl: Disallow certain instruction types from constant expressions.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-04 22:39:57 +02:00
Nikolay Sivov
a65c0b0e22
vkd3d-shader/hlsl: Support evaluated expressions for sample count in multisampled textures declarations.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-04 22:39:55 +02:00
Francisco Casas
01800942a9
vkd3d-shader/hlsl: Declare vars individually when parsing struct declarations.
...
A struct declaration with variables is now absorbed into the 'declaration'
rule, like any other variable declaration.
A struct declaration without variables is now reduced to the
'struct_declaration_without_vars' rule.
They both are reduced to a 'declaration_statement' in the end.
2023-07-04 22:39:24 +02:00
Francisco Casas
62c891b796
vkd3d-shader/hlsl: Declare vars individually when parsing regular declarations.
...
In a declaration with multiple variables, the variables must be created
before the initializer of the next variable is parsed. This is required
for initializers such as:
float a = 1, b = a, c = b + 1;
A requisite for this is that the type information is parsed in the same
rule as the first variable (as a variable_def_typed) so it is
immediately available to declare the first variable. Then, the next
untyped variable declaration is parsed, and the type from the first
variable can be used to declare the second, before the third is parsed,
and so on.
2023-07-04 22:39:21 +02:00
Francisco Casas
a34cf2e64e
vkd3d-shader/hlsl: Split declare_vars().
...
Basically, declare_vars() is separated in three functions:
1. check_invalid_in_out_modifiers(), which is to be called once per
declaration and emits an error when in or out modifiers are used for
these non-parameter variables.
2. declare_var(), which now handles one variable at the time and doesn't
free any memory.
3. initialize_vars(), which takes care of preparing the initialization
instructions of several variables and frees their struct
parse_variable_def, using exclusively free_parse_variable_def().
This allows to declare variables individually before the initializer of
the next variable in the same declaration is parsed, which is used in
the following patches.
Also, simplifies memory management.
2023-07-04 22:39:18 +02:00
Francisco Casas
e4d94d955c
vkd3d-shader/hlsl: Support fine derivates.
2023-07-04 22:39:12 +02:00
Francisco Casas
ff31284f8d
vkd3d-shader/hlsl: Support coarse derivates.
2023-07-04 22:39:10 +02:00
Zebediah Figura
9ccba35dde
vkd3d-shader/hlsl: Store the fields of struct parse_if_body as hlsl_block pointers.
2023-06-28 21:40:18 +02:00
Zebediah Figura
8fa1750206
vkd3d-shader/hlsl: Store the "instrs" field of struct parse_initializer as a hlsl_block pointer.
2023-06-28 21:40:16 +02:00
Zebediah Figura
7d521db3db
vkd3d-shader/hlsl: Merge the "discard_statement" rule into "jump_statement".
2023-06-28 21:40:15 +02:00
Zebediah Figura
588784e4dc
vkd3d-shader/hlsl: Use add_unary_arithmetic_expr() in the subtraction rule.
2023-06-28 21:40:14 +02:00
Zebediah Figura
b4bf5af475
vkd3d-shader/hlsl: Factor out add_binary_expr_merge().
2023-06-28 21:40:12 +02:00
Nikolay Sivov
4ed60cda13
vkd3d-shader: Remove extra newlines from compiler messages.
2023-06-27 22:34:19 +02:00
Nikolay Sivov
9ccf291971
vkd3d-shader/hlsl: Use profile version testing helpers in more places.
2023-06-27 22:34:05 +02:00
Nikolay Sivov
5c02e12187
vkd3d-shader/hlsl: Make sample count optional for SM4.1+.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-06-27 22:34:03 +02:00
Nikolay Sivov
861078d63a
vkd3d-shader/hlsl: Handle 'texkill' discard type for sm4+.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-06-27 22:33:50 +02:00
Nikolay Sivov
8d84e206ab
vkd3d-shader/hlsl: Parse clip() function.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-06-27 22:33:48 +02:00
Nikolay Sivov
b40179da3a
vkd3d-shader/hlsl: Add a parameter for jump nodes and use it for 'discard'.
2023-06-27 22:33:47 +02:00
Nikolay Sivov
d856be0519
vkd3d-shader/hlsl: Handle static constants in array size expressions.
2023-06-12 22:50:12 +02:00
Nikolay Sivov
99314b6340
vkd3d-shader/hlsl: Store static initialization instructions in a block.
2023-06-12 22:50:11 +02:00
Zebediah Figura
f34b107faf
vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_constant().
2023-06-08 18:50:35 +02:00
Zebediah Figura
740b0ad807
vkd3d-shader/hlsl: Pass a hlsl_constant_value pointer to hlsl_new_constant().
2023-06-08 18:50:34 +02:00