Elizabeth Figura
e40d4a0e12
vkd3d-shader/hlsl: Factor out the error message into hlsl_add_var().
2025-01-29 17:58:00 +01:00
Elizabeth Figura
2863d86bcc
vkd3d-shader/hlsl: Do not define a separate scope for function parameters.
...
Remove the no longer needed code to detect redefinition in this case.
2025-01-29 17:58:00 +01:00
Shaun Ren
f064a4022a
vkd3d-shader/hlsl: Validate and record InputPatch/OutputPatch types.
2025-01-29 17:45:46 +01:00
Shaun Ren
f4d5e05d96
vkd3d-shader/hlsl: Parse InputPatch and OutputPatch objects.
2025-01-29 17:41:51 +01:00
Shaun Ren
a77dca528a
vkd3d-shader/hlsl: Forbid declaring const variables with no initializer.
2025-01-29 17:36:58 +01:00
Elizabeth Figura
25c6d16b45
vkd3d-shader/hlsl: Use the casted value in exp().
2025-01-28 13:14:50 +01:00
Conor McCarthy
f63254d905
vkd3d-shader/dxil: Handle SV_RenderTargetArrayIndex.
2025-01-27 14:52:28 +01:00
Elizabeth Figura
d049ea640f
vkd3d-shader/hlsl: Implement broadcasts in constant folding.
...
Normally lower_broadcasts() takes care of this, but loop unrolling executes before other constant passes.
2025-01-27 14:48:03 +01:00
Giovanni Mascellani
343022cdc1
vkd3d-shader/spirv: Interpret the write mask as a destination swizzle for double comparison operations.
...
This fixes a failure on a shader in Wild hearts.
2025-01-22 14:51:16 +01:00
Francisco Casas
4d18fb39b6
vkd3d-shader/hlsl: Don't forbid first base type cast on var assignments.
2025-01-22 14:46:02 +01:00
Francisco Casas
0a15ab702f
vkd3d-shader/hlsl: Don't count cast to param type on IN as part of OUT var's lhs.
...
If the parameter is HLSL_STORAGE_IN, we add a cast from the arg to the
param type so that it can enter the function, however this cast should
not be considered part of the lhs on the implicit assignment that happens
if the var is also HLSL_STORAGE_OUT.
2025-01-22 14:39:20 +01:00
Francisco Casas
b55fe1950e
vkd3d-shader/hlsl: Support non-size-changing lhs casts.
2025-01-22 14:38:10 +01:00
Francisco Casas
c2e224c5fb
vkd3d-shader/hlsl: Delay lowering complex casts until after parse time.
...
While so far it has been posible to do this at parse time, this must
happen after knowing if the complex cast is on the lhs or not.
The modified tests show that before this patch we are currently
miscompiling when this happens, because a complex lhs cast is transformed
into a load, and add_assigment() just stores to the generated "cast"
temp.
2025-01-22 14:34:19 +01:00
Anna (navi) Figueiredo Gomes
c7b209124b
vkd3d-shader/hlsl: Consider conversions across all parameters in function_compare().
...
For example, given two arguments, half3 and float, and two functions,
func(float, float) and func(float3, float3), fxc/d3dcompiler prefers to
widen both arguments to float3.
2025-01-22 14:18:54 +01:00
Shaun Ren
f3f2880261
vkd3d-shader/d3d-asm: Print vocp registers with subscript.
2025-01-21 14:05:21 +01:00
Shaun Ren
a9d7c65eb8
vkd3d-shader/hlsl: Forbid declaring parameters as both out and const.
...
Note that inout const parameters are allowed.
2025-01-21 14:03:44 +01:00
Shaun Ren
4fbfb44681
vkd3d-shader/spirv: Emit the tessellator domain for domain shaders.
...
Commit 1ed8d907b3
inadvertently dropped
emitting the tessellator domain for domain shaders. Although Vulkan
environments allow us to write the tessellator domain from the hull
shader, the domain shader, or both, that's not generally true for OpenGL
environments.
2025-01-20 15:50:04 +01:00
Shaun Ren
802d7317cb
vkd3d-shader/hlsl: Implement the InterlockedXor() intrinsic.
2025-01-20 15:42:45 +01:00
Shaun Ren
cbd504e888
vkd3d-shader/hlsl: Implement the InterlockedOr() intrinsic.
2025-01-20 15:42:45 +01:00
Shaun Ren
5b9634a7b7
vkd3d-shader/hlsl: Implement the InterlockedMin() intrinsic.
2025-01-20 15:42:43 +01:00
Shaun Ren
63fbe161f2
vkd3d-shader/hlsl: Implement the InterlockedMax() intrinsic.
2025-01-20 15:42:07 +01:00
Shaun Ren
b447fdce51
vkd3d-shader/hlsl: Implement the InterlockedExchange() intrinsic.
2025-01-20 15:41:07 +01:00
Shaun Ren
3fb47373a1
vkd3d-shader/hlsl: Implement the InterlockedCompareStore() intrinsic.
2025-01-20 15:41:07 +01:00
Shaun Ren
22ab08f4d8
vkd3d-shader/hlsl: Implement the InterlockedCompareExchange() intrinsic.
2025-01-20 15:41:07 +01:00
Shaun Ren
3b19a4aaf3
vkd3d-shader/hlsl: Implement the InterlockedAnd() intrinsic.
2025-01-20 15:41:07 +01:00