Francisco Casas
7363fd2816
tests: Add additional tests for function calls in state block rhs.
2024-08-20 21:26:26 +02:00
Petrichor Park
4467c655f0
vkd3d-shader/hlsl: Factor out add_binary_expr() and use it for assignment operators.
...
This fixes a lot of internal compiler errors with assignment operators,
especially bitwise ones. The bitwise-assignment test has the motivating
examples.
2024-08-19 14:15:43 +02:00
Nikolay Sivov
ebc039d128
vkd3d-shader/fx: Resolve NULL values for SamplerState.Texture field.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-15 17:53:46 +02:00
Nikolay Sivov
873b182021
vkd3d-shader/fx: Support NULL constants for object fields.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-15 17:53:46 +02:00
Nikolay Sivov
aa0ea548e4
vkd3d-shader/fx: Handle SetPixelShader() and SetVertexShader().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-15 17:53:46 +02:00
Nikolay Sivov
2c533e494a
vkd3d-shader/fx: Handle SetBlendState().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-15 17:53:46 +02:00
Nikolay Sivov
60ce81112b
vkd3d-shader/fx: Support string annotations for fx_4+.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-14 22:00:35 +02:00
Nikolay Sivov
89be723ad7
vkd3d-shader/hlsl: Treat "string" type name as case-insensitive.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-14 22:00:35 +02:00
Nikolay Sivov
1ce68cee2c
vkd3d-shader/hlsl: Tokenize 'String' the same as 'string'.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-14 22:00:35 +02:00
Francisco Casas
094e298c1c
vkd3d-shader/hlsl: Parse string default values.
2024-08-13 21:19:01 +02:00
Francisco Casas
f8108a4753
tests: Add additional string tests.
2024-08-13 21:16:46 +02:00
Nikolay Sivov
e0b5fe1288
vkd3d-shader/hlsl: Add a test for assigning to DSV and RTV variables.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-13 21:11:48 +02:00
Nikolay Sivov
b4d957f848
vkd3d-shader/hlsl: Handle NULL constants.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-13 21:10:45 +02:00
Nikolay Sivov
d945d5e78c
vkd3d-shader/hlsl: Check MS texture declaration without sample count only for used variables.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-13 21:10:29 +02:00
Nikolay Sivov
b0ca3627bf
vkd3d-shader/fx: Turn assignments to arrays to element assignments for certain states.
2024-08-12 14:15:14 +02:00
Nikolay Sivov
25e1c3e374
vkd3d-shader/fx: Explicitly handle bool values in state entries.
2024-08-12 14:15:14 +02:00
Nikolay Sivov
c81223d086
vkd3d-shader/fx: Handle states of a BlendState object.
2024-08-12 14:15:14 +02:00
Nikolay Sivov
f1e65ecc83
vkd3d-shader/fx: Enable writing BlendState variables.
2024-08-12 14:15:14 +02:00
Nikolay Sivov
91e88fac2e
vkd3d-shader/hlsl: Add parser support for BlendState type.
2024-08-12 14:15:14 +02:00
Nikolay Sivov
de48960b33
vkd3d-shader/fx: Add support for the OMSetRenderTargets() state.
2024-08-08 23:42:37 +02:00
Nikolay Sivov
9fb23b9090
vkd3d-shader/fx: Handle "Texture" field of the sampler state objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-08 23:42:37 +02:00
Victor Chiletto
8c3a5e5458
vkd3d-shader/hlsl: Implement f16tof32 intrinsic.
2024-08-08 23:35:02 +02:00
Francisco Casas
016be7e591
vkd3d-shader/hlsl: Lower non-constant row_major matrix loads for SM1.
2024-08-08 23:33:33 +02:00
Francisco Casas
87f01f5205
vkd3d-shader/hlsl: Remove SM1 fixme for matrix writemasks.
...
hlsl_ir_store instructions don't use writemasks for whole matrices.
2024-08-08 23:32:03 +02:00
Francisco Casas
9f515a9daa
vkd3d-shader/hlsl: Lower non-constant array loads for SM1.
...
This is achieved by means of creating a variable storing zero,
loading every array element, comparing if the non-constant index
matches the index of that element at runtime, and in that case
store the corresponding element in the variable.
This seems to be the same strategy that the native compiler uses.
2024-08-08 23:30:39 +02:00
Francisco Casas
e0cfd8f86a
tests: Add additional non-constant array indexing tests.
2024-08-08 23:28:31 +02:00
Francisco Casas
84676c378f
tests: Add missing double precission require directives.
...
Otherwise these tests fail on Intel UHD Graphics 770.
2024-08-07 15:54:36 +02:00
Francisco Casas
090df488ba
vkd3d-shader/hlsl: Parse string constants.
2024-08-07 15:48:59 +02:00
Francisco Casas
4b2e847d11
tests: Test string escape sequences.
2024-08-07 15:45:24 +02:00
Nikolay Sivov
c44a18b3d1
vkd3d-shader/fx: Add support for SetDomainShader(), SetComputeShader(), and SetHullShader() states.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-06 16:54:19 +02:00
Nikolay Sivov
2cbad81b55
vkd3d-shader/fx: Handle SetRasterizerState().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-06 16:54:19 +02:00
Nikolay Sivov
a3f4785720
vkd3d-shader/fx: Decompose function-style state assignments to individual states.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-08-05 16:01:33 +02:00
Elizabeth Figura
947b937a1a
tests: Test shade mode.
2024-07-24 16:08:10 +02:00
Victor Chiletto
a0de05f0b4
vkd3d-shader/hlsl: Implement the asint() intrinsic.
2024-07-24 16:06:03 +02:00
Shaun Ren
49caeee1fd
vkd3d-shader/hlsl: Support default values for function parameters.
2024-07-23 15:36:32 +02:00
Nikolay Sivov
dcf4ce753b
vkd3d-shader/fx: Correct empty pass check.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-23 15:23:54 +02:00
Nikolay Sivov
958117df2f
vkd3d-shader/hlsl: Allow annotations on global variables.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-23 15:23:54 +02:00
Shaun Ren
0202393d41
vkd3d-shader/d3dbc: Implement HLSL_OP1_{COS,SIN}_REDUCED for SM1.
...
Also enable SM1 trigonometry function tests.
2024-07-16 19:03:52 +02:00
Elizabeth Figura
5a53b73995
tests: Test alpha test.
2024-07-11 17:02:53 +02:00
Petrichor Park
bec4f413dc
vkd3d-shader/tpf: Implmenent HLSL_OP1_RCP.
...
SM5 comes with a RCP opcode; for SM4, implement it as `DIV dst, 1, x`.
2024-07-11 16:44:16 +02:00
Petrichor Park
b3f0cd5788
vkd3d-shader/hlsl: Implement the rcp() intrinisic.
...
SM1 already has the RCP opcode implemented; SM4 implementation is in the
next commit.
2024-07-11 16:44:02 +02:00
Petrichor Park
3a49852075
vkd3d-shader/hlsl: Implement tests for the rcp() intrinsic.
2024-07-11 16:43:48 +02:00
Elizabeth Figura
59f770214a
vkd3d-shader/hlsl: Implement output SV_Coverage.
2024-07-11 00:33:57 +02:00
Elizabeth Figura
71a3d55e8c
vkd3d-shader/hlsl: Implement the GetRenderTargetSampleCount() intrinsic.
2024-07-11 00:33:57 +02:00
Victor Chiletto
76ae871f5b
tests/hlsl: Test loop unrolling edge cases.
2024-07-11 00:32:53 +02:00
Victor Chiletto
2034a8bab9
vkd3d-shader/hlsl: Implement loop unrolling.
...
Based on a patch by Nikolay Sivov.
Co-authored-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-11 00:32:53 +02:00
Victor Chiletto
900433e371
tests/hlsl: Add a test for dynamically indexed multisampled texture loads.
2024-07-11 00:31:06 +02:00
Petrichor Park
746222b349
vkd3d-shader/hlsl: Implement the faceforward() intrinsic.
2024-07-09 20:43:41 +02:00
Francisco Casas
60c8a813a3
vkd3d-shader/hlsl: Validate state block function calls.
2024-07-09 20:38:08 +02:00
Francisco Casas
af7c4010f4
tests: Test whether valid state block function names are case-sensitive.
2024-07-09 20:37:20 +02:00
Francisco Casas
b5f2e7daeb
vkd3d-shader/hlsl: Parse function call syntax on state blocks.
2024-07-09 20:36:28 +02:00
Francisco Casas
f15d8dc9e9
tests: Separate the valid stateblock function names test from the string arg test.
...
This test is important because it checks that all the valid names for
stateblock functions with the expected amount of arguments are tested,
but, after parsing state block function calls, the only reason it is
not passing is that we don't parse strings yet.
2024-07-09 20:34:17 +02:00
Nikolay Sivov
3dc43e8945
vkd3d-shader: Disallow object structure fields for fx profiles.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:49:28 +02:00
Nikolay Sivov
c8720f1229
tests: Add some fx profiles tests for structure types containing objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:49:28 +02:00
Nikolay Sivov
937a80ead6
vkd3d-shader/fx: Write annotations for fx_4+ profiles.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:49:28 +02:00
Nikolay Sivov
0f7ac0a054
vkd3d-shader/hlsl: Set default values for annotations variables.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:49:06 +02:00
Nikolay Sivov
4d2ce385a7
vkd3d-shader/hlsl: Do not crash on initialization of a redefined variable.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:24:46 +02:00
Nikolay Sivov
2176294df8
vkd3d-shader/hlsl: Implement tex*grad() functions.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:23:38 +02:00
Nikolay Sivov
4ff288bd32
vkd3d-shader: Implement tex*() functions variants with gradient arguments.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:23:38 +02:00
Nikolay Sivov
f03cb7e911
vkd3d-shader/hlsl: Add RasterizerState type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Nikolay Sivov
12947aa50d
vkd3d-shader/fx: Add support for writing DepthStencilState objects.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Francisco Casas
597e55691a
vkd3d-shader/hlsl: Only error out on bind_count register reservation overlaps for SM1.
...
While on SM1 a register reservation reserves the whole size in
registers of the variable's data type, overlapping conflicts are only
checked up to the bind_count (used size) for each variable.
2024-07-08 18:12:03 +02:00
Francisco Casas
2179c79c91
tests: Test register reservations on unused variables.
2024-07-08 18:12:03 +02:00
Nikolay Sivov
48ff7de8ef
vkd3d-shader/hlsl: Add support for ConstantBuffer<> type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-07-08 18:12:03 +02:00
Victor Chiletto
abbcf0461f
vkd3d-shader/hlsl: Reserve register slots for unused buffers.
2024-07-03 17:09:16 -03:00
Victor Chiletto
da36a447b8
vkd3d-shader/hlsl: Validate cbuffer register allocations.
2024-07-03 17:09:16 -03:00
Victor Chiletto
27414ef928
vkd3d-shader/hlsl: Do not immediately fail parsing for malformed 'b' register reservations.
...
This is a fxc quirk. In most cases, this throws an error, but for global
variables it's completely ignored.
2024-07-03 17:09:16 -03:00
Victor Chiletto
e13eb64d4c
vkd3d-shader/hlsl: Support expressions as register offsets.
2024-07-03 14:05:58 -03:00
Victor Chiletto
d11c777092
tests: Add more register reservations tests.
2024-07-03 14:05:58 -03:00
Yuxuan Shui
ccb6150aab
vkd3d-shader/hlsl: Implement storing to a swizzled matrix.
2024-06-20 12:39:46 +02:00
Elizabeth Figura
8d946f3c20
tests: Add another combined sampler test.
...
Shader provided by Francisco Casas.
2024-06-18 13:01:31 -05:00
Elizabeth Figura
669e85171e
tests: Run combined-samplers.shader_test on sm1 as well.
...
Now that we have if() this is easier.
2024-06-18 13:00:59 -05:00
Elizabeth Figura
d3ba810c98
tests: Stop probing all pixels when drawing a uniform colour.
...
This is simply unnecessary and wastes time.
As part of this, simply remove the "all" directive. Only for a couple of tests
is it even potentially interesting to validate all pixels (e.g.
nointerpolation.shader_test), and for those "all" is replaced with an explicit
(0, 0, 640, 480) rect.
In all other cases we just probe (0, 0).
2024-06-13 23:55:31 +02:00
Conor McCarthy
7534b88a15
tests/shader-runner: Set the correct flag and format for raw UAVs.
2024-06-11 15:55:48 +02:00
Nikolay Sivov
ba18035260
vkd3d-shader/d3dbc: Write load instruction for tex2Dbias().
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Nikolay Sivov
ccbe36fb8d
vkd3d-shader/hlsl: Implement tex2Dbias().
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56701
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-06-11 15:50:34 +02:00
Elizabeth Figura
33e5553158
vkd3d-shader/hlsl: Write SM5.1 binding reflection data.
2024-06-11 15:49:30 +02:00
Elizabeth Figura
4355e6ca69
vkd3d-shader/hlsl: Allocate register spaces for objects.
2024-06-11 15:49:30 +02:00
Conor McCarthy
9b070edf01
vkd3d-shader/spirv: Implement the QUAD_READ_LANE_AT instruction.
2024-06-11 15:48:21 +02:00
Conor McCarthy
c298493e4f
vkd3d-shader/spirv: Implement the QUAD_READ_ACROSS_* instructions.
2024-06-11 15:48:21 +02:00
Francisco Casas
ade3daa311
tests: Test matrix default value initializers.
2024-06-11 15:46:40 +02:00
Francisco Casas
099a64aeb2
vkd3d-shader/hlsl: Initialize default values with braceless initializers.
...
It is hard to initialize default values on add_assignment() and calling
add_assignment() for initializers is not really necessary: the only
thing we need from it the implicit cast.
2024-06-11 15:46:40 +02:00
Francisco Casas
e8dbc36bd2
vkd3d-shader/hlsl: Record default values for uniforms and constant buffers.
2024-06-11 15:46:40 +02:00
Nikolay Sivov
727aacca18
tests: Add a few tests for the NULL value.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:44 +02:00
Nikolay Sivov
163aaf9729
tests: Add some basic tests for ConstantBuffer type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:39 +02:00
Nikolay Sivov
ea177a7750
vkd3d-shader/hlsl: Handle "unsigned int" type.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2024-05-30 19:56:29 +02:00
Victor Chiletto
fa5708d3b5
vkd3d-shader/hlsl: Fix XOR assign operator lexing.
2024-05-22 22:15:20 +02:00
Victor Chiletto
d8d2414132
tests/hlsl: Add a test for the XOR assign operator.
2024-05-22 22:15:19 +02:00
Francisco Casas
061dc39036
vkd3d-shader/hlsl: Also lower matrix swizzles and index loads in const passes.
2024-05-15 21:17:51 +02:00
Francisco Casas
dff2f746bc
tests: Test complex array size expression.
2024-05-15 21:17:51 +02:00
Francisco Casas
58a6db5589
tests: Test default values for constant buffer variables.
2024-05-15 21:17:49 +02:00
Francisco Casas
499b44a193
tests: Test default values for uniform variables.
2024-05-15 21:17:47 +02:00
Conor McCarthy
9e57039fce
vkd3d-shader/dxil: Handle SV_ClipDistance and SV_CullDistance.
2024-05-14 20:44:22 +02:00
Conor McCarthy
01af0f94bb
tests/hlsl: Add a test for SV_ClipDistance.
2024-05-14 20:44:20 +02:00
Conor McCarthy
4f50af4c83
vkd3d-shader/dxil: Handle SV_Coverage out.
2024-05-14 20:44:18 +02:00
Conor McCarthy
e4724b4635
tests/hlsl: Add a test for SV_Coverage out.
2024-05-14 20:44:16 +02:00
Conor McCarthy
e1c774bfeb
vkd3d-shader/spirv: Implement the WAVE_READ_LANE_FIRST instruction.
2024-05-14 20:44:10 +02:00
Conor McCarthy
cb9b10bf4d
tests/hlsl: Clear the RTV before the WaveReadLaneFirst() test.
2024-05-14 20:44:08 +02:00
Conor McCarthy
936d8e4f61
vkd3d-shader/spirv: Implement the WAVE_READ_LANE_AT instruction.
2024-05-14 20:44:04 +02:00
Conor McCarthy
5790056c44
tests/hlsl: Add a test for WaveReadLaneAt() with a non-uniform index.
2024-05-14 20:44:00 +02:00