648 Commits

Author SHA1 Message Date
Elizabeth Figura
29bac62ba2 vkd3d-shader/hlsl: Move the "dimx" and "dimy" fields to the type-specific union. 2025-01-10 19:38:13 +01:00
Anna (navi) Figueiredo Gomes
f09ac4959e vkd3d-shader/hlsl: Implement the GatherCmp() methods. 2024-12-18 17:27:43 +01:00
Henri Verbeet
c4f69f4d3d vkd3d-shader/hlsl: Prefer overload candidates without component count widening. 2024-12-16 17:09:40 +01:00
Henri Verbeet
64bb4150f0 vkd3d-shader/hlsl: Prefer overload candidates without component type narrowing. 2024-12-16 17:09:40 +01:00
Henri Verbeet
32d432ab5e vkd3d-shader/hlsl: Prefer overload candidates with matching component types. 2024-12-16 17:09:40 +01:00
Henri Verbeet
6b8878377f vkd3d-shader/hlsl: Prefer overload candidates with matching component type classes. 2024-12-16 17:09:40 +01:00
Henri Verbeet
63fce3062e vkd3d-shader/hlsl: Prefer overload candidates without component count narrowing. 2024-12-16 17:09:40 +01:00
Elizabeth Figura
474a0ac4e2 vkd3d-shader/hlsl: Use swizzle helpers in more places. 2024-12-12 17:11:53 +01:00
Elizabeth Figura
a905a78a96 vkd3d-shader/hlsl: Use a structure for matrix swizzles. 2024-12-12 17:11:27 +01:00
Victor Chiletto
ed6061dfae vkd3d-shader/hlsl: Drop the _ir_ infix from enum hlsl_loop_unroll_type. 2024-12-12 16:54:07 +01:00
Victor Chiletto
351d58a95b vkd3d-shader/hlsl: Partially defer continue resolution.
We need 'for' iter blocks to be separate for loop unrolling.
2024-12-12 16:41:34 +01:00
Henri Verbeet
74365417ac vkd3d-shader/hlsl: Output the candidates for ambiguous function calls. 2024-12-03 14:38:33 +01:00
Henri Verbeet
d0e4331640 vkd3d-shader/hlsl: Use hlsl_error() instead of hlsl_fixme() for ambiguous function calls.
This changes the return code, and some tests start passing as a result.
2024-12-03 14:38:33 +01:00
Elizabeth Figura
8bc9e15618 vkd3d-shader/hlsl: Translate invalid implicit-size arrays to an error type.
Instead of returning nonsense (such as, currently, a type with zero size).
In practice this improves error reporting for shaders such as the following:

void func(float x[])
{
    float y[] = {x};
}

Currently this outputs a nonsense

test.hlsl:1:19: E5002: Implicit size arrays not allowed in function parameters.
test.hlsl:3:7: E5002: Implicit size arrays need to be initialized.

With this patch the second warning is removed.
2024-12-03 12:39:27 +01:00
Elizabeth Figura
e060b47330 vkd3d-shader/hlsl: Return an error expression when a function is used as a variable. 2024-12-03 12:39:27 +01:00
Elizabeth Figura
c553c45f00 vkd3d-shader/hlsl: Move the numeric type check to add_constructor(). 2024-12-03 12:39:27 +01:00
Elizabeth Figura
97eac342d3 vkd3d-shader/hlsl: Do not abort parsing when invalid modifiers are used. 2024-12-03 12:39:27 +01:00
Elizabeth Figura
9c70348b39 vkd3d-shader/hlsl: Do not abort when modifying a const expression. 2024-12-03 12:39:27 +01:00
Francisco Casas
198c3dc7b9 vkd3d-shader/hlsl: Remove hlsl_ir_vsir_instruction_ref, again. 2024-11-27 13:03:15 +01:00
Nikolay Sivov
1a6409cd5b vkd3d-shader/hlsl: Add parser support for stream-output object types.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-21 19:28:46 +01:00
Nikolay Sivov
e5ba79b4f1 vkd3d-shader/hlsl: Implement the ByteAddressBuffer.Load*() methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-06 22:09:23 +01:00
Nikolay Sivov
1a28e7d9c6 vkd3d-shader/hlsl: Add parser support for the ByteAddressBuffer type.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-06 21:56:27 +01:00
Francisco Casas
950c381728 vkd3d-shader/hlsl: Store RASTERIZER_SAMPLE_COUNT in the vsir program.
Also, the profile check for GetRenderTargetSampleCount() is moved to
parse time.
2024-11-05 19:48:31 +01:00
Nikolay Sivov
5ea946aa90 vkd3d-shader/hlsl: Accept multiple colon-separated attributes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-11-05 18:23:31 +01:00
Nikolay Sivov
89e5912fd2 vkd3d-shader/hlsl: Implement RWByteAddressBuffer.Store*() methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:51:04 +01:00
Nikolay Sivov
cf27065b7d vkd3d-shader/hlsl: Add parser support for the RWByteAddressBuffer type.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:44:28 +01:00
Nikolay Sivov
4195a2f18a vkd3d-shader/hlsl: Use a more compact way to store object method configurations.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-28 17:41:46 +01:00
Elizabeth Figura
390a330b8e vkd3d-shader/hlsl: Avoid leaking the block in the subscript rule. 2024-10-28 15:40:41 +01:00
Elizabeth Figura
bb74180659 vkd3d-shader/hlsl: Return an error expression when an invalid subscript is used. 2024-10-28 15:40:41 +01:00
Elizabeth Figura
7905c47765 vkd3d-shader/hlsl: Handle error expressions in array sizes. 2024-10-28 15:40:41 +01:00
Elizabeth Figura
8b98e483ac vkd3d-shader/hlsl: Handle error expressions in return statements. 2024-10-28 15:40:41 +01:00
Elizabeth Figura
94cf432035 vkd3d-shader/hlsl: Handle error expressions in conditions. 2024-10-28 15:40:41 +01:00
Francisco Casas
158bf794e6 vkd3d-shader/hlsl: Introduce hlsl_ir_vsir_instruction_ref, again.
This node type will be deleted (again) once the hlsl->vsir->tpf
translation is complete. It serves the purpose of allowing to keep
both real hlsl_ir_nodes and vsir_instructions in the hlsl_block,
until all the former can be translated into the latter.
2024-10-24 20:50:59 +02:00
Nikolay Sivov
cf3e251a9f vkd3d-shader/hlsl: Implement the f32tof16() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-22 20:28:33 +02:00
Nikolay Sivov
fb2b974466 vkd3d-shader/hlsl: Handle snorm/unorm types as resource formats.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-22 19:14:51 +02:00
Elizabeth Figura
eeb7bbe3c5 vkd3d-shader/hlsl: Handle error expressions in ternary expressions. 2024-10-17 17:28:52 +02:00
Elizabeth Figura
d95962068a vkd3d-shader/hlsl: Handle error expressions in initializers. 2024-10-17 17:28:52 +02:00
Elizabeth Figura
dfe79cb6a9 vkd3d-shader/hlsl: Factor the component count check into initialize_var(). 2024-10-17 17:28:52 +02:00
Elizabeth Figura
d8892a4ca2 vkd3d-shader/hlsl: Store the initializer location in struct parse_initializer. 2024-10-17 17:28:52 +02:00
Elizabeth Figura
44ea7b5e12 vkd3d-shader/hlsl: Factor out an initialize_var() helper. 2024-10-17 17:28:52 +02:00
Shaun Ren
069b8aac64 vkd3d-shader/hlsl: Implement struct single inheritance.
Here, we implement single inheritance by inserting a field at the
beginning of the derived struct with name "$super".

For the following struct declarations

  struct a
  {
      float4 aa;
      float4 bb;
  };

  struct b : a
  {
      float4 cc;
  };

  struct c : b
  {
      float4 bb;
  };

this commit generates the following:

  struct a
  {
      float4 aa;
      float4 bb;
  };

  struct b
  {
      struct a $super;
      float4 cc;
  };

  struct c
  {
      struct b $super;
      float4 bb;
  };
2024-10-16 21:07:53 +02:00
Nikolay Sivov
5fb3a91276 vkd3d-shader/hlsl: Implement the modf() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-10-15 16:43:33 +02:00
Elizabeth Figura
34fdb304bb vkd3d-shader/hlsl: Handle error expressions in increments. 2024-10-07 17:33:07 +02:00
Elizabeth Figura
84685fb56d vkd3d-shader/hlsl: Handle error expressions in subscripts. 2024-10-07 17:33:07 +02:00
Elizabeth Figura
c66f25016b vkd3d-shader/hlsl: Handle error expressions in array indexes. 2024-10-07 17:33:07 +02:00
Elizabeth Figura
41ff4343e1 vkd3d-shader/hlsl: Handle error expressions in explicit casts. 2024-10-07 17:33:07 +02:00
Elizabeth Figura
10efdd3f63 vkd3d-shader/hlsl: Introduce an add_explicit_conversion() helper. 2024-10-07 17:33:07 +02:00
Francisco Casas
0b989c9f37 vkd3d-shader/hlsl: Fix the conditions to discard default values.
Otherwise default_values for strings are lost.

Thanks to Nikolay Sivov for pointing this out.
2024-10-07 17:28:07 +02:00
Elizabeth Figura
cebe0a8b95 vkd3d-shader/hlsl: Handle error expressions in method calls. 2024-10-03 17:47:26 +02:00
Elizabeth Figura
600f90e8b0 vkd3d-shader/hlsl: Handle error expressions in assignments. 2024-10-03 17:47:26 +02:00