3915 Commits

Author SHA1 Message Date
Henri Verbeet
90d4529f27 Release 1.9. 2023-09-21 19:16:32 +02:00
Zebediah Figura
9417c7cfb7 vkd3d-shader/d3dbc: Translate sm1 fragment outputs to system values. 2023-09-21 19:16:31 +02:00
Zebediah Figura
1615e5a76b vkd3d-shader/dxbc: Map sm4 fragment outputs to system values based on their name. 2023-09-21 19:16:29 +02:00
Zebediah Figura
8c11270940 vkd3d-shader: Add definitions for more fragment output system values. 2023-09-21 19:16:29 +02:00
Zebediah Figura
fd120d8f2d vkd3d-shader: Rename vkd3d_shader_next_stage_info to vkd3d_shader_varying_map_info.
It was originally intended that this structure could hold other information
about the next stage which compilation might depend on. For example, compilation
to GLSL needs to know the type of the next shader in some circumstances.

That was never actualized, and since the API is fixed at this point for 1.9, it
makes the most sense to rename the structure to match its actual scope.

The documentation was written and arranged to imply that the structure would
hold other information about the next shader than the varying map; this is
changed accordingly as well.
2023-09-21 19:16:27 +02:00
Henri Verbeet
46c7f65be8 build: Add vkd3d_shader_utils.h to libvkd3d_la_SOURCES. 2023-09-19 21:30:43 +02:00
Henri Verbeet
054ae10693 vkd3d-shader: Slightly tweak the documentation for VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER. 2023-09-19 21:30:40 +02:00
Henri Verbeet
0f2dd5f9be vkd3d-shader: Add a \since 1.9 for VKD3D_SHADER_SV_TARGET. 2023-09-19 21:30:40 +02:00
Henri Verbeet
419c6364db tests: Add a small test for vkd3d_shader_build_varying_map().
There's probably room for improvement, but this at least verifies the
function can be called.
2023-09-19 21:30:37 +02:00
Henri Verbeet
74517de783 include: Add a corresponding function pointer type for vkd3d_shader_build_varying_map(). 2023-09-19 21:30:37 +02:00
Henri Verbeet
f796d8668e vkd3d-shader: Export vkd3d_shader_build_varying_map. 2023-09-19 21:30:35 +02:00
Martin Storsjö
e597b0d80f include: Add UUIDs for use with D3D12EnableExperimentalFeatures.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-18 21:04:59 +02:00
Martin Storsjö
b484a9e1f6 include: Add the ID3D12GraphicsCommandList{5,6,7} interfaces.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-18 21:04:59 +02:00
Martin Storsjö
5d13a90e37 include: Add DirectX 12 Agility SDK definitions.
This ports parts of commit 83625459c8227b0bd7b86c18946a35d3a806c80d
from wine.git into vkd3d.

Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-18 21:04:56 +02:00
Henri Verbeet
da89da2bf3 vkd3d-shader: Hide support for DXIL sources.
Unfortunately this is not sufficiently ready to release.
2023-09-18 21:04:19 +02:00
Giovanni Mascellani
b8f2c3e1f4 tests: Relax the precision of some tests so that they pass on MoltenVK. 2023-09-18 21:04:06 +02:00
Giovanni Mascellani
ee28861837 vkd3d-shader/hlsl: Document some possibly obscure HLSL opcodes. 2023-09-14 20:28:55 +02:00
Giovanni Mascellani
f251da574c vkd3d-shader/hlsl: Remove HLSL_OP3_LERP.
It is unused, and it's not clear whether it would be of any help to
have it.
2023-09-14 20:28:54 +02:00
Giovanni Mascellani
3113f167ba ci: Do not drop artifacts after 1 day.
There is no point in using such a short timeout. We trust the GitLab
instance to already have a sensible default.
2023-09-14 20:28:49 +02:00
Giovanni Mascellani
d72c91ef97 ci: Run the tests on macOS. 2023-09-14 20:28:47 +02:00
Nikolay Sivov
45541dd9b2 vkd3d-shader/asm: Tweak TEXCOORD declaration name.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-13 23:11:16 +02:00
Nikolay Sivov
ee6c66eb1b vkd3d-shader/d3dbc: Disallow 1D sampler types when writing sampler declaration.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-13 23:11:14 +02:00
Nikolay Sivov
177ea3bcbd vkd3d-shader/hlsl: Produce 2D resource declarations and loads for tex1D().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-13 23:11:11 +02:00
Giovanni Mascellani
61b403a032 tests: Compile HLSL shaders at runtime in test_unknown_dsv_format(). 2023-09-13 23:11:04 +02:00
Giovanni Mascellani
264ff9e2da tests: Compile HLSL shaders at runtime in test_unknown_rtv_format(). 2023-09-13 23:11:04 +02:00
Giovanni Mascellani
b1cae0dd1e tests: Compile HLSL shaders at runtime in test_multiple_render_targets(). 2023-09-13 23:11:04 +02:00
Giovanni Mascellani
f7354ff9e3 tests: Compile HLSL shaders at runtime in test_create_compute_pipeline_state(). 2023-09-13 23:11:04 +02:00
Martin Storsjö
06399d128a include: Add some misc D3D12 structs/enums/macros.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
b67279394b include: Add some D3D12 raytracing specific structs.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
55c6e17fca include: Add the D3D12_BARRIER_GROUP struct.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
f1c19e34d8 include: Add the ID3D12Tools interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
e9e9fdbd5e include: Add the ID3D12VirtualizationGuestDevice interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
602d2f90d7 include: Add the ID3D12Device10 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
891c6d2743 include: Add the ID3D12Device9 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
77819d8d04 include: Add the ID3D12ShaderCacheSession interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
275644d34a include: Add the ID3D12GraphicsCommandList4 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
f31efc1afc include: Add the ID3D12MetaCommand interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
fccf9f7ac5 include: Add the ID3D12Heap1 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
88b3776436 include: Add the ID3D12Resource{1,2} interfaces.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
cca052da29 include: Add the ID3D12Device8 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:58 +02:00
Martin Storsjö
dd93b31e48 include: Add the structs D3D12_FEATURE_DATA_D3D12_OPTIONS{6,7}.
D3D12MemAlloc.cpp uses these if ID3D12Device8 is available.

Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
442a8347bf include: Add the ID3D12Device7 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
a7bb5b6ba3 include: Add the ID3D12ProtectedResourceSession1 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
aad1c3e35c include: Add the ID3D12Device6 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
edaf7fbd88 include: Add the ID3D12DeviceRemovedExtendedData{,1,2} interfaces.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
4f4afab3d5 include: Add the ID3D12DeviceRemovedExtendedDataSettings{,1} interfaces.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
1302b897ed include: Add the ID3D12Device5 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
16daf0423d include: Add the ID3D12StateObjectProperties interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
8e3f863341 include: Add the ID3D12StateObject interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
02fc1ba9c3 include: Add the ID3D12LifetimeTracker interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
8076c9a591 include: Add the ID3D12SwapChainAssistant interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
06388a2c9b include: Add the ID3D12LifetimeOwner interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:54 +02:00
Martin Storsjö
b005390a36 include: Add the ID3D12Device4 interface.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:53 +02:00
Martin Storsjö
fffdb76b33 include: Add the ID3D12PipelineLibrary{,1} interfaces.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-13 23:10:53 +02:00
Zebediah Figura
e847df9528 tests: Check the result of vkCreateGraphicsPipelines(). 2023-09-13 23:10:46 +02:00
Francisco Casas
39563aa5b3 vkd3d-shader/hlsl: Lower matrix swizzles. 2023-09-13 23:10:38 +02:00
Francisco Casas
60a3279318 tests: Test matrix swizzles. 2023-09-13 23:10:37 +02:00
Nikolay Sivov
cab1f57e01 tests: Add a test for fmod() with vector arguments.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-07 19:15:26 +02:00
Nikolay Sivov
fc2aaee224 vkd3d-shader: Use ternary operator in fmod() implementation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-07 19:15:26 +02:00
Nikolay Sivov
1002a6b357 vkd3d-shader/tpf: Use 'movc' to implement ternary operator.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-07 19:15:25 +02:00
Martin Storsjö
2fb0c2d187 include: Fill in missing enum values in vkd3d_d3d12.idl.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:21 +02:00
Martin Storsjö
8e6b08d685 include: Add some more struct/enum definitions to vkd3d_d3d12.idl.
This is enough for compiling QtBase's Direct3D 12 backend,
if this is imported into mingw-w64.

Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:19 +02:00
Martin Storsjö
1b45052c92 include: Add missing miscellaneous D3D12 constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
61c402405a include: Add missing D3D12 vertex shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
44a669a644 include: Add missing D3D12 minimum resource limit constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
7efba29853 include: Add missing D3D12 raytracing constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
b32b060518 include: Add missing D3D12 pixel shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
ef8dd51c7a include: Add missing D3D12 input assembler constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
f8c848f563 include: Add missing D3D12 hull shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
1d74dc7903 include: Add missing D3D12 geometry shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
af4403147a include: Add missing D3D12 domain shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
cf61d217a9 include: Add missing D3D12 compute shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
71dd917091 include: Add missing D3D12 common shader constants.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:15 +02:00
Martin Storsjö
8febea5a9c include: Sort vkd3d_d3d12.idl constants alphabetically.
This makes it easier to consistently add more constants.

Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:13 +02:00
Martin Storsjö
dff79973e0 include: Fix the type of D3D12_VIEWPORT_BOUNDS_MIN.
As this is a negative constant, it shouldn't have an unsigned type.

Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-07 19:15:10 +02:00
Nikolay Sivov
c5d680d141 vkd3d-shader/hlsl: Add tex1D() function.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-09-07 19:15:06 +02:00
Giovanni Mascellani
f525e9e93a ci: Run the tests on a 32 bit Linux system. 2023-09-04 20:26:05 +02:00
Martin Storsjö
fdaacb158e include: Add the D3D_PRIMITIVE enum and the D3D12_PRIMITIVE typedef.
Signed-off-by: Martin Storsjö <martin@martin.st>
2023-09-04 20:25:47 +02:00
Conor McCarthy
3badab2086 vkd3d-shader: Handle size in bytes in spirv_compiler_emit_cbv_declaration().
The caller passes a byte size now.
2023-09-04 20:25:33 +02:00
Conor McCarthy
bad4c74002 vkd3d-shader: Match only UAV descriptors in vkd3d_shader_scan_add_uav_flag().
Fixes compilation failures in Cyberpunk 2077 due to missing UAV counter
flag.
2023-09-04 20:25:31 +02:00
Giovanni Mascellani
367cf10cdc ci: Briefly document the CI setup. 2023-08-31 22:07:21 +02:00
Giovanni Mascellani
229a34b93c ci: Execute the tests. 2023-08-31 22:07:21 +02:00
Giovanni Mascellani
52d52ad1b9 ci: Execute CI also an a runner with an AMD GPU.
In order for this to work it is expected that the Docker host exposes
the devices in /dev/dri to the guest system, and that the render nodes
have GID 800 (usually that would be the "render" group, but the GID
for that group is dynamically assigned, so we explicitly agree on a
fixed number).
2023-08-31 22:07:16 +02:00
Zebediah Figura
a597dc8755 vkd3d-shader/hlsl: Define lit() in HLSL. 2023-08-30 22:49:03 +02:00
Zebediah Figura
9ab77658f2 vkd3d-shader/hlsl: Define smoothstep() in HLSL. 2023-08-30 22:49:01 +02:00
Zebediah Figura
d396c4ce27 vkd3d-shader/hlsl: Store the internal name counter in struct hlsl_ctx.
This is minutely more efficient than using a global variable and atomic instructions.
2023-08-30 22:48:59 +02:00
Zebediah Figura
f22e52f358 vkd3d-shader/hlsl: Separate an add_user_call() helper. 2023-08-30 22:48:57 +02:00
Zebediah Figura
63e056512d vkd3d-shader/hlsl: Introduce an hlsl_sprintf_alloc() helper. 2023-08-30 22:48:55 +02:00
Conor McCarthy
d27b8eb2c0 vkd3d-shader/dxil: Implement DX instruction StoreOutput. 2023-08-30 22:48:52 +02:00
Conor McCarthy
bf49a1a95b vkd3d-shader/dxil: Declare shader outputs. 2023-08-30 22:48:50 +02:00
Conor McCarthy
e54f770669 vkd3d-shader/dxil: Implement the DXIL CALL instruction. 2023-08-30 22:48:48 +02:00
Conor McCarthy
720a087c28 vkd3d-shader/dxil: Replace the result type enum with a bool.
Changes to failure handling make the enum unnecessary.
2023-08-30 22:48:47 +02:00
Conor McCarthy
58d6e44501 vkd3d-shader/dxil: Validate the function block count. 2023-08-30 22:48:45 +02:00
Conor McCarthy
61a550017f vkd3d-shader/spirv: Handle signature element mask left shift in spirv_compiler_emit_output().
Element masks can have a left shift in DXIL, but these must start at
bit 0 in the register info. The SPIR-V declaration will either be a
builtin or have SpvDecorationComponent.
2023-08-30 22:48:43 +02:00
Conor McCarthy
ebc461f795 vkd3d-shader/spirv: Handle signature element mask left shift in calculate_clip_or_cull_distance_mask().
In DXIL these masks can have a left shift.
2023-08-30 22:48:41 +02:00
Giovanni Mascellani
4a3ad750e0 ci: Introduce a CI pipeline for GitLab. 2023-08-29 22:07:56 +02:00
Nikolay Sivov
c39c5b3907 vkd3d-shader/hlsl: Add texCUBE() function.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-29 22:07:56 +02:00
Nikolay Sivov
269747dbf3 tests: Enable compiler backwards compatibility mode only for shaders that require it.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-28 20:40:06 +02:00
Zebediah Figura
9624e2f904 vkd3d-shader/spirv: Declare SRVs and UAVs from the descriptor info. 2023-08-28 20:40:02 +02:00
Zebediah Figura
e8b3561252 vkd3d-shader/spirv: Declare constant buffers from the descriptor info. 2023-08-28 20:40:01 +02:00
Zebediah Figura
547768bcdd vkd3d-shader/spirv: Declare samplers from the descriptor info. 2023-08-28 20:39:59 +02:00
Zebediah Figura
a1e10e5c90 vkd3d-shader/spirv: Split spirv_compiler_has_combined_sampler() into two functions.
These functions do not really share any code in common.
2023-08-28 20:39:57 +02:00
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
30be83f911 tests: Add some 'inline' function modifier tests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-28 20:39:53 +02:00
Conor McCarthy
61841e9423 vkd3d-shader/tpf: Handle the swizzle type bitfield in dst param tokens. 2023-08-28 20:39:49 +02:00
Conor McCarthy
eddae47062 vkd3d-shader/tpf: Handle the dimension bitfield in dst param tokens.
A zero mask is still emitted for some scalar registers. This has no
effect on current tests, but keeping the correction is probably a good
idea.
2023-08-28 20:39:48 +02:00
Conor McCarthy
92021b7a3c vkd3d-shader/tpf: Use the default vec4 swizzle if a src param contains a mask. 2023-08-28 20:39:46 +02:00
Conor McCarthy
7e5d9e3b6f vkd3d-shader/tpf: Handle the dimension bitfield in src param tokens. 2023-08-28 20:39:45 +02:00
Conor McCarthy
5c706152fa vkd3d-shader/tpf: Validate the src register of case conditions.
Case values are constants in TPF.
2023-08-28 20:39:43 +02:00
Conor McCarthy
5c09752194 vkd3d: Do not flush descriptor heaps stored in the command list when the array size is exceeded.
An earlier patch introduced a bug which overflows the descriptor heap
array. The array should not be emptied here in case the list is
resubmitted, so just flush the new heap.
2023-08-24 21:44:03 +02:00
Evan Tang
f374934281 tests: Test CopyResource depth to color. 2023-08-24 21:43:59 +02:00
Francisco Casas
ed9e236b01 vkd3d-shader/tpf: Avoid reading constant value components beyond type's width (Valgrind).
We are passing map writemasks that may have more components than the
constant's data type, so a (j < width) check is added to avoid reading
components from the constant that are not intended to be used.

Remaining values in the register are initialized to zero.
2023-08-24 21:43:55 +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
9605993af3 tests: Add some tests for "if" statement attributes.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-24 21:43:49 +02:00
Zebediah Figura
926575a6f3 vkd3d-shader/hlsl: Force sm1 inputs to be 4-component only for vertex shaders.
Pixel shaders still have an appropriate writemask.
2023-08-24 21:43:44 +02:00
Giovanni Mascellani
39e62ed2be configure: Require widl >= 3.21.
Commit b7402ddbbecdfaa81daa657fbb5d37661f401434 from wine is required,
which was first released with 3.21, not 3.20.
2023-08-24 21:43:34 +02:00
Zebediah Figura
622311da8e vkd3d-shader: Add a flag marking raw buffers to struct vkd3d_shader_descriptor_info. 2023-08-23 22:45:04 +02:00
Zebediah Figura
c1ebba9515 vkd3d-shader: Add structure stride to struct vkd3d_shader_descriptor_info1. 2023-08-23 22:45:04 +02:00
Zebediah Figura
88f85ffb50 vkd3d-shader: Add constant buffer size to struct vkd3d_shader_descriptor_info1. 2023-08-23 22:45:04 +02:00
Zebediah Figura
8c465c81cf vkd3d-shader: Add sample count to struct vkd3d_shader_descriptor_info1. 2023-08-23 22:45:04 +02:00
Zebediah Figura
ccedb7f711 vkd3d-shader: Set descriptor flags in the caller to vkd3d_shader_scan_add_descriptor().
Return the vkd3d_shader_descriptor_info1 from that function.
2023-08-23 22:45:02 +02:00
Conor McCarthy
f3baf55d97 vkd3d: Implement ID3D12Device1 with stubs. 2023-08-23 22:44:58 +02:00
Giovanni Mascellani
8f8c89fb87 vkd3d: Update a warning so that it aligns with the check that triggers it. 2023-08-23 22:44:52 +02:00
Conor McCarthy
3ca2259807 vkd3d: Fix invalid atomic behaviour in the view cache linked list.
The list suffers from the ABA problem, where comparison with the head
succeeds but the head's `next` pointer has changed. Occurs in Cyberpunk
2077, on NVIDIA at least.
2023-08-23 22:44:45 +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
Nikolay Sivov
7fd10bb6bc tests: Add some tests for a 'const' modifier.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-15 21:51:50 +02:00
Zebediah Figura
240b9424fb vkd3d-shader/hlsl: Pass an hlsl_block pointer to append_output_copy(). 2023-08-15 21:51:47 +02:00
Zebediah Figura
a04e3a51dd vkd3d-shader/hlsl: Pass an hlsl_block pointer to prepend_input_copy(). 2023-08-15 21:51:39 +02:00
Zebediah Figura
7a4ac1afb1 vkd3d-shader/hlsl: Pass an hlsl_block pointer to prepend_uniform_copy(). 2023-08-15 21:51:37 +02:00
Francisco Casas
96f66aa4f8 vkd3d-shader/d3dbc: Use the bind count instead of the allocation size in d3dbc.c.
This should have no effect, since in SM1 the allocation size is the
same as the bind count because there are no texture registers.
It is just done for consistency.
2023-08-15 21:51:33 +02:00
Francisco Casas
d4a49d788a vkd3d-shader/hlsl: Simplify computation of allocation size. 2023-08-15 21:51:32 +02:00
Francisco Casas
37cfbe47d7 vkd3d-shader/hlsl: Sort synthetic separated samplers first for SM4. 2023-08-15 21:51:31 +02:00
Francisco Casas
81afe43569 vkd3d-shader/tpf: Put the actual bind count in the RDEF table. 2023-08-15 21:51:29 +02:00
Francisco Casas
7eba063136 vkd3d-shader/hlsl: Rename hlsl_reg.bind_count to hlsl_reg.allocation_size.
We have to distinguish between the "bind count" and the "allocation size"
of variables.

The "allocation size" affects the starting register id for the resource to
be allocated next, while the "bind count" is determined by the last field
actually used. The former may be larger than the latter.

What we are currently calling hlsl_reg.bind_count is actually the
"allocation size", so a rename is in order.

The real "bind count", which will be introduced in following patches,
is important because it is what should be shown in the RDEF table and
some resource allocation rules depend on it.

For instance, for this shader:

    texture2D texs[3];
    texture2D tex;

    float4 main() : sv_target
    {
        return texs[0].Load(int3(0, 0, 0)) + tex.Load(int3(0, 0, 0));
    }

the variable "texs" has a "bind count" of 1, but an "allocation size" of
3:

    // Resource Bindings:
    //
    // Name                                 Type  Format         Dim      HLSL Bind  Count
    // ------------------------------ ---------- ------- ----------- -------------- ------
    // texs                              texture  float4          2d             t0      1
    // tex                               texture  float4          2d             t3      1
2023-08-15 21:51:27 +02:00
Francisco Casas
948c4145f5 tests: Test texture allocation ordering in complex scenarios. 2023-08-15 21:51:26 +02:00
Nikolay Sivov
98f63c46f8 vkd3d-shader/hlsl: Use type width in fold_rcp().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:21 +02:00
Nikolay Sivov
932c5e36dc vkd3d-shader/hlsl: Add constant folding for 'log2'.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:20 +02:00
Nikolay Sivov
58bc61e48d vkd3d-shader/hlsl: Add constant folding for 'sqrt'.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:18 +02:00
Nikolay Sivov
7e99188dc7 vkd3d-shader: Add constant folding for 'dp2add' operation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:15 +02:00
Nikolay Sivov
25ff56769b vkd3d-shader: Add constant folding for the 'dot' operation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-08-14 18:38:15 +02:00
Zebediah Figura
983d01df8c vkd3d-shader: Get rid of the uav_ranges array.
This is now redundant; the register ID is encoded into the scan descriptors.
2023-08-14 18:38:11 +02:00
Zebediah Figura
7d02922541 vkd3d-shader: Add register ID to struct vkd3d_shader_descriptor_info1. 2023-08-14 18:38:11 +02:00
Zebediah Figura
4e9798f6f7 vkd3d-shader: Introduce struct vkd3d_shader_scan_descriptor_info1. 2023-08-14 18:38:11 +02:00
Zebediah Figura
fd4a820c4b vkd3d-shader: Centralize cleanup on error in scan_with_parser(). 2023-08-14 18:38:11 +02:00
Zebediah Figura
9c5cb2de18 vkd3d-shader: Factor more code into vkd3d_shader_scan_get_uav_descriptor_info(). 2023-08-14 18:38:11 +02:00
Francisco Casas
8484bd59a6 vkd3d-shader/tpf: Separate dst register write function. 2023-08-14 18:38:08 +02:00
Francisco Casas
d1c45fe2f0 vkd3d-shader/tpf: Separate src register write function. 2023-08-14 18:38:07 +02:00
Francisco Casas
2258e9d0f3 vkd3d-shader/tpf: Make register_type_table an array of structs with lookup tables. 2023-08-14 18:38:06 +02:00
Francisco Casas
c77e5f1c1f vkd3d-shader/tpf: Introduce struct tpf_writer to group sm4 write arguments.
We will add register information lookup tables on this struct later.
They will be used by sm4_encode_register(), and thus, they will be
required by write_sm4_instruction().
2023-08-14 18:38:05 +02:00
Francisco Casas
a584499c8a vkd3d-shader/tpf: Use struct vkd3d_shader_register_index in sm4_register.idx[]. 2023-08-14 18:38:04 +02:00
Francisco Casas
fc589add49 vkd3d-shader/tpf: Allow passing NULL register type on hlsl_sm4_register_from_semantic(). 2023-08-14 18:38:03 +02:00
Francisco Casas
8a6a620ee2 vkd3d-shader/tpf: Use enum vkd3d_shader_register_type in sm4_register.type. 2023-08-14 18:38:01 +02:00
Henri Verbeet
5d75731d97 vkd3d-dxbc: Implement listing section data. 2023-08-08 21:15:28 +09:00
Henri Verbeet
fbb5e59a03 vkd3d-dxbc: Implement listing DXBC contents. 2023-08-08 21:15:28 +09:00
Henri Verbeet
6bfb94c440 vkd3d-dxbc: Introduce a program to inspect and modify DXBC blobs. 2023-08-08 21:15:28 +09:00
Zebediah Figura
cf6bc95a3d vkd3d-shader/hlsl: Use hlsl_block_add_instr() in clone_block(). 2023-08-08 21:15:16 +09:00
Zebediah Figura
4ae00cea43 vkd3d-shader/hlsl: Clean up the static_initializers block when the context is destroyed (Valgrind).
This is currently leaked if we fail parsing before reaching codegen.
2023-08-08 21:15:13 +09:00
Zebediah Figura
b22e2113a6 vkd3d-shader/hlsl: Pass a hlsl_block pointer to dump_instr_list(). 2023-08-08 21:15:10 +09: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
Zebediah Figura
f649db23a5 vkd3d-shader: Introduce a function to build a varying map between sm1 stages. 2023-08-03 21:20:44 +09:00
Zebediah Figura
d932fba7c3 vkd3d-shader/spirv: Make output varyings not consumed by the next stage private variables. 2023-08-03 21:20:42 +09:00
Zebediah Figura
11475ef62a vkd3d-shader: Implement remapping shader output registers to match the next shader's semantics. 2023-08-03 21:20:42 +09:00
Zebediah Figura
cb96482500 vkd3d-shader: Add a separate field for the target location of a signature element.
We want to be able to remap input signatures based on the signature index, but
signature normalization both reorders the signature, and requires the old
register index, so add a new field for this.
2023-08-03 21:20:39 +09:00
Zebediah Figura
bad72d1874 vkd3d-shader/d3dbc: Make sure all inter-stage varyings have a unique register index.
spirv will need this.
2023-08-03 21:20:22 +09:00
Zebediah Figura
b4bb3931c5 vkd3d-shader/preproc: Append spaces between tokens in macro invocations. 2023-08-02 20:19:21 +09:00
Zebediah Figura
250a24bd3f vkd3d-shader/preproc: Strip whitespace when stringifying. 2023-08-02 20:19:20 +09:00
Zebediah Figura
6fc3ae2b5c vkd3d-shader/preproc: Stringify text immediately in macro invocations. 2023-08-02 20:19:19 +09:00
Zebediah Figura
cbb1d84069 vkd3d-shader/preproc: Separate a preproc_stringify() helper. 2023-08-02 20:19:18 +09:00
Zebediah Figura
3a235b57f6 vkd3d-shader/preproc: Expand macro arguments in macro invocations.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55361
2023-08-02 20:19:17 +09:00
Zebediah Figura
9b98489155 vkd3d-shader/preproc: Parse hash marks as two separate tokens when not in stringification contexts. 2023-08-02 20:19:15 +09:00
Zebediah Figura
9a80ff28e4 vkd3d-shader/tpf: Check buffer->status in add_section(). 2023-08-02 20:19:00 +09:00
Zebediah Figura
71afb78126 vkd3d-shader/d3dbc: Return ctx->result from hlsl_sm1_write(). 2023-08-02 20:18:59 +09:00
Zebediah Figura
6e370777b4 vkd3d-shader/d3dbc: Free vkd3d_bytecode_buffer data on failure. 2023-08-02 20:18:58 +09:00
Zebediah Figura
1bd873fb2b vkd3d-shader/d3dbc: Skip generic sampler declarations.
Instead of asserting.
2023-08-02 20:18:56 +09:00
Conor McCarthy
c2e09e4c4f vkd3d: Implement ID3D12Fence1. 2023-08-02 20:18:37 +09:00
Conor McCarthy
0d1bc77b2a vkd3d: Implement ID3D12GraphicsCommandList3 with a stub. 2023-07-31 21:08:02 +09:00
Conor McCarthy
4433dacb4f vkd3d: Implement ID3D12Device::GetResourceTiling() for textures. 2023-07-31 21:07:58 +09:00
Conor McCarthy
71a9feac8e vkd3d: Implement ID3D12Device::GetResourceTiling() for buffers. 2023-07-31 21:07:57 +09:00
Conor McCarthy
1e178efa01 tests/d3d12: Add tests for GetResourceTiling().
Based on vkd3d-proton patches by Philip Rebohle and
Hans-Kristian Arntzen.
2023-07-31 21:07:56 +09:00
Nikolay Sivov
bfdd5c142d vkd3d-shader/tpf: Add support for writing 'resinfo' instruction.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-31 21:07:50 +09:00
Nikolay Sivov
78719dc814 vkd3d-shader/tpf: Add support for writing 'sampleinfo' instruction.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-31 21:07:49 +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
Nikolay Sivov
18731d71a6 tests: Add some tests for GetDimensions().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-31 21:07:46 +09:00
Conor McCarthy
3d49b59a68 vkd3d: Handle the case where a descriptor is null and is concurrently written non-null.
If view is null and the comparison (view == src->s.u.object) is false,
vkd3d_view_decref will be called on null.
2023-07-27 17:17:55 +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
80b9f52010 vkd3d-shader/hlsl: Use a hlsl_block to build replacement instructions in lower_discard_neg(). 2023-07-24 22:41:14 +02:00
Zebediah Figura
3a07df8476 vkd3d-shader/hlsl: Use a hlsl_block to build replacement instructions in lower_float_modulus(). 2023-07-24 22:41:13 +02:00
Zebediah Figura
0dee96ead6 vkd3d-shader/hlsl: Use a hlsl_block to build replacement instructions in lower_int_modulus(). 2023-07-24 22:41:12 +02:00
Nikolay Sivov
e71b2c0911 vkd3d-compiler: Add CLI option to specify default matrix packing order.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-24 22:41:10 +02:00
Nikolay Sivov
0b77b5f99e tests: Add some tests for matrix packing compiler options.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-24 22:41:10 +02:00
Nikolay Sivov
01faf6ad9e tests: Add test file syntax to specify compiler options.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-24 22:41:09 +02:00
Nikolay Sivov
bd3d4a6c06 vkd3d-shader: Add compiler option to specify matrix majority.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-24 22:41:09 +02:00
Conor McCarthy
acc68aef94 vkd3d: Add a pending execution count to struct d3d12_command_signature.
Buffering of command list commands will depend upon command signatures
persisting until the buffer is flushed.
2023-07-24 22:41:07 +02:00
Conor McCarthy
31ff1fa9b6 tests: Test releasing the command signature immediately after use.
D3D12 docs are silent on a required lifetime and immediate release
works in Windows.
2023-07-24 22:40:54 +02:00
Conor McCarthy
95bad60281 vkd3d: Store the command buffer in the allocator upon creation.
For correct function it cannot be freed until the command allocator
is reset, and d3d12_command_allocator_free_command_buffer() normally
does not free it.
2023-07-24 22:40:53 +02:00
Conor McCarthy
9187a41733 vkd3d: Move descriptor heap tracking to d3d12_command_list_set_descriptor_table().
This is the simplest way to gather this information when command lists
are executed later.
2023-07-24 22:40:52 +02:00
Conor McCarthy
42d46d2513 vkd3d: Do not create Vulkan descriptor sets for non-shader-visible heaps. 2023-07-20 22:33:17 +02:00
Conor McCarthy
9014183100 vkd3d: Return a null handle from GetGPUDescriptorHandleForHeapStart() for non-shader-visible heaps. 2023-07-20 22:33:17 +02:00
Conor McCarthy
981034e6e4 tests: Test GetGPUDescriptorHandleForHeapStart() on a non-shader-visible heap. 2023-07-20 22:33:07 +02:00
Conor McCarthy
0a98d09145 vkd3d: Enable Vulkan-backed heaps for each heap instead of per device.
Provides a simple way to disable Vulkan writes for non-shader-visible
heaps. Also there is a chance of avoiding access to the d3d12_device
object which helps memory cache performance.
2023-07-20 22:33:05 +02:00
Zebediah Figura
d52eb8595f vkd3d-shader/hlsl: Use a hlsl_block to build replacement instructions in lower_int_division(). 2023-07-20 22:33:01 +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
Conor McCarthy
c0a2bb1095 vkd3d-shader/dxil: Emit undefined constants. 2023-07-20 22:32:53 +02:00
Conor McCarthy
402c93fa68 vkd3d-shader/spirv: Introduce an undefined register type. 2023-07-20 22:32:52 +02:00
Conor McCarthy
3e553aaaa7 vkd3d-shader/dxil: Emit the shader instructions.
Sufficient for compiling a no-op pixel shader.
2023-07-20 22:32:51 +02:00
Conor McCarthy
f26d47585f vkd3d-shader/spirv: Do not normalise Shader Model 6 shaders. 2023-07-20 22:32:50 +02:00
Conor McCarthy
8fe6d2eeac vkd3d-shader/dxil: Return an error from sm6_parser_globals_init() on invalid operand count. 2023-07-20 22:32:48 +02:00
Zebediah Figura
e0e261eac3 vkd3d-shader/spirv: Emit variables for flat constant buffers. 2023-07-17 22:56:47 +02:00
Zebediah Figura
25cf6a720b vkd3d-shader/ir: Normalise sm1-style constants. 2023-07-17 22:56:45 +02:00
Zebediah Figura
e9fb067d4c vkd3d-shader/ir: Move normalization code from spirv.c to ir.c.
It is not spirv-specific and will (presumably) be used for GLSL as well.
2023-07-17 22:56:43 +02:00
Zebediah Figura
d077562f79 vkd3d-shader/d3dbc: Scan descriptors for constant register sets. 2023-07-17 22:56:39 +02:00
Zebediah Figura
55c5129ad9 include: Define an API for d3dbc constants. 2023-07-17 22:56:39 +02:00
Nikolay Sivov
a18ace731d tests: Add a test for side effects of ternary operator.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-17 22:56:32 +02:00
Zebediah Figura
44bf5556ae vkd3d-shader/hlsl: Free the constant defs array in hlsl_ctx_cleanup().
Spotted by Francisco Casas.
2023-07-17 22:56:19 +02:00
Nikolay Sivov
63631a8fd4 vkd3d-shader/tpf: Support some of the UAV types when writing RDEF records.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-07-17 22:56:05 +02:00
Francisco Casas
3bafd036bb vkd3d-shader/hlsl: Don't allocate all texture registers for synthetic separated samplers. 2023-07-17 22:55:53 +02:00
Zebediah Figura
a55973d695 vkd3d-shader/hlsl: Lower combined samplers to separate sampler and texture objects for SM4.
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
2023-07-17 22:55:51 +02:00
Francisco Casas
15ea5ff9db vkd3d-shader/hlsl: Separate tracking of sampler_dim and usage for object components. 2023-07-17 22:55:48 +02:00
Francisco Casas
c4f074d25d vkd3d-shader/hlsl: Introduce hlsl_new_synthetic_var_named(). 2023-07-17 22:55:46 +02:00
Francisco Casas
866c5d9531 vkd3d-shader/hlsl: Check is_uniform instead of HLSL_STORAGE_UNIFORM when validating object refs.
We are using the hlsl_ir_var.is_uniform flag to indicate when an object
is a uniform copy created from a variable with the HLSL_STORAGE_UNIFORM
modifier.

We should be checking for this instead of the HLSL_STORAGE_UNIFORM flag
which is also set to 1 for the original variables, and there should be
no reason to use this flag instead of "is_uniform" after the uniform
copies and combined/separated samplers are created.
2023-07-17 22:55:43 +02:00
Francisco Casas
b8a85c6ad5 tests: Add lowering combined samplers tests. 2023-07-17 22:55:43 +02:00
Francisco Casas
ab37b27a7d tests: Pass D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY when compiling with the shader-runner. 2023-07-17 22:55:43 +02:00
Francisco Casas
c58d666d1b vkd3d-shader/hlsl: Handle resource components individually for SM 5.0. 2023-07-17 22:55:40 +02:00
Francisco Casas
8f8c7a02ee vkd3d-shader/tpf: Introduce struct extern_resource.
This struct is required for handling both whole-variable resources for
SM < 5 and single-component resources for SM 5 in the same way, when
writting the RDEF block and resource declarations within the shader.
2023-07-17 22:55:39 +02:00
Francisco Casas
ae6bc398d6 vkd3d-shader/hlsl: Allow derefs to provide the data_type.
After lowering the derefs path to a single offset node, there was no way
of knowing the type of the referenced part of the variable. This little
modification allows to avoid having to pass the data type everywhere and
it is required for supporting instructions that reference objects
components within struct types.

Since deref->data_type allows us to retrieve the type of the deref,
deref->offset_regset is no longer necessary.
2023-07-17 22:55:36 +02:00
Zebediah Figura
d4b5e79c8b vkd3d-shader/hlsl: Skip unallocated variables when looking for reservation conflicts. 2023-07-13 23:00:03 +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
Conor McCarthy
1ec112e3d7 vkd3d-shader/dxil: Read function bodies. 2023-07-11 22:43:58 +02:00
Conor McCarthy
5d33fb4633 vkd3d-shader/dxil: Read numeric constants. 2023-07-11 22:43:57 +02:00
Conor McCarthy
c96143abdc vkd3d-shader/dxil: Read global function declarations. 2023-07-11 22:43:55 +02:00
Conor McCarthy
22157c3da3 vkd3d-shader/dxil: Validate the module format version. 2023-07-11 22:43:53 +02:00
Conor McCarthy
eca4b62c7e vkd3d-shader/dxil: Read the value symbol table. 2023-07-11 22:43:49 +02:00
Conor McCarthy
571d807dd8 vkd3d-shader/dxil: Read the type table. 2023-07-11 22:43:48 +02:00
Conor McCarthy
41a5d37935 vkd3d-shader/dxil: Use size_t where applicable. 2023-07-11 22:43:46 +02:00
Andrey Gusev
d4d960cb8b vkd3d-shader/spirv: Add support for VKD3DSIM_LINEAR_NOPERSPECTIVE_SAMPLE interpolation qualifier.
Used by F1 2018.
2023-07-10 23:17:59 +02:00
Giovanni Mascellani
2a3413e0f0 demos: Use a fence to synchronize D3D12 and Vulkan work. 2023-07-06 20:09:53 +02:00
Giovanni Mascellani
b2a1f6b5e4 include: Document vkd3d_acquire_vk_queue() and vkd3d_release_vk_queue(). 2023-07-06 20:09:53 +02:00
Evan Tang
574239e3e3 vkd3d: Make CopyResource use a temp buffer for depth <-> color copies.
depth <-> color copies aren't allowed in Vulkan
2023-07-06 20:09:50 +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
Zebediah Figura
53e9ad3e4c vkd3d-shader/hlsl: Do not emit DEF instructions for uniform constants. 2023-07-04 22:40:20 +02:00
Zebediah Figura
e5afbda34a vkd3d-shader/hlsl: Simplify allocate_const_registers_recurse() to stop accounting for constants larger than a vector.
That cannot happen with the current code.
2023-07-04 22:40:16 +02:00
Zebediah Figura
8a2b357855 vkd3d-shader/hlsl: Allocate anonymous constants after uniforms. 2023-07-04 22:40:13 +02:00
Zebediah Figura
717cd3f5bb vkd3d-shader/hlsl: Consistently use the destination width in constant folding instructions (Valgrind). 2023-07-04 22:40:06 +02:00
Zebediah Figura
e390bc35e2 vkd3d-shader/d3dbc: Set the source count for DEF instructions to 1 (Valgrind).
We emit one source with multiple components.
2023-07-04 22:40:04 +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
Zebediah Figura
73d422a0e0 vkd3d-shader/d3dbc: Scan for the maximum temporary register index. 2023-07-04 22:39:48 +02:00
Zebediah Figura
e489098878 vkd3d-shader: Record a global temporary count per sm4 shader.
Store it in the shader_desc, and declare temps from that when compiling SPIR-V,
instead of parsing dcl_instructions.

As part of this change, we declare a single, global temps array (with Private
scope instead of Function) which is as large as the maximum of all dcl_temps
instructions. It is not clear to me whether this will improve, hurt, or have no
significant effect on the lower-level compiler. An alternative is to still
redeclare a new temps array every time (although still with a smaller size).
2023-07-04 22:39:45 +02:00
Zebediah Figura
dfb2a316e6 vkd3d-shader/dxbc: Remove redundant zero-initialization of the vkd3d_shader_desc structure. 2023-07-04 22:39:43 +02:00
Nikolay Sivov
300f3462a4 vkd3d-shader/hlsl: Add constant folding for 'rcp'. 2023-07-04 22:39:36 +02:00
Giovanni Mascellani
68764b74a1 vkd3d: Release op data when destroying the queue. 2023-07-04 22:39:31 +02:00
Giovanni Mascellani
dcac2646e4 vkd3d: Always emit an error when failing to reserve for the op array. 2023-07-04 22:39:31 +02:00
Giovanni Mascellani
52d5cb749f vkd3d: Release the op mutex on allocation failure. 2023-07-04 22:39:31 +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
396edae281 tests: Test multiple variable initializers. 2023-07-04 22:39:18 +02:00
Francisco Casas
d8e6a1066d tests: Test semantics in uniform variables. 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
Francisco Casas
dc84afe73a tests: Quantize regular and coarse derivate test results.
Co-authored-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2023-07-04 22:39:07 +02:00
Francisco Casas
f0584cad62 tests: Make ddx() and ddy() test behave correctly for shader models < 4. 2023-07-04 22:39:07 +02:00
Francisco Casas
62e9b86697 tests: Test coarse and fine derivates.
Co-authored-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2023-07-04 22:39:04 +02:00
Alistair Leslie-Hughes
d5a0b3afc4 include: Avoid including unnecessary Windows headers.
We only require a few types and declarations.
2023-06-28 21:41:14 +02:00
Conor McCarthy
08cece3a92 vkd3d: Print the thread id in trace messages. 2023-06-28 21:40:40 +02:00
Conor McCarthy
de25e88901 vkd3d-shader/dxil: Read and validate global abbreviated operands. 2023-06-28 21:40:37 +02:00
Conor McCarthy
e9a8bfb2c4 vkd3d-shader/dxil: Read and validate local abbreviated operands. 2023-06-28 21:40:36 +02:00
Conor McCarthy
8c7704bb78 vkd3d-compiler: Introduce a dxbc-dxil source type. 2023-06-28 21:40:36 +02:00
Conor McCarthy
d3e6a3a78f include: Introduce a function to detect the DXBC source type. 2023-06-28 21:40:36 +02:00
Conor McCarthy
6775f7ba66 vkd3d-shader/dxil: Read and validate DXIL bitcode unabbreviated blocks. 2023-06-28 21:40:34 +02:00
Zebediah Figura
0d2f2e1860 tests: Move HLSL tests to a subdirectory. 2023-06-28 21:40:32 +02:00
Nikolay Sivov
69f32796b0 vkd3d-shader: Unify static string arrays initialization pattern. 2023-06-28 21:40:21 +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
3aee386e2f tests: Add another test for register reservation. 2023-06-27 22:34:42 +02:00
Zebediah Figura
69ecfdfb0b tests: Use compare_uint() in compare_float().
Comparing the result of abs() is broken in the case that x - y == INT_MIN.
2023-06-27 22:34:37 +02:00
Giovanni Mascellani
bdfec4886d vkd3d-shader/hlsl: Fold logical expressions. 2023-06-27 22:34:33 +02:00
Giovanni Mascellani
5a05fabe62 vkd3d-shader/hlsl: Fold floating point minimum expressions. 2023-06-27 22:34:30 +02:00
Giovanni Mascellani
2a2943c2cf vkd3d-shader/hlsl: Fold floating point maximum expressions. 2023-06-27 22:34:29 +02:00
Giovanni Mascellani
358d656262 vkd3d-shader/hlsl: Fold greater-than-or-equal comparisons. 2023-06-27 22:34:28 +02:00
Giovanni Mascellani
bf452b5907 vkd3d-shader/hlsl: Fold less-than comparisons. 2023-06-27 22:34:27 +02:00
Giovanni Mascellani
488af14144 vkd3d-shader/hlsl: Fold equality comparisons. 2023-06-27 22:34:25 +02:00
Giovanni Mascellani
6c9f6d0fcf vkd3d-shader/hlsl: Sort constant folding helpers alphabetically. 2023-06-27 22:34:24 +02:00
Nikolay Sivov
4ed60cda13 vkd3d-shader: Remove extra newlines from compiler messages. 2023-06-27 22:34:19 +02:00
Conor McCarthy
c4a8e06abf configure: Pass the correct number of parameters for the __atomic_exchange_n() check. 2023-06-27 22:34:10 +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
Conor McCarthy
3aa83e877d vkd3d: Append CopyTileMappings() commands to the command queue op array. 2023-06-27 22:33:58 +02:00
Conor McCarthy
3935e8647f vkd3d: Append UpdateTileMappings() commands to the command queue op array. 2023-06-27 22:33:58 +02:00
Conor McCarthy
e98e6c9b53 vkd3d: Add missing const attributes to ID3D12CommandQueue::UpdateTileMappings() parameters. 2023-06-27 22:33:58 +02:00
Conor McCarthy
5ccadd07f1 vkd3d: Validate plane count for tiled textures. 2023-06-27 22:33:58 +02:00
Conor McCarthy
0b67481496 vkd3d: Validate tiled resources tier for 3D textures. 2023-06-27 22:33:58 +02:00
Conor McCarthy
1a0d85b8d6 vkd3d: Validate tiled resources support during reserved resource creation.
Check directly for Vulkan support because the D3D12 tiled resources
tier may in future be modified by a config option.
2023-06-27 22:33:57 +02:00
Conor McCarthy
e93f2e7746 vkd3d: Always pass null heap properties to vkd3d_create_image() for sparse images. 2023-06-27 22:33:57 +02:00
Conor McCarthy
9532ac5f84 vkd3d: Check sparse image format is supported.
Based on code by Jan Sikorski.
2023-06-27 22:33:55 +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
6ef0213135 tests: Add some tests for clip().
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
Zebediah Figura
7e1fcdca89 vkd3d-shader: Synthesize signatures for d3dbc shaders. 2023-06-27 22:33:41 +02:00
Zebediah Figura
20190a1388 vkd3d-shader: Introduce an API to retrieve all signatures from DXBC shaders. 2023-06-27 22:33:41 +02:00
Zebediah Figura
7b9eb8d189 vkd3d-shader: Introduce documented semantics for the target type and other data passed to vkd3d_shader_scan().
Passing VKD3D_SHADER_TARGET_NONE was actually already allowed.
2023-06-27 22:33:39 +02:00
Stefan Dösinger
5e88ab22aa vkd3d-shader/hlsl: Make sure variants is initialized in declare_predefined_types().
MSVC is too stupid to see it is unused when n_variants=0.
2023-06-27 22:33:31 +02:00
Henri Verbeet
771e442af1 Release 1.8. 2023-06-22 22:00:20 +02:00
Henri Verbeet
e17ee34b92 build: List tests/object-parameters.shader_test before tests/object-references.shader_test. 2023-06-22 22:00:20 +02:00
Nikolay Sivov
c8ffe8e1a8 vkd3d-shader/hlsl: Don't report a register type mismatch for unused reserved variables. 2023-06-22 22:00:19 +02:00
Zebediah Figura
d6ac823dd6 vkd3d-shader/hlsl: Don't set "allocated" for unused reserved variables. 2023-06-22 22:00:17 +02:00
Zebediah Figura
1c1f1094a5 vkd3d-shader/hlsl: Handle reserved vars specially in get_allocated_object(). 2023-06-22 22:00:16 +02:00
Nikolay Sivov
883ab880e3 tests: Add more tests for unused registers with a reservation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-06-22 22:00:16 +02:00
Francisco Casas
c1ca0dafe8 vkd3d-shader/d3dbc: Avoid hlsl_type_get_regset() in d3dbc.c.
In SM1 we can expect all variables to always belong to a single regset.
structs in particular, should always be allocated to HLSL_REGSET_NUM,
since they are only allowed if all their components are numeric.

We are not covering the structs case because of the use of
hlsl_type_get_regset(), which is currently not defined for structs.

So the current shader

    struct
    {
        float4 a;
        float4 b;
    } apple;

    float4 main() : sv_target
    {
        return apple.a + apple.b;
    }

fails with

    vkd3d/libs/vkd3d-shader/hlsl.c:224: Aborting, reached unreachable code.

The solution is to iterate over all regsets to find the one where the
variable is allocated (if any), and ignore all others.
2023-06-22 22:00:14 +02:00
Conor McCarthy
bce2a898b3 vkd3d-shader/spirv: Take ownership of the shader signatures in spirv_compiler_create().
Fixes leakage of the replacement elements in shader_signature_merge().
2023-06-19 22:44:07 +02:00
Zebediah Figura
df0a031ad8 vkd3d-shader/spirv: Retrieve input sysvals from the signature for geometry shaders as well.
This only affects clip and cull distances. The HLSL compiler emits these using
dcl_input, but the previous shader (vertex or TES) will write them as a SPIRV
builtin, and hence we want to read this as a SPIRV builtin as well.

This fixes validation errors in Wine's test_clip_distance().
2023-06-12 22:50:19 +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
38c89442ac tests: Add a test for array size expressions using static constants. 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
Francisco Casas
5dee6561c2 vkd3d-shader/hlsl: Fold redundant casts again after lower narrowing casts.
lower_narrowing_casts() currently creates a new cast calling
hlsl_new_cast(). This cast may be redundant, but it is not folded, which
is making SM1 emit an unnecessary fixme in some shaders:

    Aborting due to not yet implemented feature: SM1 "cast" expression.

Other passes that call hlsl_new_cast() are lower_int_division() and
lower_int_modulus(), so the new fold_redundant_casts() pass is called
after these as well.
2023-06-08 23:21:40 +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
Zebediah Figura
79f443d131 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_bit_or(). 2023-06-08 18:50:32 +02:00
Zebediah Figura
1049f489bb vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_bit_and(). 2023-06-08 18:50:31 +02:00
Zebediah Figura
a7a09ac5ef vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_bit_xor(). 2023-06-08 18:50:30 +02:00
Zebediah Figura
974528cbe3 vkd3d-shader/hlsl: Only read used coordinates in encode_texel_offset_as_aoffimmi().
The V and W offsets may be uninitialized, which may spuriously trigger "out of range" errors.
2023-06-08 18:50:28 +02:00
Zebediah Figura
7b476573ff vkd3d-shader/hlsl: Use the writemask to map the coords swizzle for load instructions.
Instead of modifying the swizzle after calling sm4_src_from_node().

This fixes the case where sm4_src_from_node() returns an immediate constant.

Fixes: a471c5567a
2023-06-08 18:50:26 +02:00
Francisco Casas
ebf7573571 vkd3d-shader/hlsl: Support non-constant vector indexing.
Non-constant vector indexing is not solved with relative addressing
in the register indexes because this indexation cannot be at the level
of register-components.

Mathematical operations must be used instead.
2023-06-07 20:48:59 +02:00
Francisco Casas
6cfa8cf859 vkd3d-shader/hlsl: Lower dot for non-float types. 2023-06-07 20:48:58 +02:00
Francisco Casas
441902bb85 vkd3d-shader/hlsl: Introduce transform_derefs(). 2023-06-07 20:48:57 +02:00
Francisco Casas
f24598c9a0 tests: Test indexing temps. 2023-06-07 20:48:57 +02:00
Francisco Casas
8d7cc8c84e tests: Test non-constant vector indexing. 2023-06-07 20:48:55 +02:00
Nikolay Sivov
82ddc6b417 vkd3d-shader/hlsl: Fix sampler type used for samplerCUBE. 2023-06-05 22:27:36 +02:00
Nikolay Sivov
ccad49d486 vkd3d-shader/d3d-asm: Fix 3D sampler declaration instruction name. 2023-06-05 22:27:33 +02:00
Giovanni Mascellani
7c360330d7 vkd3d-shader/tpf: Do not emit HLSL_IR_CONSTANT instructions.
Since constants are now inlined.
2023-05-29 20:21:29 +02:00
Giovanni Mascellani
a471c5567a vkd3d-shader/tpf: Emit constant values inline. 2023-05-29 20:21:27 +02:00
Giovanni Mascellani
a7de09d418 vkd3d-shader/tpf: Move sm4_src_from_constant_value() above.
So that it can be used by sm4_src_from_node() in later commits.
2023-05-29 20:21:25 +02:00
Giovanni Mascellani
4ecd3af2af vkd3d-shader/tpf: Use a semicolon to separate statements. 2023-05-29 20:21:23 +02:00
Nikolay Sivov
a2e85a8a76 vkd3d-shader/hlsl: Parse SampleCmpLevelZero() method. 2023-05-29 20:21:17 +02:00
Nikolay Sivov
c33219c97b vkd3d-shader/tpf: Write out comparison mode sampler declarations and corresponding sampling instruction. 2023-05-29 20:21:16 +02:00
Nikolay Sivov
2fd3550ba6 vkd3d-shader/hlsl: Parse SampleCmp() method. 2023-05-29 20:21:14 +02:00
Nikolay Sivov
7c94705c54 vkd3d-shader/hlsl: Parse SamplerComparisonState objects. 2023-05-29 20:21:11 +02:00
Nikolay Sivov
efe107d231 vkd3d-shader/hlsl: Use a function table for object methods handlers. 2023-05-29 20:21:10 +02:00
Nikolay Sivov
87cd3f872b vkd3d-shader/hlsl: Move object type checks to methods handlers. 2023-05-29 20:21:07 +02:00
Ethan Lee
aa17d139be tests: Add a test for arrays with an expression as the index.
Currently, the compiler requires that dereferences be HLSL_IR_CONSTANT, so that
it can compute the offset at compile time. However, scenarios such as this test
will produce a dereference with HLSL_IR_EXPR, which will generate an error.

Passing this test in particular will require adding support for SM4 relative
addressing, as well as support for non-constant indexing in general.

Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-29 20:21:01 +02:00
Jan Sikorski
bb680e73de vkd3d-shader/spirv: Ensure that the OpLabel emitted vkd3d_spirv_builder_begin_main_function() gets terminated. 2023-05-26 19:11:55 +02:00
Zebediah Figura
b453a0acd6 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_abs(). 2023-05-26 19:11:46 +02:00
Zebediah Figura
c805eb1191 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_min(). 2023-05-26 19:11:44 +02:00
Zebediah Figura
aa82f61ef3 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_max(). 2023-05-26 19:11:42 +02:00
Zebediah Figura
ad0ab664d2 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_mod(). 2023-05-26 19:11:39 +02:00
Zebediah Figura
c8b7dbebe4 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_div(). 2023-05-26 19:11:36 +02:00
Henri Verbeet
133421a38c vkd3d: Avoid redundantly initialising "descriptors" in d3d12_desc_flush_vk_heap_updates_locked().
As pointed out by Andrey Gusev.
2023-05-26 19:11:26 +02:00
Conor McCarthy
f4778b727d vkd3d-shader/spirv: Use the register index count in shader_register_clone_relative_addresses(). 2023-05-26 19:11:15 +02:00
Conor McCarthy
4a64cf74c3 vkd3d-shader/spirv: Use the register index count in I/O relative address assertions. 2023-05-26 19:11:07 +02:00
Conor McCarthy
06dd0ccd4c vkd3d-shader/spirv: Use the register index count in I/O register assertions. 2023-05-26 19:11:03 +02:00
Conor McCarthy
178a7677e2 vkd3d-shader/spirv: Use the register index count in shader_register_get_io_indices(). 2023-05-26 19:11:02 +02:00
Conor McCarthy
d46250a59b vkd3d-shader/spirv: Use the register index count in default register dereferences. 2023-05-26 19:11:00 +02:00
Conor McCarthy
a2b3f70d8e vkd3d-shader/spirv: Use the register index count in aggregate register dereferences. 2023-05-26 19:10:58 +02:00
Conor McCarthy
ad08864134 vkd3d-shader/spirv: Use the register index count in spirv_compiler_get_register_name(). 2023-05-26 19:10:56 +02:00
Conor McCarthy
b3927726cc vkd3d-shader/spirv: Use the register index count in non-I/O variable registers in vkd3d_symbol_make_register(). 2023-05-26 19:10:54 +02:00
Conor McCarthy
ec5f195b6b vkd3d-shader/spirv: Use the register index count in I/O registers in vkd3d_symbol_make_register(). 2023-05-26 19:10:52 +02:00
Conor McCarthy
532fe01818 vkd3d-shader/spirv: Set the register index count in spirv_compiler_emit_default_control_point_phase(). 2023-05-26 19:10:49 +02:00
Conor McCarthy
9c6040df02 vkd3d-shader/spirv: Set the register index count in spirv_compiler_emit_dcl_indexable_temp(). 2023-05-26 19:10:47 +02:00
Conor McCarthy
bf1ecc0f60 vkd3d-shader/spirv: Set the register index count in spirv_compiler_emit_hull_shader_builtins(). 2023-05-26 19:10:33 +02:00
Conor McCarthy
7e58511b76 vkd3d-shader/spirv: Set the register index count in spirv_compiler_get_invocation_id(). 2023-05-26 19:10:30 +02:00
Ethan Lee
ea7d8c65bd vkd3d-shader/tpf: Add support for emitting sample_l instructions.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-24 22:00:41 +02:00
Conor McCarthy
6835e8176f vkd3d-shader/ir: Normalise signatures and input/output registers to the Shader Model 6 pattern.
In Shader Model 6 each signature element can span a range of register
indices, or 'rows', and system values do not share a register index with
non-system values. Inputs and outputs are referenced by element index
instead of register index. This patch merges multiple signature elements
into a single element under the following conditions:

- The register index in a load or store is specified dynamically by
  including a relative address parameter with a base register index. The
  dcl_index_range instruction is used to identify these.
- A register declaration is split across multiple elements which declare
  different components of the register.
- A patch constant function writes tessellation factors. These are an
  array in SPIR-V, but in SM 5.x each factor is declared as a separate
  register, and these are dynamically indexed by the fork/join instance
  id. Elimination of multiple fork/join phases converts the indices to
  constants, but merging the signature elements into a single arrayed
  element matches the SPIR-V output.

All references to input/output register indices are converted to element
indices. If a relative address is present, the element index is moved up
a slot so it cannot be confused with a constant offset. Existing code
only handles register index relative addressing for tessellation factors.
This patch adds generic support for it.
2023-05-24 22:00:29 +02:00
Conor McCarthy
110e48e54d vkd3d-shader/ir: Eliminate struct vkd3d_shader_normaliser. 2023-05-24 22:00:28 +02:00
Conor McCarthy
31682c52c7 vkd3d-shader/spirv: Support emitting multi-dimensional array variables. 2023-05-24 22:00:27 +02:00
Francisco Casas
e060773c19 vkd3d-shader/hlsl: Extend the liveness of nodes produced outside loops.
Otherwise, it is possible that the register used by the temp is
overridden by a subsequent instruction within the same loop.
2023-05-24 22:00:21 +02:00
Francisco Casas
fbd2df2ad5 tests: Add minimal tests for temp lifetimes within a loop. 2023-05-24 22:00:19 +02:00
Zebediah Figura
855bb71f6d vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_nequal(). 2023-05-23 21:08:22 +02:00
Zebediah Figura
d565caafb5 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_mul(). 2023-05-23 21:08:21 +02:00
Zebediah Figura
623cd94997 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_add(). 2023-05-23 21:08:20 +02:00
Zebediah Figura
7d9b24fe11 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_neg(). 2023-05-23 21:08:19 +02:00
Zebediah Figura
eb04829e66 vkd3d-shader/hlsl: Pass hlsl_constant_value and hlsl_type pointers to fold_cast(). 2023-05-23 21:08:17 +02:00
Ethan Lee
24d4ab7fb3 vkd3d-shader/hlsl: Add support for SampleGrad() method.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-23 21:07:49 +02:00
Ethan Lee
c3f10fe271 tests: Add a test for SampleGrad() method.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-23 21:07:47 +02:00
Nikolay Sivov
1af662ae50 tests: Add RWBuffer writing test.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:36 +02:00
Zebediah Figura
66dab357eb tests: Add support for UAV buffers in the d3d11 runner.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:36 +02:00
Nikolay Sivov
f470c00453 tests: Add support for UAV buffers to d3d12 runner.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:36 +02:00
Nikolay Sivov
74c0ad0a7a tests: Rename readback helper to be more generic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:28 +02:00
Nikolay Sivov
a4ebde202a tests: Add support for UAV buffers in Vulkan runner.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:28 +02:00
Nikolay Sivov
cf8cacd336 vkd3d-shader/hlsl: Improve UAV format type checking for buffer types.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:27 +02:00
Nikolay Sivov
cff22ecde8 vkd3d-shader/hlsl: Add support for writing RWStructuredBuffer declarations.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:26 +02:00
Nikolay Sivov
3de824bfd8 vkd3d-shader/hlsl: Add support for RWBuffer object.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:24 +02:00
Nikolay Sivov
44a90f5d41 vkd3d-shader: Fix dcl_uav_typed_* formatting.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-22 22:03:24 +02:00
Ethan Lee
fb9328d030 vkd3d-shader/hlsl: Fold constant integral abs().
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-22 22:03:18 +02:00
Nikolay Sivov
dfa0076473 vkd3d-shader/hlsl: Add support for sample index argument in Load(). 2023-05-22 22:03:12 +02:00
Nikolay Sivov
dc41444941 vkd3d-shader/hlsl: Convert ternary operator true/false values to a common type. 2023-05-09 21:51:46 +02:00
Nikolay Sivov
a064009d3b tests: Simplify conditional test. 2023-05-09 21:51:46 +02:00
Conor McCarthy
be4a71da7d vkd3d-shader/tpf: Validate input and output index ranges for default control point phases. 2023-05-09 21:51:33 +02:00
Conor McCarthy
3e50c4d13b vkd3d-shader/tpf: Remove an unnecessary carriage return from a parser error message. 2023-05-09 21:51:32 +02:00
Conor McCarthy
6dd1b01284 vkd3d-shader/tpf: Validate index range declarations. 2023-05-09 21:51:31 +02:00
Conor McCarthy
d565fbdcd6 vkd3d-shader/tpf: Validate input/output registers. 2023-05-09 21:51:29 +02:00
Conor McCarthy
2166088b0b vkd3d-shader/tpf: Validate signature element masks. 2023-05-09 21:51:28 +02:00
Conor McCarthy
b8e6482365 vkd3d-shader/tpf: Validate signature element register indices. 2023-05-09 21:51:19 +02:00
Conor McCarthy
adf7db021c vkd3d-shader/tpf: Validate input/output register index counts. 2023-05-09 21:51:17 +02:00
Zebediah Figura
b1bc4044ae vkd3d-shader/hlsl: Use %option nodefault in the lexer. 2023-05-09 21:51:09 +02:00
Zebediah Figura
600fdcd112 vkd3d-shader/hlsl: Lex invalid characters in #line directives.
Avoid letting them fall through to the default rule.
2023-05-09 21:51:08 +02:00
Zebediah Figura
7b8845474d vkd3d-shader/preproc: Use %option nodefault in the lexer. 2023-05-09 21:51:06 +02:00
Zebediah Figura
871cf0b4b5 vkd3d-shader/preproc: Ignore newlines in C comments.
Avoid letting them fall through to the default rule.
2023-05-09 21:51:05 +02:00
Zebediah Figura
ddbfd88e74 vkd3d-shader/preproc: Lex whitespace and invalid characters in #include and #line directives.
Avoid letting them fall through to the default rule.

A syntax error will be emitted by the parser.
2023-05-09 21:51:01 +02:00
Zebediah Figura
da7670f7c8 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from add_conditional(). 2023-05-09 21:50:37 +02:00
Zebediah Figura
39bbac3cca vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_uint_constant(). 2023-05-09 21:50:36 +02:00
Zebediah Figura
b991f98e2f vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_swizzle(). 2023-05-09 21:50:35 +02:00
Zebediah Figura
306ae40696 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_store_index(). 2023-05-09 21:50:34 +02:00
Zebediah Figura
29a2b87f54 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_simple_store(). 2023-05-09 21:50:33 +02:00
Zebediah Figura
145a2dfd2d vkd3d-shader/hlsl: Return bool from hlsl_new_store_component(). 2023-05-09 21:50:31 +02:00
Zebediah Figura
6129399b4f tests: Add a test for SampleBias() with multiple mipmap levels. 2023-05-08 20:24:15 +02:00
Zebediah Figura
4ec60707e2 tests: Add a test for sampling from nonzero mipmap levels. 2023-05-08 20:24:15 +02:00
Zebediah Figura
e3eb4fc5eb tests: Add a test for loading from nonzero mipmap levels. 2023-05-08 20:24:15 +02:00
Zebediah Figura
c940486a89 tests/shader_runner: Add support for creating mipmapped textures. 2023-05-08 20:24:15 +02:00
Francisco Casas
fd38c58112 vkd3d-shader/hlsl: Introduce hlsl_calloc().
This is just a wrapper of vkd3d_calloc(), that has the advantage of
checking for multiplication overflow.
2023-05-08 20:24:15 +02:00
Francisco Casas
ef7cf9b1ad vkd3d-shader/hlsl: Support resource arrays when writting SM4.
The new fixmes can be triggered in presence of object components within
structs (for SM5).

In shaders such as this one:

    struct apple
    {
        Texture2D tex : TEX;
        float4 color : COLOR;
    };

    float4 main(struct apple input) : sv_target
    {
        return input.tex.Load(int3(1, 2, 3));
    }

Or this one:

    struct
    {
        Texture2D tex;
        float4 color;
    } s;

    float4 main() : sv_target
    {
        return s.tex.Load(int3(1, 2, 3));
    }
2023-05-08 20:24:15 +02:00
Francisco Casas
a91e6d4563 vkd3d-shader/hlsl: Write resource loads in SM1. 2023-05-08 20:24:15 +02:00
Francisco Casas
96c844ffb8 vkd3d-shader/hlsl: Write sampler declarations in SM1. 2023-05-08 20:24:15 +02:00
Francisco Casas
3e9a9c5051 vkd3d-shader/hlsl: Track objects sampling dimension. 2023-05-08 20:24:15 +02:00
Francisco Casas
4dba38e6c8 vkd3d-shader/hlsl: Track object components usage and allocate registers accordingly. 2023-05-08 20:24:14 +02:00
Francisco Casas
7c2ac5b098 tests: Test objects as parameters. 2023-05-08 20:24:14 +02:00
Francisco Casas
6f71077e3e vkd3d-shader/hlsl: Skip object components when creating input/output copies. 2023-05-08 20:22:19 +02:00
Francisco Casas
4413f6b64b vkd3d-shader/hlsl: Add fixme for uniform copies for objects within structs. 2023-05-08 20:22:17 +02:00
Francisco Casas
69ff249ef4 vkd3d-shader/hlsl: Support multiple-register variables in object regsets.
Variables that contain more than one object (arrays or structs) require
the allocation of contiguous registers in the respective object
register spaces.
2023-05-08 20:22:14 +02:00
Francisco Casas
9a8a440b9b tests: Add additional texture array register reservation tests. 2023-05-08 20:22:14 +02:00
Conor McCarthy
f039c86aac vkd3d: Create smaller UAV-only descriptor pools in the allocator if Vulkan-backed heaps are enabled.
In this case d3d12_command_allocator_allocate_descriptor_set() is
only called for clearing UAVs. This helps on platforms with limited
descriptor maximum counts.
2023-05-08 20:22:02 +02:00
Nikolay Sivov
7516adeeae vkd3d-shader/hlsl: Add support for fmod() intrinsic. 2023-05-08 20:21:52 +02:00
Zebediah Figura
8b57a612d7 vkd3d-shader/hlsl: Map the colour output for ps_1_* to r0. 2023-05-03 21:12:39 +02:00
Zebediah Figura
b2959739ed vkd3d-shader/hlsl: Rewrite the register allocator to allow allocating in multiple passes.
We will need this in order to allocate some "special" registers: ps_1_* output, sincos output, etc.
2023-05-03 21:12:38 +02:00
Zebediah Figura
71d8ff85c6 vkd3d-shader/hlsl: Avoid leaking the allocator register map in allocate_const_registers(). 2023-05-03 21:12:37 +02:00
Zebediah Figura
c57ac0b207 vkd3d-shader/hlsl: Rename struct liveness to struct register_allocator. 2023-05-03 21:12:34 +02:00
Conor McCarthy
7917a68241 tests/d3d12: Test register relative addressing in vertex and pixel shaders. 2023-05-03 21:12:09 +02:00
Conor McCarthy
a0a18b1620 vkd3d-shader: Introduce an internal shader signature structure.
A register count is required for Shader Model 6 signatures, including
those normalised from earlier models.
2023-05-03 21:12:07 +02:00
Conor McCarthy
5ae068168c vkd3d-shader/tpf: Return an error from vkd3d_shader_sm4_parser_create() if the parser failed. 2023-05-03 21:12:06 +02:00
Conor McCarthy
85eb231492 vkd3d-shader/d3dbc: Return an error from vkd3d_shader_sm1_parser_create() if the parser failed. 2023-05-03 21:12:03 +02:00
Francisco Casas
34ddc13390 vkd3d-shader/hlsl: Don't keep the implicit mipmap level on hlsl_ir_index. 2023-05-03 21:11:59 +02:00
Francisco Casas
4aaf6b8895 vkd3d-shader/hlsl: Use hlsl_ir_index for resource access.
This patch makes index expressions on resources hlsl_ir_index nodes
instead of hlsl_ir_resource_load nodes, because it is not known if they
will be used later as the lhs of an hlsl_ir_resource_store.

For now, the only benefit is consistency.
2023-05-03 21:11:56 +02:00
Conor McCarthy
e2dac061e2 vkd3d: Do not reset the descriptor heap count unless full or the command list is reset.
The same heaps must be flushed again if the command list is executed again
without a reset.
2023-05-02 20:46:23 +02:00
Nikolay Sivov
87037d3748 vkd3d-shader/hlsl: Implement asfloat().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-05-02 20:46:16 +02:00
Nikolay Sivov
3f90a0e671 tests: Fix a typo in asuint() test shader. 2023-05-02 20:46:16 +02:00
Nikolay Sivov
7d41cf4440 vkd3d-shader/hlsl: Partially implement static expressions evaluation. 2023-05-02 20:46:08 +02:00
Zebediah Figura
6de904b448 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_resource_store(). 2023-05-02 20:46:03 +02:00
Zebediah Figura
3cc18f1e9f vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_resource_load(). 2023-05-02 20:46:02 +02:00
Zebediah Figura
8485b2ee95 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_loop(). 2023-05-02 20:46:00 +02:00
Zebediah Figura
3ca9656e84 vkd3d-shader/hlsl: Pass an hlsl_block pointer to hlsl_new_loop(). 2023-05-02 20:45:59 +02:00
Zebediah Figura
e848c57b46 vkd3d-shader/hlsl: Reuse the "init" instruction list if possible in create_loop(). 2023-05-02 20:45:57 +02:00
Henri Verbeet
3f8aa0e272 vkd3d-shader/d3d-asm: Rename trace.c to d3d_asm.c. 2023-05-02 20:45:33 +02:00
Henri Verbeet
73dc62aebf vkd3d-shader: Get rid of the unused vkd3d_shader_src_param_entry structure. 2023-05-02 20:45:27 +02:00
Francisco Casas
abb207fab0 vkd3d-shader/hlsl: Always specify resource on intrinsic_tex().
Otherwise, in the added test, we get:

vkd3d-compiler: vkd3d-shader/hlsl.c:452: hlsl_init_deref_from_index_chain: Assertion `chain' failed.

because on the path that triggers the following error:

E5002: Wrong type for argument 1 of 'tex3D': expected 'sampler' or 'sampler3D', but got 'sampler2D'.

a NULL params.resource is passed to hlsl_new_resource_load() and
then to hlsl_init_deref_from_index_chain().
2023-05-01 22:18:46 +02:00
Ethan Lee
5d735f3b0e vkd3d-shader/hlsl: Add support for sign() intrinsic.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-01 22:18:41 +02:00
Ethan Lee
109f7094bc tests: Add tests for sign() intrinsic.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-05-01 22:18:41 +02:00
Zebediah Figura
6e677def71 vkd3d-shader/hlsl: Normalize bools when loading from uniforms or vertex input. 2023-05-01 22:18:36 +02:00
Zebediah Figura
834497d5ac vkd3d-shader/hlsl: Introduce an sm4_src_from_constant_value() helper. 2023-05-01 22:18:35 +02:00
Zebediah Figura
0a44e6043e vkd3d-shader/hlsl: Put the hlsl_ir_constant value in a structure. 2023-05-01 22:18:33 +02:00
Zebediah Figura
3cce4e70e9 tests: Test bool semantics. 2023-05-01 22:18:33 +02:00
Zebediah Figura
8b4e70dfee tests: Test casting from a bool uniform. 2023-05-01 22:18:33 +02:00
Francisco Casas
dcd991deda vkd3d-shader/hlsl: Consider duplicated input semantic types equivalent in SM1. 2023-05-01 22:18:27 +02:00
Francisco Casas
34431239a5 vkd3d-shader/hlsl: Handle possibly different types in input semantic var load.
Since in SM1 all vector types use 4 register components, and since SM1
doesn't consider vectors of different dimx incompatible, it is necessary
to ensure that the semantic var is created with dimx=4, and to add a
cast node.
2023-05-01 22:18:26 +02:00
Francisco Casas
537d7c27a2 vkd3d-shader/hlsl: Error out when a semantic is used with incompatible types.
Considering row vectors from row_major matrices as having a different
layout as regular vectors, and error out in that case, is left as todo.
2023-05-01 22:18:24 +02:00
Francisco Casas
d96e9665b1 vkd3d-shader/hlsl: Error out when an output semantic is used more than once.
The use of the hlsl_semantic.reported_duplicated_output_next_index field
allows reporting multiple overlapping indexes, such as in the following
vertex shader:

    void main(out float1x3 x : OVERLAP0, out float1x3 y : OVERLAP1)
    {
        x = float3(1.0, 2.0, 3.2);
        y = float3(5.0, 6.0, 5.0);
    }

    apple.hlsl:1:41: E5013: Output semantic "OVERLAP1" is used multiple times.
    apple.hlsl:1:13: First use of "OVERLAP1" is here.
    apple.hlsl:1:41: E5013: Output semantic "OVERLAP2" is used multiple times.
    apple.hlsl:1:13: First use of "OVERLAP2" is here.

While at the same time avoiding reporting overlaps more than once for
large arrays:

    struct apple
    {
        float2 p : sv_position;
    };

    void main(out apple aps[4])
    {
    }

    apple.hlsl:3:8: E5013: Output semantic "sv_position0" is used multiple times.
    apple.hlsl:3:8: First use of "sv_position0" is here.
2023-05-01 22:18:22 +02:00
Francisco Casas
edc72fdefc vkd3d-shader/hlsl: Support semantics for array types. 2023-05-01 22:18:21 +02:00
Francisco Casas
a488889494 vkd3d-shader/hlsl: Don't create semantic vars more than once. 2023-05-01 22:18:20 +02:00
Francisco Casas
b589c2b32d vkd3d-shader/hlsl: Move get_array_size() and get_array_type() to hlsl.c. 2023-05-01 22:18:19 +02:00
Francisco Casas
d5068fd3ff tests: Test duplicated semantics. 2023-05-01 22:18:19 +02:00
Francisco Casas
f1276f9fb9 tests: Test array types with semantics. 2023-05-01 22:18:19 +02:00
Francisco Casas
61c72a4fd1 vkd3d-shader/hlsl: Avoid invalid input/output copies for non-numeric types. 2023-05-01 22:18:17 +02:00
Francisco Casas
627678a632 tests: Map unindentified hrs on compilation. 2023-05-01 22:18:17 +02:00
Francisco Casas
9cc1c7fe9d tests: Allow invalid vertex shader tests. 2023-05-01 22:18:17 +02:00
Francisco Casas
877fd3f0b4 tests: Expect S_OK result on [vertex shader]. 2023-05-01 22:18:16 +02:00
Nikolay Sivov
7ba373946b vkd3d-shader/hlsl: Implement D3DCOLORtoUBYTE4() function. 2023-04-28 21:04:13 +02:00
Nikolay Sivov
4b3707aeb4 vkd3d-shader/hlsl: Partially implement trunc().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-28 21:04:11 +02:00
Conor McCarthy
5366ca7001 vkd3d: Synchronise concurrent descriptor heap binding by multiple command lists.
It is possible for multiple command lists to use the same heap, and
submit it simultaneously to multiple d3d12 queues.
2023-04-28 21:04:02 +02:00
Conor McCarthy
fa63da6030 vkd3d: Track all descriptor heaps bound during command list recording and flush their writes.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54895
2023-04-28 21:04:02 +02:00
Ethan Lee
d3876e49bc tests: Add tests for ddx(), ddy() intrinsics.
Thanks to Giovanni for the second set of tests! Note that the
tolerance for the final pixel was set much higher than the others;
this test seems to be an issue for some devices (in my case, a 7900
XTX running RADV).

Co-authored-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-04-28 21:03:43 +02:00
Ethan Lee
138c32ce88 vkd3d-shader/hlsl: Add support for ddx(), ddy() intrinsics.
SPIR-V already handled DSX/DSY, so only D3DBC/TPF needed new case blocks.

Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-04-28 21:03:40 +02:00
Nikolay Sivov
af4bb03795 vkd3d-shader/hlsl: Implement SampleBias() method.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-26 22:46:55 +02:00
Nikolay Sivov
c166ab9727 vkd3d-shader/hlsl: Add separate helpers to generate object methods.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-26 22:46:53 +02:00
Nikolay Sivov
4fe4784e8a tests: Add a simple test for "discard".
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-26 22:46:52 +02:00
Ethan Lee
e541e71532 tests: Remove rtv clears in Vulkan runner.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-26 22:46:52 +02:00
Nikolay Sivov
c74d148cbe tests: Remove rtv clears in d3d12 runner.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-26 22:46:52 +02:00
Nikolay Sivov
59c63ec584 vkd3d-shader/hlsl: Handle discard statement.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-26 22:46:50 +02:00
Nikolay Sivov
6da7d16d4c vkd3d-shader/trace: Add separate id for discard.
Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-04-26 22:46:49 +02:00
Conor McCarthy
06cc2e1aee vkd3d: Collect multiple descriptor writes in a buffer and update in one call.
Reduces the cost of calling vkUpdateDescriptorSets() via winevulkan
and its thunks. The performance gain can be as high as 20%.
2023-04-25 22:20:17 +02:00
Conor McCarthy
f50e53e7c9 vkd3d: Use atomic exchange for descriptor writes.
The descriptor component of struct d3d12_desc is replaced with a union
containing a pointer which can be swapped out using
InterlockedExchangePointer(). To make it safe to increment the refcount
of such an object it is necessary to cache freed objects. Elimination
of the descriptor mutexes on games which use multithreaded descriptor
writes nearly doubles framerate on recent hardware.
2023-04-25 22:20:15 +02:00
Conor McCarthy
e63201a7a3 vkd3d: Delay writing Vulkan descriptors until submitted to a queue.
Eliminates vk_sets_mutex. Performance on average may be lower until
the descriptor mutexes are replaced and Vulkan writes are buffered
to reduce thunk calls.
2023-04-25 22:20:09 +02:00
Conor McCarthy
505c8c5a2f vkd3d: Ensure descriptors are pointer aligned.
The descriptor structure contains pointer and size types.
2023-04-25 22:20:06 +02:00
Zebediah Figura
b46df551eb vkd3d-shader/tpf: Return unsigned int from hlsl_sm4_register_from_semantic().
Fix a compile warning:

../vkd3d/libs/vkd3d-shader/hlsl_codegen.c: In function 'allocate_semantic_register':
../vkd3d/libs/vkd3d-shader/hlsl_codegen.c:2947:85: error: passing argument 4 of 'hlsl_sm4_register_from_semantic' from incompatible pointer type [-Werror=incompatible-pointer-types]
 2947 |         if ((builtin = hlsl_sm4_register_from_semantic(ctx, &var->semantic, output, &type, NULL, &has_idx)))
      |                                                                                     ^~~~~
      |                                                                                     |
      |                                                                                     unsigned int *
In file included from ../vkd3d/libs/vkd3d-shader/hlsl_codegen.c:21:
../vkd3d/libs/vkd3d-shader/hlsl.h:1171:52: note: expected 'enum vkd3d_sm4_register_type *' but argument is of type 'unsigned int *'
 1171 |         bool output, enum vkd3d_sm4_register_type *type, enum vkd3d_sm4_swizzle_type *swizzle_type, bool *has_idx);
      |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
2023-04-21 20:55:56 +02:00
Nikolay Sivov
317b8aa039 vkd3d-shader/hlsl: Ignore "unroll" attribute for loops. 2023-04-21 20:55:48 +02:00
Henri Verbeet
8e0df3f720 vkd3d-shader/sm1: Merge hlsl_sm1.c into d3dbc.c. 2023-04-20 22:54:32 +02:00
Henri Verbeet
99bc07ccf5 vkd3d-shader/sm4: Merge sm4.h into tpf.c. 2023-04-20 22:54:31 +02:00
Henri Verbeet
7800c7b40f vkd3d-shader/sm4: Rename hlsl_sm4.c to tpf.c. 2023-04-20 22:54:30 +02:00
Henri Verbeet
804e315b68 vkd3d-shader/sm4: Move the TPF parser from dxbc.c to hlsl_sm4.c. 2023-04-20 22:54:28 +02:00
Zebediah Figura
e34bdcab3a tests/shader_runner: Remove a redundant vkd3d_test_pop_context().
We already popped the context here.

Move the break inside the previous if to make control flow a little clearer.
2023-04-20 22:54:23 +02:00
Zebediah Figura
0959c6663f vkd3d-shader/hlsl: Remove an unused local variable from create_loop(). 2023-04-20 22:54:13 +02:00
Zebediah Figura
39a03cfd22 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_load_component(). 2023-04-20 22:54:12 +02:00
Zebediah Figura
a98686ed78 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from add_load_component(). 2023-04-20 22:54:11 +02:00
Zebediah Figura
e5ec431784 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_jump(). 2023-04-20 22:54:10 +02:00
Zebediah Figura
dfe056596a vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_int_constant(). 2023-04-20 22:54:09 +02:00
Conor McCarthy
a4a95aa950 vkd3d: Treat negative viewport widths as invalid.
Negative widths are not supported in Vulkan.
2023-04-20 22:53:48 +02:00
Conor McCarthy
5d724abc96 vkd3d: Do not skip all viewports if one is invalid.
Fixes blank screen in Assassin's Creed: Valhalla.
2023-04-20 22:53:46 +02:00
Ethan Lee
81cc077b53 tests: Add tests for any() intrinsic.
Currently only tests float and bool, scalar and vector.

Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-04-19 20:46:53 +02:00
Ethan Lee
0668d32631 vkd3d-shader/hlsl: Add support for any() intrinsic.
For now, this is limited to float and bool, scalar and vector. All other types are unsupported.

Signed-off-by: Ethan Lee <flibitijibibo@gmail.com>
2023-04-19 20:46:53 +02:00
Francisco Casas
3f9cd58f5b vkd3d-shader/hlsl: Fix missing extern resource names. 2023-04-19 20:46:53 +02:00
Giovanni Mascellani
625155bd3c tests: Pop the shader runner context after processing the current section.
This way failures produced while compiling or preprocessing a shader
are shown with the appropriate context.
2023-04-19 20:46:53 +02:00
Conor McCarthy
db7359f36a tests: Test index buffer location zero in test_draw_indexed_instanced().
Only verify it doesn't crash.
2023-04-19 20:46:53 +02:00
Conor McCarthy
333fdf7c74 vkd3d: Check for index buffer location zero.
VK_EXT_robustness2 does not support null index buffers so we only
warn and return immediately.
2023-04-19 20:46:53 +02:00
Conor McCarthy
5244fa572f tests: Test null addresses in test_update_root_descriptors(). 2023-04-19 20:46:00 +02:00
Conor McCarthy
0526f232cd vkd3d: Support null address for SRV/UAV root descriptors. 2023-04-19 20:46:00 +02:00
Conor McCarthy
963e5e26dc vkd3d: Support null address for CBV root descriptors. 2023-04-19 20:46:00 +02:00
Nikolay Sivov
827a359b45 vkd3d-shader/hlsl: Handle uppercase regset names in packoffset().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-19 20:45:50 +02:00
Nikolay Sivov
0cea4d352e vkd3d-shader/hlsl: Handle uppercase regset names in register(). 2023-04-19 20:45:48 +02:00
Zebediah Figura
d8ef0c69a8 vkd3d-shader/spirv: Do not declare resources as multisampled if the sample count is 1.
It is illegal to match a SPIR-V multisampled resource to a Vulkan resource which
is not multisampled. Vulkan considers a resource to be multisampled if its
sample count is greater than 1 (and SPIR-V does not care about the sample count).

This fixes validation errors in the case where the sample count does actually
match the resource. In order to provide correct behaviour when there is a
mismatch, or when the sample count is missing, we will need yet another
additional interface. In the absence of that it seems best to provide a best
guess.

This fixes a validation error with the not-yet-committed merge request 135, when
the d3d11 runner is run through Wine with the Vulkan backend.
2023-04-19 20:45:39 +02:00
Nikolay Sivov
dfe923ea1d vkd3d-shader: Consistently pass location structure by pointer. 2023-04-19 20:45:31 +02:00
Conor McCarthy
0ce55e8b8e vkd3d: Support 1D SRV. 2023-04-18 22:00:17 +02:00
Conor McCarthy
6db9ed14dc vkd3d: Support 1D UAV. 2023-04-18 22:00:17 +02:00
Conor McCarthy
7d0aaea4f8 tests: Test 1D UAV clear. 2023-04-18 22:00:01 +02:00
Zebediah Figura
7ee66351c8 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_if(). 2023-04-18 21:59:49 +02:00
Zebediah Figura
50f0ae1b21 vkd3d-shader/hlsl: Pass hlsl_block pointers to hlsl_new_if(). 2023-04-18 21:59:45 +02:00
Zebediah Figura
5a3fe1609b vkd3d-shader/hlsl: Initialize the block in clone_block(). 2023-04-18 21:59:44 +02:00
Zebediah Figura
733141720a vkd3d-shader/hlsl: Introduce a hlsl_block_cleanup() helper. 2023-04-18 21:59:42 +02:00
Zebediah Figura
dc7514afc9 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_float_constant(). 2023-04-18 21:59:39 +02:00
Zebediah Figura
b23ef3ca3b vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_cast() and hlsl_new_copy(). 2023-04-18 21:59:37 +02:00
Zebediah Figura
1bf3aa9275 vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_bool_constant(). 2023-04-18 21:59:34 +02:00
Zebediah Figura
0654d88edd vkd3d-shader/hlsl: Allow VPOS and VFACE to be specified in sm3 pixel shaders.
We were previously (accidentally) rejecting them because they didn't have a
usage.
2023-04-18 21:59:22 +02:00
Zebediah Figura
b19105eaeb vkd3d-shader/hlsl: Do not write DCL instructions for ps_1_* shaders. 2023-04-18 21:59:17 +02:00
Zebediah Figura
99d413206b vkd3d-shader/hlsl: Map ps_1_* color and texcoord semantics to registers. 2023-04-18 21:59:15 +02:00
Zebediah Figura
98e2461392 vkd3d-shader/hlsl: Sort only uniforms by name in the sm1 backend. 2023-04-18 21:59:13 +02:00
Zebediah Figura
8ed7437708 vkd3d-shader/hlsl: Evaluate index before array.
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
2023-04-13 23:05:43 +02:00
Francisco Casas
af1aa63ace vkd3d-shader/hlsl: Support column-major matrix indexing in the lhs. 2023-04-13 23:05:41 +02:00
Francisco Casas
dc2a34824d vkd3d-shader/hlsl: Always load from a synthetic copy in add_load_component(). 2023-04-13 23:05:39 +02:00
Francisco Casas
82ff408451 vkd3d-shader/hlsl: Remove add_load_index(). 2023-04-13 23:05:34 +02:00
Francisco Casas
5c285adc6b vkd3d-shader/hlsl: Use hlsl_ir_index for array and record access.
From this point on, it is no longer true that only hlsl_ir_loads can
return objects, because an object can also come from chain of
hlsl_ir_indexes that ends in an hlsl_ir_load.

The lower_index_loads pass takes care of lowering all hlsl_ir_indexes
into hlsl_ir_loads.

For this reason, hlsl_resource_load_params now expects both the resource
as the sampler to be just an hlsl_ir_node pointer instead of a pointer
to a more specific hlsl_ir_load.
2023-04-13 23:05:32 +02:00
Francisco Casas
741c9e5893 vkd3d-shader/hlsl: Introduce hlsl_ir_index.
This node type is intended for use during parse-time.

While we parse an indexing expression such as "a[3]", we don't know if
it will end up as part of an expression (in which case it must be folded
into a load) or it is for the lhs of a store (in which case it must be
folded into the store's deref).
2023-04-13 23:05:25 +02:00
Francisco Casas
8cd3defe0d tests: Test indexing of non-loads. 2023-04-13 23:05:25 +02:00
Zebediah Figura
526b025c88 tests: Test side effects on indexes.
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
2023-04-13 23:05:21 +02:00
Francisco Casas
1b1978f684 tests: Test matrix indexing on the lhs. 2023-04-13 23:05:21 +02:00
Francisco Casas
9dd99a084d tests: Test multiple calls to the same function in initializers. 2023-04-13 23:05:21 +02:00
Francisco Casas
0ceecd1225 vkd3d-shader/hlsl: Fix numeric offset of object fields. 2023-04-13 23:05:07 +02:00
Francisco Casas
86893bc7f4 tests: Test numeric offsets with object fields. 2023-04-13 23:05:07 +02:00
Nikolay Sivov
e4503ad80f tests: Add a test for SV_IsFrontFace.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:05:00 +02:00
Nikolay Sivov
a496e3a8ba tests: Disable culling in shader runners.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:05:00 +02:00
Nikolay Sivov
ca59a3c35b vkd3d-shader/hlsl: Handle SV_IsFrontFace semantic. 2023-04-13 23:04:58 +02:00
Nikolay Sivov
a1bd4e080e vkd3d-shader/hlsl: Support log() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:04:44 +02:00
Nikolay Sivov
210caa931d vkd3d-shader/hlsl: Support log10() intrinsic.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-13 23:04:42 +02:00
Nikolay Sivov
49b63fbeba vkd3d-shader/hlsl: Support log2() intrinsic. 2023-04-13 23:04:40 +02:00
Nikolay Sivov
c93dac3620 vkd3d-shader/hlsl: Write 'log' instruction for SM1. 2023-04-13 23:04:37 +02:00
Henri Verbeet
0c05f2409c vkd3d-shader/sm4: Get rid of shader_sm4_is_end(). 2023-04-12 21:54:57 +02:00
Henri Verbeet
1e448b0b71 vkd3d-shader/sm4: Pass a vkd3d_shader_sm4_parser structure to shader_sm4_read_instruction(). 2023-04-12 21:54:56 +02:00
Henri Verbeet
1b7b694190 vkd3d-shader/sm1: Pass a vkd3d_shader_sm1_parser structure to shader_sm1_is_end(). 2023-04-12 21:54:55 +02:00
Henri Verbeet
df6a34e1bd vkd3d-shader/sm1: Pass a vkd3d_shader_sm1_parser structure to shader_sm1_read_instruction(). 2023-04-12 21:54:54 +02:00
Henri Verbeet
09566e2c25 vkd3d-shader: Get rid of the "ptr" field from struct vkd3d_shader_parser.
This is an implementation detail.
2023-04-12 21:54:53 +02:00
Henri Verbeet
c4d307a08d vkd3d-shader: Get rid of the "instruction_idx" field from struct vkd3d_shader_parser.
This is unused now.
2023-04-12 21:54:51 +02:00
Conor McCarthy
98b5e2c6e0 vkd3d-shader/ir: Insert hull shader control point input declarations if no control point phase is defined.
The SPIR-V backend will emit a default control point phase. Inserting
inputs into the IR allows handling of declarations via the usual path
instead of an ad hoc implementation which may not match later changes
to input handling.
2023-04-12 21:54:28 +02:00
Conor McCarthy
14295a224d vkd3d-shader/ir: Normalise control point phase output registers to include the control point id.
In SPIR-V the address must include the invocation id, but in TPF it
is implicit. Move the register index up one slot and insert an
OUTPOINTID relative address.
2023-04-12 21:54:27 +02:00
Zebediah Figura
94ff9ba5e7 tests: Add a test for readback map stability.
Resident Evil 2 accesses a resource immediately after unmapping it.
2023-04-10 21:00:26 +02:00
Philip Rebohle
c8a33431e3 vkd3d: Persistently map host-visible heaps on creation. 2023-04-10 21:00:17 +02:00
Zebediah Figura
616c4bf51f vkd3d-shader/hlsl: Always align section sizes.
This fixes disassembly using native D3DDisassemble() of shaders generated with vkd3d-shader.

Fixes: d6d9aab31c
2023-04-06 17:52:16 +02:00
Zebediah Figura
a60c47ff39 vkd3d-shader: Explicitly align the size in bytecode_get_next_offset() and rename it accordingly. 2023-04-06 17:52:16 +02:00
Zebediah Figura
6783524613 vkd3d-common: Make some global string variables const. 2023-04-06 17:52:08 +02:00
Zebediah Figura
1514755043 vkd3d-shader/hlsl: Make a string array const. 2023-04-06 17:52:07 +02:00
Zebediah Figura
09cda98deb vkd3d-shader: Factor out vkd3d_shader_parser_compile(). 2023-04-06 17:52:02 +02:00
Zebediah Figura
507e8644ae vkd3d-shader: Reuse the existing parser for scanning in compile_dxbc_tpf(). 2023-04-06 17:52:02 +02:00
Zebediah Figura
28774b3649 vkd3d-shader/spirv: Move spirv_compiler_destroy() to avoid forward declarations. 2023-04-06 17:52:01 +02:00
Zebediah Figura
70cfd58be6 vkd3d-shader/spirv: Introduce a spirv_compile() helper. 2023-04-06 17:51:59 +02:00
Nikolay Sivov
24c1eb562f vkd3d-shader/hlsl: Treat half as float for casts.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-06 17:51:55 +02:00
Nikolay Sivov
c190c184ce vkd3d-shader/hlsl: Add support for ternary operator. 2023-04-06 17:51:46 +02:00
Zebediah Figura
725d408974 vkd3d-shader/hlsl: Introduce an hlsl_block_init() helper. 2023-04-06 17:51:40 +02:00
Zebediah Figura
1da5a9a490 vkd3d-shader/hlsl: Introduce an hlsl_block_add_block() helper. 2023-04-06 17:51:38 +02:00
Zebediah Figura
ceac81b816 vkd3d-shader/hlsl: Introduce an hlsl_block_add_instr() helper. 2023-04-06 17:51:36 +02:00
Conor McCarthy
e27ceddfb4 vkd3d: Leave the command queue op mutex locked after a partial flush.
All return paths in d3d12_command_queue_flush_ops_locked() must
leave the op mutex locked.
2023-04-05 21:38:39 +02:00
Henri Verbeet
d6d9aab31c vkd3d-shader: Align the start offset instead of the size in bytecode_put_bytes().
The practical effect this has is that we avoid potential trailing padding at
the end of DXBC blobs. Unfortunately this also means we need to be more
careful about using bytecode_get_size() to find the offset where subsequent
data would get written, although in many cases this follows a put_u32() call.
2023-04-04 22:01:36 +02:00
Henri Verbeet
a0a3fb0e5f tests/shader_runner: Return from run_shader_tests_d3d12() if we're unable to create a test context.
A test environment may legitimately be unable to support running d3d12 tests.
2023-04-04 22:01:15 +02:00
Henri Verbeet
4e32adb8c1 vkd3d-utils: Export D3D12CreateDevice() once again.
Commit d27fee64ab inadvertently stopped
exporting D3D12CreateDevice().
2023-04-04 22:01:04 +02:00
Zebediah Figura
dfa4bfdd03 include: Make test context information nestable.
Based on Wine.
2023-04-04 21:59:58 +02:00
Zebediah Figura
1bf5050d3d tests: Factor out vkd3d_test_printf(). 2023-04-04 21:59:58 +02:00
Francisco Casas
f3e81327dc vkd3d-shader/hlsl: Consider register() as manual packing for resource fields. 2023-04-04 21:59:49 +02:00
Francisco Casas
70ff7aaddd tests: Test packoffset() with resources inside cbuffers. 2023-04-04 21:59:49 +02:00
Francisco Casas
bf4a125087 vkd3d-shader/hlsl: Ignore packoffset() contents for SM1. 2023-04-04 21:59:47 +02:00
Francisco Casas
60237cb773 vkd3d-shader/hlsl: Don't allow manual and automatic cbuffer offset packing. 2023-04-04 21:59:45 +02:00
Francisco Casas
4448d114ad vkd3d-shader/hlsl: Detect overlaps in cbuffer offsets. 2023-04-04 21:59:43 +02:00
Francisco Casas
7777c32cac vkd3d-shader/hlsl: Support packoffset(). 2023-04-04 21:59:42 +02:00
Francisco Casas
4aca335f42 vkd3d-shader/hlsl: Parse packoffset(). 2023-04-04 21:59:40 +02:00
Francisco Casas
9b70971696 vkd3d-shader/hlsl: Rename struct hlsl_reg_reservation fields. 2023-04-04 21:59:39 +02:00
Francisco Casas
496f9b42cb tests: Test packoffset(). 2023-04-04 21:59:39 +02:00
Francisco Casas
cf59ad9c9f tests: Test cbuffer element offsets. 2023-04-04 21:59:37 +02:00
Zebediah Figura
8186b75228 tests: Use a pixel shader that consumes SV_Position in test_query_pipeline_statistics().
Some drivers (AMD Radeon RX 6700 XT, with radeonsi from Mesa 22.2.0-rc3) emit
less than one invocation per pixel, presumably because they detect that the
shader control flow is uniform for all pixels. Having the control flow depend on
SV_Position avoids this test failure.

Cf. 34bd0dd0704c613abef8a9aa3ba2a2507ed02843 in wine.
2023-04-03 18:00:37 +02:00
Giovanni Mascellani
9a27df3a8c tests: Read integer uniforms with strtol() and strtoul().
Because %i sscanf() converters are deprecated, and in practice
clamp to [-2^31, 2^31) on 32 bit.
2023-04-03 18:00:14 +02:00
Nikolay Sivov
eb71c5f20d vkd3d-shader/hlsl: Handle round() for SM1. 2023-04-03 18:00:03 +02:00
Conor McCarthy
c87a292f98 tests: Release and then use a heap which contains resources.
The expected use case where a heap is freed before its contained
resources is not reasonably testable, so the ability to place a new
resource is tested instead.
2023-04-03 17:59:43 +02:00
Conor McCarthy
88667098eb vkd3d: Do not destroy a heap until its resource count is zero.
Fixes a crash on exit in Horizon Zero Dawn (which requres added SM 6.0 support).

Placed resources should hold a reference to their heap:
https://learn.microsoft.com/en-us/windows/win32/api/d3d12/nf-d3d12-id3d12device-createheap
2023-04-03 17:59:41 +02:00
Zebediah Figura
7a9e393ea0 vkd3d-shader/hlsl: Rename the "type" field of struct hlsl_type to "class".
To be consistent with enum hlsl_type_class and HLSL_CLASS_*.
2023-04-03 17:59:24 +02:00
Nikolay Sivov
b172f4c257 vkd3d-shader/hlsl: Improve handling of builtin alias type "vector".
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-04-03 17:59:08 +02:00
Nikolay Sivov
5b5c020ade vkd3d-shader/hlsl: Improve handling of builtin alias type "matrix". 2023-04-03 17:59:06 +02:00
Conor McCarthy
c61f9f477c vkd3d-shader/spirv: Declare the phase SPIR-V function in spirv_compiler_enter_shader_phase().
The convoluted code path is no longer needed.
2023-04-03 17:58:26 +02:00
Conor McCarthy
b8472d2270 vkd3d-shader/spirv: Remove the hull shader phase array.
With no more than one phase each of control point and fork/join type,
an array is not required.
2023-04-03 17:58:24 +02:00
Conor McCarthy
16a7de4b38 vkd3d-shader/trace: Trace the normalised instruction array after tracing the input. 2023-04-03 17:58:23 +02:00
Conor McCarthy
eabdccb117 vkd3d-shader/ir: Merge all shader IR fork and join phases into a single phase.
Normalise the incoming vkd3d_shader_instruction IR to the shader model 6
pattern. This allows generation of a single patch constant function in
SPIR-V.
2023-04-03 17:58:21 +02:00
Henri Verbeet
57d92a15cf Release 1.7. 2023-03-24 11:22:28 +01:00
Henri Verbeet
54b0165e32 vkd3d-shader: VKD3D_SHADER_COMPILE_OPTION_WRITE_TESS_GEOM_POINT_SIZE was introduced in vkd3d 1.7. 2023-03-20 21:28:13 +01:00
Nikolay Sivov
4110f1e547 vkd3d-shader: Fix a few typos in the comments. 2023-03-15 20:13:27 +01:00
Henri Verbeet
8509ec1e72 vkd3d-shader/spirv: Update the current source location in spirv_compiler_generate_spirv(). 2023-03-13 22:10:00 +01:00
Henri Verbeet
0a73c75db8 vkd3d-shader/glsl: Update the current source location in vkd3d_glsl_generator_generate().
Since the introduction of instruction arrays, the parser location no
longer matches the location of the current instruction. Ultimately we'll
likely want to add some kind of explicit location information to struct
vkd3d_shader_instruction_array, because we might do transformations that
change the order of the original instructions.
2023-03-13 22:09:58 +01:00
Henri Verbeet
685abf9c2d vkd3d-shader/sm4: Do not specify a destination register for VKD3D_SM4_OP_DCL_RESOURCE in opcode_table[].
We do not set one in shader_sm4_read_dcl_resource(), and
shader_sm4_read_instruction() explicitly sets this to 0.
2023-03-13 22:09:54 +01:00
Henri Verbeet
65b7154a22 vkd3d-shader/sm4: Set "dst_count" to 0 when we clear "dst" in shader_sm4_read_instruction().
VKD3D_SM4_OP_DCL_RESOURCE currently has 1 for "dst_count", but NULL for
"dst". This is largely harmless because we never attempt to access the
destination register of VKD3DSIH_DCL instructions, but nevertheless not
quite proper.
2023-03-13 22:09:49 +01:00
Zebediah Figura
9ea84ae8c9 tests/shader_runner: Use the global test_options structure.
Inspired by a patch by Giovanni Mascellani.
2023-03-10 21:13:05 +01:00
Giovanni Mascellani
c8a05a8b10 tests: Collect D3D12 test options in a dedicated structure. 2023-03-10 21:12:46 +01:00
Giovanni Mascellani
8d7159b4be tests: Initialize shader_runner fields after having zeroed the struct. 2023-03-10 21:12:44 +01:00
Zebediah Figura
da2435707b vkd3d-shader/hlsl: Fix some memory leaks in the function call rule. 2023-03-09 22:11:06 +01:00
Henri Verbeet
d405295bc7 build: Fix the order of some .shader_test files. 2023-03-09 22:10:53 +01:00
Henri Verbeet
0c833056f6 build: Actually run asuint.shader_test. 2023-03-09 22:10:53 +01:00
Nikolay Sivov
193692bbcb vkd3d-shader/hlsl: Use array element type for array's regset.
Currently this affects SM1 compilation only, with a minimal example like this:

float4 var[3];
float4 main() : sv_target
{
    return var[1];
}
2023-03-09 22:10:39 +01:00
Nikolay Sivov
2880be647e vkd3d-shader/sm4: Write sample count field for multisampled texture declaration.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-03-08 20:15:11 +01:00
Nikolay Sivov
ae2f777a4d vkd3d-shader/hlsl: Parse multisample texture type names. 2023-03-08 20:15:09 +01:00
Nikolay Sivov
ee52ad8106 vkd3d-shader/trace: Output sample count for multisampled resources. 2023-03-08 20:15:06 +01:00
Conor McCarthy
9f6e6d3fcd vkd3d-shader/dxbc: Validate and skip the signature section header size.
Silences a very common warning.
2023-03-08 20:14:59 +01:00
Conor McCarthy
3b5316be82 vkd3d-shader/dxbc: Emit a shader error for an invalid signature data size. 2023-03-08 20:14:57 +01:00
Conor McCarthy
83e39e2650 vkd3d-shader/dxbc: Pass a message context to for_each_dxbc_section(). 2023-03-08 20:14:55 +01:00
Zebediah Figura
98624f2e8f include: Document that vkd3d_shader_signature may contain pointers into the input shader blob. 2023-03-08 20:14:49 +01:00
Giovanni Mascellani
bb2fa97c33 vkd3d: Do not keep the CS queue locked while processing it.
d3d12_command_queue_flush_ops() can renter itself while processing signal
events. Since we don't use recursive mutexes, we currently have to check
some of the queue variables without holding the mutex, which is not safe.

This is solved by allowing the queue to release its mutex while it is
processing entries: when flushing, the queue is briefly locked, the
is_flushing flag is set, the queue content is copied away and the
queue is unlocked again. After having processed the entries, the
queue is locked again to check is something else was added in the
meantime. This is repeated until the queue is empty (or a wait operation
is blocking it).

This should also remove some latency when a thread pushes to the queue
while another one is processing it, but I didn't try to measure any
impact. While it is expected that with this patch the queue mutex
will be locked and unlocked more frequently, it should also remain
locked for less time, hopefully creating little contention.
2023-03-08 20:14:39 +01:00
Giovanni Mascellani
09d2c8d190 vkd3d: Always enqueue wait operations, even when they can be executed right away. 2023-03-08 20:14:39 +01:00
Giovanni Mascellani
9eba44396a vkd3d: Always enqueue signal operations, even when they can be executed right away. 2023-03-08 20:14:39 +01:00
Giovanni Mascellani
0d329ba168 vkd3d: Always enqueue execute operations, even when they can be executed right away.
The goal is to simplify the CS queue handling: with this and the following
changes operations are always started by d3d12_command_queue_flush_ops(),
in order to make further refactoring easier.

Notice that while with this change executing an operation on an empty CS
queue is a bit less efficient, it doesn't require more locking. On the other
hand, this change paves the road for executing CS operations without holding
the queue lock.
2023-03-08 20:14:35 +01:00
Giovanni Mascellani
0c6df49560 vkd3d: Hold the queue mutex when adding the queue to a blocked list.
Otherwise it could be added more than once.

Note that the deleted comment is wrong: between when d3d12_command_queue_flush_ops()
returns and when the queue is added back to the blocked list, the queue
might have been pushed to and flushed an arbitrary number of times.
2023-03-08 20:14:31 +01:00
Giovanni Mascellani
ef8d272507 vkd3d: Mention the correct mutex in a comment. 2023-03-08 20:14:31 +01:00
Nikolay Sivov
a18f3d4dd5 vkd3d-shader/hlsl: Support distance() intrinsic. 2023-03-08 20:14:22 +01:00
Nikolay Sivov
d6b656641c vkd3d-shader/hlsl: Support rsqrt() intrinsic. 2023-03-08 20:14:20 +01:00
Giovanni Mascellani
6ccde9e82c vkd3d-shader: Make documentation for "messages" parameters self contained.
Otherwise it's not clear which clauses in vkd3d_shader_compile() really
apply to other functions. For example, many of the functions currently
refering to vkd3d_shader_compile() don't even take a vkd3d_shader_compile_info
parameter.
2023-02-28 22:07:12 +01:00
Zebediah Figura
a28ecaa135 vkd3d-shader/hlsl: Get rid of the check_invalid_matrix_modifiers() helper. 2023-02-28 22:07:01 +01:00
Zebediah Figura
5838364886 vkd3d-shader/hlsl: Apply latent majority modifiers to typedefs as well. 2023-02-28 22:07:00 +01:00
Zebediah Figura
322963add8 vkd3d-shader/hlsl: Do not set an initial latent matrix majority.
This change does nothing by itself.
2023-02-28 22:06:59 +01:00
Zebediah Figura
75ab9d31ef vkd3d-shader/hlsl: Store the matrix majority as a type modifiers bitmask. 2023-02-28 22:06:58 +01:00
Zebediah Figura
b3c620954b vkd3d-shader/hlsl: Apply latent type modifiers to matrix array typedefs. 2023-02-28 22:06:56 +01:00
Zebediah Figura
2a412670ee tests: Add more tests for pack_matrix pragmas. 2023-02-28 22:06:54 +01:00
Francisco Casas
af25d5bf96 vkd3d-shader/hlsl: Don't map src swizzles for SM1 dp3 and dp4 ops.
Without this patch, dp3 and dp4 map src swizzles to the dst writemask,
which is not correct.

Before b84f560bdf, these ops worked
despite this, because the dst register had, incorrectly, the full
writemask.

To solve this problem, write_sm1_binary_op_dot() is introduced,
similarly to write_sm4_binary_op_dot().
2023-02-27 22:12:38 +01:00
Giovanni Mascellani
a1c6bb85ad vkd3d-shader: Do not pass client-given strings as printf()-style format strings. 2023-02-27 22:12:26 +01:00
Henri Verbeet
b1e13d6e33 vkd3d-shader/dxbc: Introduce API for serialising DXBC blobs. 2023-02-23 21:47:27 +01:00
Henri Verbeet
c87492ed21 vkd3d-shader/dxbc: Introduce API for parsing DXBC blobs. 2023-02-23 21:47:26 +01:00
Henri Verbeet
d0d2130f74 vkd3d-shader/dxbc: Rename parse_dxbc() to for_each_dxbc_section(). 2023-02-23 21:47:23 +01:00
Henri Verbeet
a06320c1fc vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to parse_dxbc(). 2023-02-23 21:47:22 +01:00
Henri Verbeet
2f762465a6 vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to shader_extract_from_dxbc(). 2023-02-23 21:47:21 +01:00
Henri Verbeet
3a3acb5b7d vkd3d-shader/dxbc: Pass a vkd3d_shader_code structure to shader_parse_input_signature(). 2023-02-23 21:47:20 +01:00
Henri Verbeet
e2825f7658 vkd3d-shader/dxbc: Pass a vkd3d_shader_dxbc_section_desc structure to the parse_dxbc() section handler. 2023-02-23 21:47:19 +01:00
Henri Verbeet
5020781f76 vkd3d-shader/dxbc: Pass a vkd3d_shader_dxbc_section_desc structure to shader_parse_root_signature(). 2023-02-23 21:47:18 +01:00
Henri Verbeet
6c64f8a217 vkd3d-shader/dxbc: Pass a vkd3d_shader_dxbc_section_desc structure to shader_parse_signature(). 2023-02-23 21:47:16 +01:00
Henri Verbeet
bf3c012834 vkd3d-shader/dxbc: Rename the dxbc_writer_section structure to vkd3d_shader_dxbc_section_desc.
In preparation of exposing it in the public API.
2023-02-23 21:47:15 +01:00
Henri Verbeet
b59de4de5c vkd3d-shader/dxbc: Store DXBC section data as a vkd3d_shader_code structure. 2023-02-23 21:47:13 +01:00
Zebediah Figura
dea212688a vkd3d: Remove a double space in a trace message. 2023-02-23 21:46:49 +01:00
Nikolay Sivov
dd36215a00 vkd3d-shader/hlsl: Support case-insensitive lookup for builtin 'float' type.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-02-23 21:46:42 +01:00
Nikolay Sivov
df2d6d35e2 vkd3d-shader/hlsl: Use unsigned type for the 'dword' alias.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-02-23 21:46:40 +01:00
Nikolay Sivov
891217664a vkd3d-shader/hlsl: Support case-insensitive lookup for builtin 'dword' type. 2023-02-23 21:46:38 +01:00
Giovanni Mascellani
5f904e5022 vkd3d-utils: Generate Doxygen documentation for vkd3d_utils.h. 2023-02-22 21:38:46 +01:00
Giovanni Mascellani
e5bbd05c98 vkd3d: Generate Doxygen documentation for vkd3d.h. 2023-02-22 21:38:46 +01:00
Giovanni Mascellani
6bdb0abf68 vkd3d-shader: Fix the Doxygen documentation for vkd3d_shader.h.
The \since field was too early, and prevented Doxygen from really
parsing the synopsis for vkd3d_shader.h.
2023-02-22 21:38:43 +01:00
Zebediah Figura
e10e12a10c vkd3d-shader: Avoid underflowing the indentation level.
Any shader that would underflow is invalid, but it is helpful to allow tracing even invalid shaders.
2023-02-22 18:28:19 +01:00
Francisco Casas
f8338ef089 vkd3d-shader/hlsl: Allocate register reservations in a separate pass.
This refactoring is required for improving the allocation strategy so it
works with multiple-register variables.
2023-02-22 18:28:19 +01:00
Francisco Casas
75359e6dbd vkd3d-shader/hlsl: Respect object reservations even if the object is unused. 2023-02-22 18:28:19 +01:00
Francisco Casas
7a7116eaab tests: Test allocation of unused objects. 2023-02-22 18:28:19 +01:00
Francisco Casas
c5384b38ee vkd3d-shader/hlsl: Allocate objects according to register set. 2023-02-22 18:28:19 +01:00
Francisco Casas
e0031d2a1f vkd3d-shader/hlsl: Keep an hlsl_reg for each register set in hlsl_ir_var. 2023-02-22 18:28:19 +01:00
Francisco Casas
5272c5f86a vkd3d-shader/hlsl: Obtain extern resources as a separate array in SM4. 2023-02-22 18:28:19 +01:00
Francisco Casas
d07247249a vkd3d-shader/hlsl: Store the type's register size for each register set. 2023-02-22 18:28:19 +01:00
Francisco Casas
315966dc21 vkd3d-shader/hlsl: Leave offset empty for array and struct derefs. 2023-02-22 18:28:19 +01:00
Zebediah Figura
7c1c2e6cc4 vkd3d-shader/hlsl: Parse the tex3D() intrinsic. 2023-02-22 18:28:19 +01:00
Zebediah Figura
645ec0167a vkd3d-shader/hlsl: Parse the tex2D() intrinsic. 2023-02-22 18:28:19 +01:00
Francisco Casas
9fdff25a3b vkd3d-shader/hlsl: Avoid segfault on missing sampler. 2023-02-22 18:28:19 +01:00
Nikolay Sivov
d86db8bcbe vkd3d-shader/hlsl: Support lit() intrinsic. 2023-02-21 21:09:52 +01:00
Zebediah Figura
02e3be811b configure: Declare LFLAGS and YFLAGS as precious.
Normally AC_PROG_LEX and AC_PROG_YACC do this, but we demand flex and bison specifically.
2023-02-20 22:00:00 +01:00
Francisco Casas
7f009f59ce vkd3d-shader/hlsl: Add a more specific error for missing compatible fn. definitions. 2023-02-20 21:59:54 +01:00
Francisco Casas
f08c0a7c03 vkd3d-shader/hlsl: Find compatible function overloads.
But still throw hlsl_fixme() when there is more than one.
Prioritizing among multiple compatible function overloads in the same way
as the native compiler would require systematic testing.
2023-02-20 21:59:53 +01:00
Francisco Casas
d279d34801 vkd3d-shader/hlsl: Parse array types in function parameters. 2023-02-20 21:59:51 +01:00
Francisco Casas
9df54851c9 tests: Test array parameters on functions. 2023-02-20 21:59:51 +01:00
Francisco Casas
1b951c87f6 tests: Add more tests for broadcasts in function call args. 2023-02-20 21:59:51 +01:00
Francisco Casas
2a9b9f7530 vkd3d-shader/hlsl: Rename compatible_data_types() to be more specific. 2023-02-20 21:59:50 +01:00
Zebediah Figura
6767b7abbf vkd3d-shader/hlsl: Avoid warning for each variable when in/out modifiers are specified on non-parameters. 2023-02-20 21:59:45 +01:00
Zebediah Figura
72ec5563f8 vkd3d-shader/hlsl: Remove a redundant warning for mutually exclusive majority modifiers.
We will warn subsequently in apply_type_modifiers() or add_typedef().
2023-02-20 21:59:43 +01:00
Zebediah Figura
af65287423 vkd3d-shader/hlsl: Check for majority modifiers on non-matrices in apply_type_modifiers(). 2023-02-20 21:59:42 +01:00
Zebediah Figura
1ee7a4e82a tests: Add more tests for majority modifier syntax. 2023-02-20 21:59:42 +01:00
Zebediah Figura
1c29b45c1f tests: Test macro expansion in pack_matrix pragmas. 2023-02-20 21:59:42 +01:00
Nikolay Sivov
e5b40092c2 vkd3d-shader/hlsl: Support all() intrinsic. 2023-02-20 21:59:37 +01:00
Francisco Casas
2142d31f13 vkd3d-shader/hlsl: Fix number of components when creating a swizzle in copy-prop.
Otherwise we may create nodes of different dimensions than the ones we
are replacing.

"count" is the number of components of the source deref (without
considering the swizzle), while "instr_component_count" is the actual
number of components of the instruction to be replaced.
2023-02-20 21:59:31 +01:00
Nikolay Sivov
e7bc634307 vkd3d-shader/hlsl: Support reflect() intrinsic.
Tests authored by Giovanni.
2023-02-20 21:59:23 +01:00
Giovanni Mascellani
7c3dadce6b vkd3d-shader/hlsl: Write SM4 break instructions. 2023-02-15 21:53:21 +01:00
Nikolay Sivov
99acf5038e vkd3d-shader/hlsl: Use mul only for two scalars for dot(). 2023-02-15 21:53:15 +01:00
Zebediah Figura
0e60f4cc69 vkd3d-shader/hlsl: Always set ctx->cur_function in the func_prototype_no_attrs rule.
Fixes: 4c46075d86
2023-02-14 21:52:59 +01:00
Zebediah Figura
cd6e8b5540 vkd3d-shader/hlsl: Allow empty parameter lists to be specified as "(void)". 2023-02-14 21:52:57 +01:00
Zebediah Figura
58445da64b vkd3d-shader/hlsl: Allow the final expression in a for loop initializer to be omitted. 2023-02-13 22:16:56 +01:00
Zebediah Figura
38964214cd vkd3d-shader/hlsl: Handle early return after a CF block only if there was actually a return somewhere in the CF block. 2023-02-13 22:16:55 +01:00
Zebediah Figura
4b944517b7 vkd3d-shader/hlsl: Inline function calls. 2023-02-13 22:16:53 +01:00
Zebediah Figura
6177cea31f vkd3d-shader/hlsl: Emit a hlsl_fixme() for unhandled instruction types when writing bytecode.
This was originally left alone in order to allow functions without early return
to succeed, since in that case we would already emit the correct bytecode
despite not handling the HLSL_IR_JUMP_RETURN instruction.

Now that we lower return statements, however, any unhandled instructions are
either definitely going to result in invalid bytecode, or rare enough that it's
not worth returning success anyway.
2023-02-13 22:16:52 +01:00
Zebediah Figura
8bdee6681b vkd3d-shader/hlsl: Lower return statements. 2023-02-13 22:16:51 +01:00
Zebediah Figura
0cf39f3c63 vkd3d-shader/hlsl: Emit a hlsl_fixme() if multiple valid entry point definitions are given. 2023-02-13 22:16:49 +01:00
Zebediah Figura
bb41c3b5fe vkd3d-shader/hlsl: Skip functions that don't have a body when looking for the entry point. 2023-02-13 22:16:48 +01:00
Zebediah Figura
09c5ed27fe tests: Avoid performing a multi-component UAV load in uav-out-param.shader_test.
It requires caps beyond shader model 5.0.
2023-02-13 22:16:46 +01:00
Giovanni Mascellani
8e087b0f17 vkd3d: Use a dedicated mutex to protect the blocked queues. 2023-02-13 22:16:44 +01:00
Giovanni Mascellani
df36026633 vkd3d: Do not read max_pending_value without holding the fence's mutex. 2023-02-13 22:16:44 +01:00
Giovanni Mascellani
e076fd9c77 vkd3d: Do not read blocked_queue_count without holding the device mutex. 2023-02-13 22:16:42 +01:00
Nikolay Sivov
240b2f966f vkd3d-shader/hlsl: Support abs() for SM1. 2023-02-09 18:03:19 +01:00
Francisco Casas
902ddee557 vkd3d-shader/hlsl: Fix SM1 dp2add swizzles.
SM1 dp2add doesn't map src swizzles to the dst writemask, also it
expects the last argument to have a replicate swizzle.

Before this patch we were writing the operation as:
```
dp2add r0.x, r1.x, r0.x, r2.x
```

and now it is:
```
dp2add r0.x, r1.xyxx, r0.xyxx, r2.x
```

dp2add now has its own function, write_sm1_dp2add(), since it seems to
be the only instruction with this structure.

Ideally we would be using the default swizzles for the first two src
arguments:
```
dp2add r0.x, r1, r0, r2.x
```
since, according to native's documentation, these are supported for all
sm < 4.

But this change -- along with following the convention of repeating the
last component of the swizzle when fewer than 4 components are to be
specified -- would require more global changes, probably in
hlsl_swizzle_from_writemask() and hlsl_map_swizzle().
2023-02-08 22:09:42 +01:00
Francisco Casas
d01729921c vkd3d-shader/hlsl: Map SM1 src swizzles outside write_sm1_instruction().
Not every instruction expects src swizzles to be mapped according to the
dst writemasks, so this logic must be outside this function.
2023-02-08 22:09:41 +01:00
Francisco Casas
b84f560bdf vkd3d-shader/hlsl: Set writemasks correctly for SM1 scalar and vector types.
Because of the change introduced in

f21693b2 vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.

SM1 scalars and vectors were not longer getting the correct writemask
when they are allocated.

This happened because they have to reserve the whole register even if
they only use some of its components, so their reg_size may differ from
the number of components.

This commit fixes that.
2023-02-08 22:09:39 +01:00
Francisco Casas
6b4a4c4c6d vkd3d-shader/hlsl: Expect component count in allocate_register().
This in order to set the correct writemasks for SM1 registers.
2023-02-08 22:09:38 +01:00
Francisco Casas
0ecac994d0 vkd3d-shader/hlsl: Rename 'component_count' arguments to 'reg_size'.
component_count will be used in the next patch for the actual number of
components of the type and not its register size.
2023-02-08 22:09:36 +01:00
Zebediah Figura
ab601d65cd vkd3d-shader: Initialize the parameter allocator head.
This fixes a memory leak.

Fixes: 007f894b94
2023-02-07 22:15:08 +01:00
Nikolay Sivov
91a70c7dda vkd3d-shader/hlsl: Handle saturate() for SM1.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-02-07 22:15:06 +01:00
Zebediah Figura
77d716c811 vkd3d-shader/hlsl: Add functions to the global list inside the func_prototype rule. 2023-02-07 22:15:06 +01:00
Zebediah Figura
4c46075d86 vkd3d-shader/hlsl: Use the original hlsl_ir_function_decl struct rather than allocating a new one for each definition.
We need to make sure every invocation points to the same hlsl_ir_function_decl
and the same parameters.

This fixes some invalid memory accesses.
2023-02-07 22:15:06 +01:00
Zebediah Figura
25d49b518d vkd3d-shader/hlsl: Put synthetic variables into a dummy scope.
Prevent them from being ever looked up.

Our naming scheme for synthetic variables already effectively prevents this, but
this is better for clarity. We also will need to be able to move some named
variables into a dummy scope to account for complexities around function
definition and declarations.
2023-02-07 22:15:06 +01:00
Zebediah Figura
8755a92196 vkd3d-shader/hlsl: Add a hlsl_cleanup_semantic() helper. 2023-02-07 22:15:06 +01:00
Zebediah Figura
cb2c89a589 vkd3d-shader/hlsl: Store function parameters in an array. 2023-02-07 22:15:06 +01:00
Zebediah Figura
721c7aa22c tests: Add more tests for function definitions. 2023-02-07 22:15:06 +01:00
Zebediah Figura
898fc9e198 vkd3d: Fix checking for failure from SleepConditionVariableCS().
Fixes: 552926cfca
2023-02-07 22:15:06 +01:00
Matteo Bruni
2e074ebce7 vkd3d: Initialize image aspect for NULL SRVs. 2023-02-07 22:08:00 +01:00
Giovanni Mascellani
552926cfca vkd3d: Do not allow synchronization primitives to fail.
In practice they never fail. If they fail, it means that there
is some underlying platform problem and there is little we can do
anyway. Under pthreads function prototypes allow returning failure,
but that's only used for "error checking" mutexes, which we
don't use.

On the other hand, error handling in vkd3d is rather inconsistent:
sometimes the errors are ignored, sometimes logged, sometimes
passed to the caller. It's hard to handle failures appropriately
if you can't even keep your state consistent, so I think it's
better to avoid trying, assume that synchronization primitives do
not fail and at least have consistent logging if something goes
wrong.
2023-02-02 20:51:27 +01:00
Zebediah Figura
a66fe31fe5 vkd3d: Do not write the point size for SPIR-V shaders.
We disable shaderTessellationAndGeometryPointSize.
2023-02-02 20:51:19 +01:00
Zebediah Figura
8fc8d34ea0 vkd3d-shader/spirv: Introduce an option to control whether point size is written. 2023-02-02 20:51:18 +01:00
Nikolay Sivov
06f300ec59 vkd3d-shader/hlsl: Support dot() for SM1. 2023-02-02 20:51:12 +01:00
Zebediah Figura
68c232cfab tests: Test entry point semantics on function declarations. 2023-01-31 22:27:02 +01:00
Zebediah Figura
4954c36347 tests: Add more tests for early return from the entry point. 2023-01-31 22:27:02 +01:00
Zebediah Figura
7460d7adc2 tests: Add some tests for early return from user-defined functions. 2023-01-31 22:27:02 +01:00
Zebediah Figura
aa3badbd9d vkd3d-shader/hlsl: Emit a hlsl_fixme() for HLSL_IR_CALL instructions.
Avoid outputting invalid shaders.
2023-01-31 22:27:00 +01:00
Philip Rebohle
f9e7cb6345 include: Fix incorrect UpdateTileMappings declaration.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2023-01-26 21:52:39 +01:00
Nikolay Sivov
ec00782eae vkd3d-shader/tests: Add some exp()/exp2() tests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-01-26 21:52:29 +01:00
Nikolay Sivov
8bb023e5af vkd3d-shader/hlsl: Support exp() intrinsic. 2023-01-26 21:52:28 +01:00
Nikolay Sivov
8ca2f65bc1 vkd3d-shader/hlsl: Support exp2() intrinsic. 2023-01-26 21:52:26 +01:00
Nikolay Sivov
fa971f32bc vkd3d-shader/hlsl: Write 'exp' instructions for SM1. 2023-01-26 21:52:25 +01:00
Nikolay Sivov
335f741630 vkd3d-shader/hlsl: Add a helper to write per-component unary instructions. 2023-01-26 21:52:24 +01:00
Francisco Casas
f33ca836d7 vkd3d-shader/hlsl: Make single-component swizzles retrieve a scalar. 2023-01-26 21:52:18 +01:00
Francisco Casas
edf86b2248 tests: Add tests for assignments to self with swizzles. 2023-01-26 21:52:18 +01:00
Francisco Casas
9d7ef64dc0 tests: Test swizzles on scalar values. 2023-01-26 21:52:18 +01:00
Francisco Casas
524029a062 tests: Test using single-component swizzles as indexes.
Vectors cannot be used as array indexes, however, single-component
swizzles (such as vec.x) can be used.

This suggests that single-component swizzles should actually be
scalars and not vectors of dimx = 1.

It is worth noting that the use of single-component swizzles on scalars
should still be allowed.
2023-01-26 21:52:16 +01:00
Francisco Casas
dd2168754d tests: Combine all the swizzle tests in a single file. 2023-01-26 21:52:16 +01:00
Giovanni Mascellani
d2f8a576a8 vkd3d-shader/hlsl: Avoid infinite loop and invalid derefs in copy-prop.
Co-authored-by: Francisco Casas <fcasas@codeweavers.com>
Co-authored-by: Zebediah Figura <zfigura@codeweavers.com>

Because copy_propagation_transform_object_load() replaces a deref
instead of an instruction, it is currently prone to two problems:

1- It can replace a deref with the same deref, returning true every
time and getting the compilation stuck in an endless loop of
copy-propagation iterations.

2- When performed multiple times in the same deref, the second time it
can replace the deref with a deref from a temp that is only valid in
another point of the program execution, resulting in an incorrect value.

This patch preempts this by avoiding replacing derefs when the new deref
doesn't point to a uniform variable. Because, uniform variables cannot
be written to.
2023-01-26 21:52:07 +01:00
Francisco Casas
17888f6493 tests: Test correct copy-prop object replacement. 2023-01-26 21:52:05 +01:00
Zebediah Figura
653cc02f4c vkd3d-shader/hlsl: Write SM4 thread ID registers. 2023-01-25 22:47:46 +01:00
Zebediah Figura
809a43f06b tests: Add a test for compute thread IDs. 2023-01-25 22:10:30 +01:00
Francisco Casas
404a2d6a3d vkd3d-shader/hlsl: Reinterpret minimum precision types as their regular counterparts.
Reinterpret min16float, min10float, min16int, min12int, and min16uint
as their regular counterparts: float, float, int, int, uint,
respectively.

A proper implementation would require adding minimum precision
indicators to all the dxbc-tpf instructions that use these types.
Consider the output of fxc 10.1 with the following shader:

    uniform int i;

    float4 main() : sv_target
    {
        min16float4 a = {0, 1, 2, i};
        min16int2 b = {4, i};
        min10float3 c = {6.4, 7, i};
        min12int d = 9.4;
        min16uint4x2 e = {14.4, 15, 16, 17, 18, 19, 20, i};

        return mul(e, b) + a + c.xyzx + d;
    }

However, if the graphics driver doesn't have minimum precision support,
it ignores the minimum precision indicators and runs at 32-bit
precision, which is equivalent as working with regular types.
2023-01-25 22:10:23 +01:00
Francisco Casas
4ce6a17053 tests: Test minimum-precision numeric types. 2023-01-25 22:10:23 +01:00
Nikolay Sivov
3c23e1713c vkd3d-shader/hlsl: Implement sqrt() for SM1. 2023-01-25 22:10:15 +01:00
Nikolay Sivov
b84b9349bf vkd3d-shader/hlsl: Handle RSQ output for SM1. 2023-01-25 22:10:13 +01:00
Nikolay Sivov
3e6fccdbf9 vkd3d-shader/hlsl: Support frac() intrinsic.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=34242
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2023-01-25 22:10:05 +01:00
Conor McCarthy
3db509383b vkd3d: Store a heap array index in each CBV/SRV/UAV descriptor.
A pointer to the containing descriptor heap can be derived from this
information.

PE build of vkd3d uses Windows critical sections for synchronisation,
and these slow down on the very high lock/unlock rate during multithreaded
descriptor copying in Shadow of the Tomb Raider. This patch speeds up the
demo by about 8%. By comparison, using SRW locks in the allocators and
locking them for read only where applicable is about 4% faster.
2023-01-25 22:10:01 +01:00
Conor McCarthy
d14f42be9d vkd3d-shader/spirv: Pass a parser pointer to spirv_compiler_generate_spirv(). 2023-01-24 18:11:16 +01:00
Conor McCarthy
2a5ae0a8c6 vkd3d-shader/sm4: Use the instruction array interface in compile_dxbc_tpf(). 2023-01-24 18:11:14 +01:00
Conor McCarthy
2d3f05184f vkd3d-shader/glsl: Use the instruction array interface in vkd3d_glsl_generator_generate(). 2023-01-24 18:11:13 +01:00
Conor McCarthy
2559d622de vkd3d-shader: Use the instruction array interface in scan_with_parser(). 2023-01-24 18:11:12 +01:00
Conor McCarthy
e9a2642d6a vkd3d-shader/trace: Use the instruction array interface in vkd3d_dxbc_binary_to_text(). 2023-01-24 18:11:10 +01:00
Conor McCarthy
e8cb90608d vkd3d-shader: Initialise the instruction array in vkd3d_shader_parser_init(). 2023-01-24 18:11:10 +01:00
Conor McCarthy
a9aaa59df0 vkd3d-shader/sm4: Store parsed instructions in an array. 2023-01-24 18:11:08 +01:00
Conor McCarthy
007f894b94 vkd3d-shader/sm1: Store parsed instructions in an array. 2023-01-24 18:11:06 +01:00
Francisco Casas
6b82ba9488 vkd3d-shader/hlsl: Fold swizzle chains. 2023-01-24 18:10:53 +01:00
Zebediah Figura
b7d34e8307 vkd3d-shader/hlsl: Apply copy propagation to swizzled loads. 2023-01-24 18:10:50 +01:00
Francisco Casas
18adf0d726 vkd3d-shader/hlsl: Use aoffimmis when writing gather resource loads.
If the offset of a gather resource load can be represented as an
aoffimmi (vectori of ints from -8 to 7), use one.
This is of particular importance for 4.0 profiles, where this is the only
valid way of representing offsets for this operation.
2023-01-24 18:10:49 +01:00
Francisco Casas
c2a7a40d3a vkd3d-shader/hlsl: Replace loads with constants in copy prop.
If a hlsl_ir_load loads a variable whose components are stored from different
instructions, copy propagation doesn't replace it.

But if all these instructions are constants (which currently is the case
for value constructors), the load could be replaced with a constant value.
Which is expected in some other instructions, e.g. texel_offsets when
using aoffimmi modifiers.

For instance, this shader:

```
sampler s;
Texture2D t;

float4 main() : sv_target
{
    return t.Gather(s, float2(0.6, 0.6), int2(0, 0));
}
```

results in the following IR before applying the patch:
```
  float | 6.00000024e-01
  float | 6.00000024e-01
   uint | 0
        | = (<constructor-2>[@4].x @2)
   uint | 1
        | = (<constructor-2>[@6].x @3)
 float2 | <constructor-2>
    int | 0
    int | 0
   uint | 0
        | = (<constructor-5>[@11].x @9)
   uint | 1
        | = (<constructor-5>[@13].x @10)
   int2 | <constructor-5>
 float4 | gather_red(resource = t, sampler = s, coords = @8, offset = @15)
        | return
        | = (<output-sv_target0> @16)
```

and this IR afterwards:
```
 float2 | {6.00000024e-01 6.00000024e-01 }
   int2 | {0 0 }
 float4 | gather_red(resource = t, sampler = s, coords = @2, offset = @3)
        | return
        | = (<output-sv_target0> @4)
```
2023-01-24 18:10:45 +01:00
Zebediah Figura
8c2b8ff245 vkd3d-shader/hlsl: Synthesize the swizzle and replace the instruction inside of copy_propagation_compute_replacement().
Rename it to copy_propagation_replace_with_single_instr() accordingly.

The idea is to introduce a constant vector replacement pass which will do the
same thing.
2023-01-24 18:10:41 +01:00
Zebediah Figura
5d34790402 vkd3d-shader/hlsl: Call copy_propagation_get_value() directly in copy_propagation_transform_object_load().
copy_propagation_compute_replacement() is not doing very much for us, and
conceptually is a bit of an odd fit anyway, since it's meant to deal with
multi-component types.
2023-01-24 18:10:40 +01:00
Zebediah Figura
8fd30aa87d vkd3d-shader/hlsl: Add some swizzle manipulation definitions. 2023-01-24 18:10:39 +01:00
Francisco Casas
337b4c5db0 tests: Test constant propagation through swizzles.
The Load() method offsets are used for these tests since these must
solve to constants in order to pass.
2023-01-24 18:10:38 +01:00
Francisco Casas
cf17882189 vkd3d-shader/hlsl: Support offset argument for the texture Load() method. 2023-01-24 18:10:36 +01:00
Francisco Casas
7a7b17d0e1 tests: Test offset argument for the texture Load() method. 2023-01-24 18:10:36 +01:00
Giovanni Mascellani
1717dc0516 tests: Print DLL versions when running tests on Windows. 2023-01-24 18:10:22 +01:00
Giovanni Mascellani
2445743002 tests: Run d3d9 and d3d12 tests on non-cross builds too.
On cross builds, shaders are compiled with d3dcompiler_47.dll and
run with d3dN.dll. On non-cross builds, shaders are compiled with
vkd3d-shader and run with d3dN.dll (on Windows) or Vulkan and vkd3d
(on Linux).
2023-01-24 18:10:17 +01:00
Giovanni Mascellani
44d9e2d728 tests: Distinguish between cross and non-cross Win32 builds.
Now the tests compile correctly on non-cross Win32 builds.
2023-01-24 18:10:15 +01:00
Zebediah Figura
9c817e5e6d vkd3d-shader/hlsl: Forbid recursive calls. 2023-01-19 19:16:27 +01:00
Zebediah Figura
503be4243c tests/shader_runner: Explicitly track the expected shader compilation HRESULT instead of using a boolean flag. 2023-01-19 19:16:26 +01:00
Zebediah Figura
521f22e57a vkd3d-shader/hlsl: Store a non-constant hlsl_ir_function_decl pointer in struct hlsl_ir_call. 2023-01-19 19:16:25 +01:00
Zebediah Figura
447463e590 vkd3d-shader/hlsl: Remove the unused "intrinsic" argument from hlsl_add_function(). 2023-01-19 19:16:24 +01:00
Zebediah Figura
6c2472ce16 vkd3d-shader/hlsl: Remove some unnecessary YYABORTs from the func_prototype_no_attrs rule. 2023-01-19 19:16:22 +01:00
Francisco Casas
13c8e8b856 vkd3d-shader/hlsl: Parse step() intrinsic. 2023-01-19 19:16:17 +01:00
Francisco Casas
4e1a4a76d9 tests: Test step() intrinsic. 2023-01-19 19:16:17 +01:00
Francisco Casas
6fbf2b3e75 vkd3d-shader/hlsl: Parse sqrt() intrinsic. 2023-01-19 19:16:16 +01:00
Francisco Casas
7dbc879e2d tests: Test sqrt() intrinsic. 2023-01-19 19:16:16 +01:00
Francisco Casas
8d5f16d803 vkd3d-shader/hlsl: Support cos() intrinsic. 2023-01-19 19:16:15 +01:00
Francisco Casas
3239ea5ff1 vkd3d-shader/hlsl: Support sin() intrinsic. 2023-01-19 19:16:14 +01:00
Francisco Casas
b65c450101 vkd3d-shader/hlsl: Add additional tests for sin() and cos(). 2023-01-19 19:16:13 +01:00
Francisco Casas
2b1ec0cfe5 vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_scope. 2023-01-19 19:16:08 +01:00
Francisco Casas
eabd742f3e vkd3d-shader/hlsl: Add field-level documentation to function structs. 2023-01-19 19:16:07 +01:00
Francisco Casas
c68d0ecfe0 vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_buffer. 2023-01-19 19:16:06 +01:00
Francisco Casas
ba56833bb5 vkd3d-shader/hlsl: Add documentation to small hlsl.h structs. 2023-01-19 19:16:04 +01:00
Francisco Casas
06b52c0343 vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_deref. 2023-01-19 19:15:59 +01:00
Francisco Casas
f33d433621 vkd3d-shader/hlsl: Add documentation to struct hlsl_reg. 2023-01-19 19:15:57 +01:00
Francisco Casas
aab9886021 vkd3d-shader/hlsl: Allow uninitialized static objects.
validate_static_object_references() validates that uninitialized static
objects are not referenced in the shader.

In case a static variable contains both numeric and object types, the
"Static variables cannot have both numeric and resource components."
error should preempt uninitialized numeric values to reach further
compilation steps.
2023-01-19 12:29:41 +01:00
Francisco Casas
17d6a4411e vkd3d-shader/hlsl: Validate that non-uniform objects are not referenced.
Note that in the future we should call
validate_static_object_references() after DCE and pruning branches,
because shaders such as these compile (at least in more modern versions
of the native compiler):

Branch pruning:
```
static RWTexture2D<float> tex;

float4 main() : sv_target
{
    if (0)
    {
        tex[int2(0, 0)] = 2;
    }
    return 0;
}
```

DCE:
```
static Texture2D tex;
uniform uint i;

float4 main() : sv_target
{
    float4 unused = tex.Load(int3(0, 1, 2));

    return 0;
}
```

These are "todo" tests in hlsl-static-initializer.shader_test
that depend on this.
2023-01-19 12:29:39 +01:00
Francisco Casas
97c9669544 tests: Add additional object references tests. 2023-01-19 12:29:39 +01:00
Giovanni Mascellani
207643b8e8 tests: Test proper initialization of static structs to zero. 2023-01-19 12:29:39 +01:00
Francisco Casas
5cfc8d378f vkd3d-shader/hlsl: Initialize static variables to 0 by default.
We are currently not initializing static values to zero by default.

Consider the following shader:
```hlsl
static float4 va;

float4 main() : sv_target
{
  return va;
}
```
we get the following output:
```
ps_5_0
dcl_output o0.xyzw
dcl_temps 2
mov r0.xyzw, r1.xyzw
mov o0.xyzw, r0.xyzw
ret
```
where r1.xyzw is not initialized.

This patch solves this by assigning the static variable the value of an
uint 0, and thus, relying on complex broadcasts.

This seems to be the behaviour of the 9.29.952.3111 version of the native
compiler, since it retrieves the following error on a shader that lacks
an initializer on a data type with object components:

```
error X3017: cannot convert from 'uint' to 'struct <unnamed>'
```
2023-01-19 12:29:36 +01:00
Zebediah Figura
61f0d6d151 vkd3d-shader/hlsl: Get rid of the "intrinsic" field of struct hlsl_ir_function.
We have a different system of generating intrinsics, which makes it easier to
deal with "polymorphic" arithmetic functions.

Defining and storing intrinsics as hlsl_ir_function_decls would also require
more space in memory (and more optimization passes to get rid of the parameter
variables), and doesn't really save us any effort in terms of source code.
2023-01-13 17:32:44 +01:00
Zebediah Figura
9cc7aaf5a1 vkd3d-shader/hlsl: Forbid returning void expressions from void functions. 2023-01-13 17:32:43 +01:00
Zebediah Figura
b29d3489de vkd3d-shader/hlsl: Generate IR for user-defined function calls. 2023-01-13 17:32:42 +01:00
Zebediah Figura
30550c0831 vkd3d-shader/hlsl: Avoid assuming that expressions have at least one argument. 2023-01-13 17:32:40 +01:00
Zebediah Figura
22a1a478ea tests: Test specifying a UAV address as an in/out parameter to a function. 2023-01-13 17:32:39 +01:00
Francisco Casas
3fbe272659 vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_src. 2023-01-11 16:03:55 +01:00
Francisco Casas
04108c0e21 vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_ir_node. 2023-01-11 16:03:54 +01:00
Francisco Casas
9157a5e73f vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_ctx. 2023-01-11 16:03:52 +01:00
Francisco Casas
8ff3698699 vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_ir_var. 2023-01-11 16:03:51 +01:00
Francisco Casas
0a2732428c vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_struct_field. 2023-01-11 16:03:49 +01:00
Francisco Casas
3a53da7f5b vkd3d-shader/hlsl: Add field-level documentation to struct hlsl_type. 2023-01-11 16:03:48 +01:00
Francisco Casas
cc811dc3c2 vkd3d-shader/hlsl: Rename hlsl_struct_field.modifiers to "storage_modifiers". 2023-01-11 16:03:47 +01:00
Francisco Casas
4dbbb8beb4 vkd3d-shader/hlsl: Rename hlsl_ir_var.modifiers to "storage_modifiers". 2023-01-11 16:03:45 +01:00
Francisco Casas
23bd2d9ad8 vkd3d-shader/hlsl: Rename HLSL_STORAGE_VOLATILE to HLSL_MODIFIER_VOLATILE. 2023-01-11 16:03:43 +01:00
Fabian Maurer
9519fcb562 vkd3d-shader/hlsl: Fix typo (Coverity).
I assume this is a typo, right now it doesn't make sense.

Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
2023-01-11 16:03:16 +01:00
Francisco Casas
5b1030e0cb vkd3d-shader/hlsl: Use add_unary_arithmetic_expr() in intrinsic_pow().
Using add_unary_arithmetic_expr() instead of hlsl_new_unary_expr()
allows the intrinsic to work with matrices.

Otherwise we get:

E5017: Aborting due to not yet implemented feature: Copying from unsupported node type.

because an HLSL_IR_EXPR reaches split_matrix_copies().
2023-01-11 16:02:59 +01:00
Francisco Casas
6770ecbdf4 vkd3d-shader/hlsl: Introduce elementwise_intrinsic_float_convert_args(). 2023-01-11 16:02:57 +01:00
Francisco Casas
9ceed76a9c vkd3d-shader/hlsl: Convert elementwise intrinsics args to the proper common type. 2023-01-11 16:02:56 +01:00
Francisco Casas
86c35fc79d tests: Test for common type conversion for element-wise intrinsics.
Some intrinsics have different rules for the allowed data types than
expressions:

- Vectors and matrices at the same time are not allowed, regardless of
  their dimensions. Even if they have the same number of components.

- Any combination of matrices is always allowed, even those when no
  matrix fits inside another, e.g.:
  float2x3 is compatible with float3x2, resulting in float 2x2.
  The common data type is the min on each dimension.

This is the case for max, pow, ldexp, clamp and smoothstep; which suggest that
it is the case for all intrinsics where the operation is applied element-wise.

Tests for mul() are also added as a counter-example where the operation
is not element-wise.
2023-01-11 16:02:53 +01:00
Francisco Casas
a7bb5a0835 vkd3d-shader/hlsl: Support smoothstep() intrinsic. 2023-01-11 16:02:52 +01:00
Francisco Casas
09e7218539 vkd3d-shader/hlsl: Support transpose() intrinsic. 2023-01-11 16:02:50 +01:00
Henri Verbeet
1eaf73147c Release 1.6. 2022-12-07 16:08:16 +01:00
Henri Verbeet
d5f810068b build: Add the demo shaders to the distribution. 2022-12-07 16:08:16 +01:00
Henri Verbeet
21302c09eb build: Remove $(vkd3d_demos_shaders) from the distribution.
These were removed in commits 3d85d77ced
and 763f7dfa61.
2022-12-07 16:08:11 +01:00
Conor McCarthy
1b11b57652 vkd3d-shader: Introduce DESCRIPTOR_INFO_FLAG_UAV_ATOMICS and always declare UAV images with known type for atomic ops.
Atomic ops on images with Unknown type will cause SPIR-V validation failure,
and assertion failure in Mesa debug builds. D3D12 allows atomics on typed
buffers, and this requires a distinction to be made between UAV reads and
atomic ops.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53874
2022-11-21 18:28:54 +01:00
Conor McCarthy
fc652d2b27 tests: Test a typed UAV buffer in test_atomic_instructions().
Until vkd3d-shader is patched, an atomic op on a typed buffer where
StorageImageReadWithoutFormat is available will cause SPIR-V validation
failure, and assertion in Mesa debug builds, because the image will be
declared with Unknown format.
2022-11-21 18:28:42 +01:00
Francisco Casas
43631bde4d vkd3d-shader/hlsl: Revert expr_compatible_data_types() args names to "t1" and "t2".
Unlike compatible_data_types() and implicit_compatible_data_types(),
this function is intended to be symmetrical. So it makes sense to
preserve the names "t1" and "t2" for the arguments.
2022-11-18 22:29:07 +01:00
Francisco Casas
bd501ce336 vkd3d-shader/hlsl: Don't produce a parse error on empty buffer_body. 2022-11-18 22:29:06 +01:00
Francisco Casas
f100f5b726 vkd3d-shader/hlsl: Check for non-static object references on resource stores. 2022-11-18 22:29:04 +01:00
Francisco Casas
dd1008867e tests: Add missing entry for max.shader_test in Makefile.am. 2022-11-18 22:29:02 +01:00
Francisco Casas
f21693b284 vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
Otherwise, for instance, the added test results in:

debug_hlsl_writemask: Assertion `!(writemask & ~VKD3DSP_WRITEMASK_ALL)' failed.

Which happens in allocate_variable_temp_register() when the variable's
type reg_size is <= 4 but its component count is larger, which may
happen if it contains objects.
2022-11-10 22:48:26 +01:00
Francisco Casas
90e6e418a3 vkd3d-shader/hlsl: Use the base type of the array elements in write_sm1_type(). 2022-11-10 22:48:23 +01:00
Francisco Casas
6873b71304 vkd3d-shader/hlsl: Validate that statics don't contain both resources and numerics. 2022-11-10 22:48:21 +01:00
Francisco Casas
2fa913ccaa vkd3d-shader/hlsl: Validate that extern structs don't contain objects SM < 5.
It is worth noting that these checks should also be included for
declarations inside cbuffers, once they are implemented.
2022-11-10 22:48:19 +01:00
Francisco Casas
3153ce3145 vkd3d-shader/hlsl: Don't allocate object types as constant registers. 2022-11-10 22:48:16 +01:00
Francisco Casas
6f6ba8aa56 vkd3d-shader/hlsl: Properly free new store node memory if init_deref() fails. 2022-11-10 22:48:11 +01:00
Zebediah Figura
3857ca06fa vkd3d-shader/hlsl: Write SM4 dcl_thread_group instructions. 2022-11-08 20:53:08 +01:00
Zebediah Figura
718c79b823 vkd3d-shader/hlsl: Parse the numthreads attribute. 2022-11-08 20:53:04 +01:00
Zebediah Figura
d6799bd5d3 vkd3d-shader/hlsl: Parse function attributes. 2022-11-08 20:53:03 +01:00
Zebediah Figura
da56f41ceb vkd3d-shader/hlsl: Use hlsl_new_synthetic_var() in hlsl_new_func_decl(). 2022-11-08 20:53:01 +01:00
Zebediah Figura
1019bbead6 vkd3d-shader/hlsl: Add a hlsl_fixme() for compute shader thread counts.
In particular so that we don't cause test crashes by outputting invalid compute
shaders.
2022-11-08 20:52:59 +01:00
Zebediah Figura
c0782a9029 tests: Add some tests for HLSL attribute syntax. 2022-11-08 20:52:59 +01:00
Zebediah Figura
4d17758657 tests: Always compile HLSL shaders.
Do not rely on a draw or dispatch command to do this.

This allows more efficiently testing syntax, in cases where testing the actual
shader functionality is not interesting.
2022-11-08 20:52:57 +01:00
Zebediah Figura
520c7457a9 vkd3d-shader/sm4: Use a flat array to store destination types.
This cuts about 12 kB off of the 64-bit build.
2022-11-08 20:52:36 +01:00
Zebediah Figura
4173158c8b vkd3d-shader/sm4: Use a flat array to store source types. 2022-11-08 20:52:34 +01:00
Zebediah Figura
e2aed38509 vkd3d-shader/spirv: Avoid using DXBC-specific definitions. 2022-11-08 20:52:32 +01:00
Zebediah Figura
ba08825ccd vkd3d-shader/sm4: Use the VKD3D_DXBC_MAX_SOURCE_COUNT macro where possible. 2022-11-08 20:52:31 +01:00
Zebediah Figura
35b48a8b04 vkd3d-shader/spirv: Rename struct vkd3d_dxbc_compiler to struct spirv_compiler.
We would like to generate SPIR-V for input formats other than DXBC.

The "vkd3d_" prefix is dropped, partly to make names shorter, and partly to help
clarify what is an internal function.

I prefer avoiding the vkd3d_* prefix on all internal functions, for these
reasons. However, I'm open to restoring it.
2022-11-08 20:52:29 +01:00
Zebediah Figura
58c7c4b806 vkd3d-common: Always prefix debug output with "vkd3d".
Make it clear which library the debug output is coming from, without relying on
the function name including "vkd3d".
2022-11-08 20:52:27 +01:00
Zebediah Figura
c416627e64 vkd3d-shader/hlsl: Propagate copies for resource store instructions. 2022-10-31 22:07:47 +01:00
Zebediah Figura
9bdae4dfaa vkd3d-shader/hlsl: Write SM4 UAV store instructions. 2022-10-31 22:07:45 +01:00
Zebediah Figura
03f9d16047 vkd3d-shader/hlsl: Parse UAV stores. 2022-10-31 22:07:44 +01:00
Zebediah Figura
0a2aaa690e vkd3d-shader/hlsl: Implement typed UAV loads. 2022-10-31 22:07:43 +01:00
Zebediah Figura
12e397de9a vkd3d-shader/hlsl: Write SM4 UAV declarations. 2022-10-31 22:07:41 +01:00
Zebediah Figura
2ec67e0f10 vkd3d-shader/hlsl: Allocate UAVs. 2022-10-31 22:07:40 +01:00
Francisco Casas
4096d453c4 tests: Add a test for storing to a UAV array. 2022-10-31 22:07:40 +01:00
Zebediah Figura
8044fce040 tests: Add more tests for UAV allocation. 2022-10-31 22:07:40 +01:00
Zebediah Figura
52069386c4 tests: Fix constructor declaration in the partial UAV write test.
Make sure the test fails for the right reason. Spotted by Francisco Casas.
2022-10-31 22:07:37 +01:00
Francisco Casas
b711b2d66b tests: Add additional tests for explicit casts with flat matrices and vectors. 2022-10-26 23:53:12 +02:00
Francisco Casas
fcef269347 tests: Add additional tests for explicit casts with matrices. 2022-10-26 23:53:12 +02:00
Francisco Casas
588645a79a tests: Add additional tests for explicit casts with vectors. 2022-10-26 23:53:10 +02:00
Francisco Casas
5af7316a12 vkd3d-shader/hlsl: Support explicit cast between component-wise compatible types. 2022-10-25 21:25:58 +02:00
Francisco Casas
d21fd584b1 vkd3d-shader/hlsl: Support implicit casts between component-wise equal types. 2022-10-25 21:25:57 +02:00
Francisco Casas
1c77811648 vkd3d-shader/hlsl: Remove incorrect criteria for accepting implicit casts. 2022-10-25 21:25:55 +02:00
Francisco Casas
d93ce28995 vkd3d-shader/hlsl: Handle complex types in add_cast().
This extends the support of this function, whether doing broadcasts or
component-wise casts, to struct and array types.
2022-10-25 21:25:51 +02:00
Francisco Casas
fb751b48c5 tests: Add additional tests for implicit casts that should fail. 2022-10-25 21:25:51 +02:00
Francisco Casas
0a345a2b73 vkd3d-shader/hlsl: Rename "t1" and "t2" arguments as "src" and "dst". 2022-10-25 21:25:49 +02:00
Brendan Shanks
963ea98a52 vkd3d-common: Add a Windows implementation of vkd3d_set_thread_name(). 2022-10-25 21:25:38 +02:00
Zebediah Figura
0ef04659c7 vkd3d-shader/hlsl: Parse UAV types. 2022-10-19 21:59:55 +02:00
Zebediah Figura
fea50d243c vkd3d-shader/hlsl: Parse texture index expressions. 2022-10-19 21:59:55 +02:00
Zebediah Figura
7115a94063 vkd3d-shader/hlsl: Cast array indices inside of add_array_load().
Mostly in the interest of keeping the yacc code as simple as possible.
2022-10-19 21:59:55 +02:00
Zebediah Figura
62fd13059b tests: Add a basic shader test for typed UAV loads. 2022-10-19 21:59:55 +02:00
Zebediah Figura
75494a4ae6 tests: Add a basic shader test for compute shaders. 2022-10-19 21:59:29 +02:00
Biswapriyo Nath
6f1f14d97a include: Add the PFN_D3D12_SERIALIZE_ROOT_SIGNATURE typedef. 2022-10-19 21:59:22 +02:00
Biswapriyo Nath
c9198735fd include: Add the PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER typedef. 2022-10-19 21:59:22 +02:00
Giovanni Mascellani
c644244bcd tests: Test float operations with uniform inputs.
The point of the "uniform" variants is to avoid hiding code generation
bugs because of the constant folding optimization.
2022-10-19 21:59:18 +02:00
Giovanni Mascellani
b6a6a927a7 tests: Test sign rules for float modulus. 2022-10-19 21:59:18 +02:00
Giovanni Mascellani
d1da5436f4 tests: Test sign rules for integer division and modulus. 2022-10-19 21:59:18 +02:00
Giovanni Mascellani
0a07ac6f88 vkd3d-shader/hlsl: Lower float modulus.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-10-19 21:59:17 +02:00
Giovanni Mascellani
eb119878f7 vkd3d-shader/hlsl: Lower int modulus.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-10-19 21:59:15 +02:00
Giovanni Mascellani
85856473f6 vkd3d-shader/hlsl: Write SM4 fractional part instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-10-19 21:59:13 +02:00
Francisco Casas
09d7442cb1 tests: Test explicit casts between types that are component-wise compatible. 2022-10-17 17:59:04 +02:00
Francisco Casas
653b109d8f tests: Test implicit casts between types that are equal component-wise. 2022-10-17 17:59:01 +02:00
Francisco Casas
5a1b0dbf44 vkd3d-shader/hlsl: Always go through implicit conversion in assignments.
Otherwise we silently skip some type checks.
2022-10-17 17:58:56 +02:00
Francisco Casas
e56db9bda5 tests: Test for invalid complex broadcasts. 2022-10-17 17:58:56 +02:00
Francisco Casas
791f8a8faa tests: Rename structs for readability in broadcast test. 2022-10-17 17:58:53 +02:00
Francisco Casas
3bae0c92c7 tests: Set ULPs to 2 in normalize() test.
Otherwise the test fails on a NVIDIA GeForce GTX 1050 Ti GPU.

The error being:
shader_runner:535:Section [test], line 9: Test failed: Got {2.72165507e-01, 4.08248246e-01, 5.44331014e-01, 6.80413783e-01}, expected {2.72165537e-01, 4.08248305e-01, 5.44331074e-01, 6.80413842e-01} at (0, 0).
2022-10-17 17:58:50 +02:00
Francisco Casas
ab8f418207 tests: Add missing backslash to restore skipped tests.
Tests after this missing backslash are not being executed since
e9829fdc65.
2022-10-17 17:58:35 +02:00
Giovanni Mascellani
eb7b594002 vkd3d-shader/hlsl: Lower int division. 2022-10-17 17:58:17 +02:00
Giovanni Mascellani
4c13ae5764 vkd3d-shader/hlsl: Lower int absolute value. 2022-10-17 17:58:14 +02:00
Giovanni Mascellani
ef4990d996 tests: Test int absolute value. 2022-10-17 17:58:14 +02:00
Giovanni Mascellani
5442f4236c vkd3d-shader/hlsl: Write SM4 square root instructions. 2022-10-17 17:58:12 +02:00
Giovanni Mascellani
8e5aefb309 vkd3d-shader/hlsl: Parse length() intrinsic. 2022-10-17 17:58:09 +02:00
Giovanni Mascellani
a43242a3e6 tests: Test length() intrinsic. 2022-10-17 17:58:09 +02:00
Zebediah Figura
303ce66cef include: Use __MINGW_PRINTF_FORMAT when compiling with MinGW.
The default for MinGW is always ms_printf rather than gnu_printf, but if we are
using ucrtbase or ANSI stdio, we want gnu_printf.
2022-10-17 17:57:56 +02:00
Zebediah Figura
6b45f290f7 vkd3d-shader/hlsl: Pass a location pointer to init_node().
Instead of a flat location structure.
2022-10-12 21:58:03 +02:00
Zebediah Figura
20fc4375ad vkd3d-shader/hlsl: Introduce a hlsl_new_expr() helper. 2022-10-12 21:58:01 +02:00
Zebediah Figura
1e10b5e616 vkd3d-shader/hlsl: Write SM4 reinterpret instructions. 2022-10-12 21:57:59 +02:00
Zebediah Figura
2d4d2e1244 vkd3d-shader/hlsl: Parse the asuint() intrinsic. 2022-10-12 21:57:57 +02:00
Zebediah Figura
eb70f1aeb5 tests: Add a test for asuint(). 2022-10-12 21:57:55 +02:00
Giovanni Mascellani
3d85d77ced demos/gears: Recompile shaders with our compiler. 2022-10-10 21:13:50 +02:00
Giovanni Mascellani
763f7dfa61 demos/triangle: Recompile shaders with our compiler. 2022-10-10 21:13:06 +02:00
Giovanni Mascellani
1655d309bd vkd3d-shader/hlsl: Write SM4 rsq instructions. 2022-10-10 21:13:04 +02:00
Giovanni Mascellani
d600f0488e vkd3d-shader/hlsl: Parse normalize intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-10-10 21:13:03 +02:00
Giovanni Mascellani
4ab1a4cef5 tests: Test normalize() intrinsic. 2022-10-10 21:13:01 +02:00
Giovanni Mascellani
73cf9dee8a include: Add missing vkd3d_shader_compile() transformations and chained structures. 2022-09-28 19:11:13 +02:00
Zebediah Figura
b74a546034 vkd3d-shader/hlsl: Use hlsl_new_constant() in more places. 2022-09-28 19:11:08 +02:00
Zebediah Figura
f8da100052 vkd3d-shader/hlsl: Use hlsl_new_int_constant() in the "primary_expr" rule. 2022-09-28 19:11:05 +02:00
Zebediah Figura
3fc2fdc37f vkd3d-shader/hlsl: Introduce a hlsl_new_bool_constant() helper. 2022-09-28 19:11:02 +02:00
Zebediah Figura
4c5fd9c7b9 vkd3d-shader/hlsl: Introduce a hlsl_new_float_constant() helper. 2022-09-28 19:10:58 +02:00
Zebediah Figura
15a0b44ada vkd3d-shader/hlsl: Pass the arguments to hlsl_new_resource_load() as an indirect structure.
The function has far too many arguments, including multiple different arguments
with the same type. Use a structure for clarity and to avoid errors.

Merge hlsl_new_sample_lod() into hlsl_new_resource_load() accordingly.
2022-09-27 20:14:54 +02:00
Zebediah Figura
fb724d60e3 vkd3d-shader/hlsl: Make the source parameter to hlsl_copy_deref() const. 2022-09-27 20:14:53 +02:00
Zebediah Figura
e3123f5bd0 vkd3d-shader/hlsl: Pass only a template string to hlsl_new_synthetic_var().
Synthesize the internal name from the template inside of this function.
2022-09-27 20:14:51 +02:00
Zebediah Figura
991cddd139 vkd3d-shader/hlsl: Handle failure from hlsl_copy_deref(). 2022-09-27 20:14:49 +02:00
Zebediah Figura
32999fc12b vkd3d-common: Tweak the WARN for VKD3D_ERROR_INVALID_SHADER.
vkd3d-shader does not consume only bytecode anymore.
2022-09-27 20:14:42 +02:00
Zebediah Figura
27a6963d6a vkd3d: Avoid an unused variable warning when building for Win32. 2022-09-27 20:14:35 +02:00
Giovanni Mascellani
d5fd309ef8 vkd3d: Add a macro to mark unreachable code.
This should silence warnings about some branches non returning any value
without requiring additional "return 0" statement or similar.

Also, in theory this might enable to compiler to optimize the program
a little bit more, though that's unlikely to have any measurable effect.
2022-09-27 20:14:27 +02:00
Henri Verbeet
56b2f56b86 Release 1.5. 2022-09-21 16:47:49 +02:00
Henri Verbeet
d484a08d10 vkd3d-shader: Add version information to enum vkd3d_shader_compile_option_typed_uav. 2022-09-21 16:47:49 +02:00
Henri Verbeet
6381bc4857 vkd3d-shader: Add a VKD3D_FORCE_32_BIT_ENUM element to enum vkd3d_shader_api_version. 2022-09-21 16:47:49 +02:00
Henri Verbeet
1e559cd51d vkd3d: Add a VKD3D_FORCE_32_BIT_ENUM element to enum vkd3d_api_version. 2022-09-21 16:47:47 +02:00
Zebediah Figura
b7c94b0213 tests: Check for failure from init_test_context() in the d3d11 runner. 2022-09-19 21:51:30 +02:00
Zebediah Figura
53d6966a5d tests: Mark test_hull_shader_relative_addressing() as broken on radv.
Broken for me with "AMD Radeon RX 560 Series (RADV POLARIS11)" (1002:67ef) but works with llvmpipe; Mesa 22.2.0-rc3.
2022-09-19 21:51:30 +02:00
Zebediah Figura
7393e6ed13 tests: Transition back to D3D12_RESOURCE_STATE_RENDER_TARGET in test_bufinfo_instruction(). 2022-09-19 20:13:57 +02:00
Francisco Casas
8e07423ba1 vkd3d-shader/hlsl: Add offset parameter to 'Load' method.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
609632279f vkd3d-shader/hlsl: Properly check argument count in gather methods. 2022-08-23 15:57:54 -05:00
Francisco Casas
32e6f594f2 vkd3d-shader/hlsl: Properly check argument count in SampleLevel method.
Also, TextureCube and TextureCubeArray don't support the offset
argument, so this check is updated here too.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
15b19b15c0 vkd3d-shader/hlsl: Use proper dimensions on SampleLevel method offset parameter. 2022-08-23 15:57:54 -05:00
Francisco Casas
c4be4a4ebf vkd3d-shader/hlsl: Properly check argument count in Sample method.
Also, TextureCube and TextureCubeArray don't support the offset
argument, so this check is updated.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
562f647c2a vkd3d-shader/hlsl: Use proper dimensions on gather methods offset parameter. 2022-08-23 15:57:54 -05:00
Francisco Casas
652906aea7 vkd3d-shader/hlsl: Use proper dimensions on Sample method offset parameter.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Zebediah Figura
d6f45b730f vkd3d-shader/hlsl: Parse the SampleLevel method. 2022-08-23 15:57:54 -05:00
Francisco Casas
3d9baef321 vkd3d-shader/hlsl: Support initialization of implicit size arrays.
HLSL_ARRAY_ELEMENTS_COUNT_IMPLICIT (zero) is used as a temporal value
for elements_count for implicit size arrays.
This value is replaced by the correct one after parsing the initializer.

In case the implicit array is not initialized correctly, hlsl_error()
is called but the array size is kept at 0. So the rest of the code
must handle these cases.

In shader model 5.1, unlike in 5.0, declaring a multi-dimensional
object-type array with the last dimension implicit results in
an error. This happens even in presence of an initializer.

So, both gen_struct_fields() and declare_vars() first check if the
shader model is 5.1, the array elements are objects, and if there is
at least one implicit array size to handle the whole type as an
unbounded resource array.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
96a7236700 vkd3d-shader/hlsl: Set objects' register size back to 0.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
6989266e76 vkd3d-shader/hlsl: Check for non-static object references.
It is responsibility of the shader's programmer to ensure that
object references can be solved statically.

Resource arrays for ps_5_1 and vs_5_1 are an exception which is not
properly handled yet. They probably deserve a different object type.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
1bba18aa75 vkd3d-shader/hlsl: Invalidate components more precisely in copy propagation.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
b5b08bd8a0 vkd3d-shader/hlsl: Replace register offsets with index paths in copy propagation.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
10bd0c48f8 vkd3d-shader/hlsl: Print halfs in dump_ir_constant().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
a8b77b85ca vkd3d-shader/hlsl: Skip implicit conversion if types are equal.
Otherwise we get false in implicit_compatible_data_types() when passing
types that are equal but not convertible according to
convertible_data_type(); e.g. getting:

"Can't implicitly convert from Texture2D<float4> to Texture2D<float4>."

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
732f1737f4 vkd3d-shader/hlsl: Set component count for objects to 1.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
e9829fdc65 tests: Test object references.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
f3432966da vkd3d-shader/hlsl: Emit a fixme on complex resource load object derefs.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Francisco Casas
f843a7babb vkd3d-shader/hlsl: Rename 'inner_type' to 'element_type' in function name.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
2022-08-23 15:57:54 -05:00
Martin Storsjö
1c61b20616 vkd3d-shader/spirv: Fix the signature of vkd3d_spirv_build_op_type_image.
Don't assume that enums and uint32_t parameters are identical. Clang
16 changes the diagonstic for incompatible function pointer types
from a warning into an error by default.

This fixes the following error, when built (for aarch64, but probably
also for other architectures) in MSVC mode:

../src/libs/vkd3d/libs/vkd3d-shader/spirv.c:1083:13: error: incompatible function pointer types passing 'uint32_t (struct vkd3d_spirv_builder *, uint32_t, SpvDim, uint32_t, uint32_t, uint32_t, uint32_t, SpvImageFormat)' (aka 'unsigned int (struct vkd3d_spirv_builder *, unsigned int, enum SpvDim_, unsigned int, unsigned int, unsigned int, unsigned int, enum SpvImageFormat_)') to parameter of type 'vkd3d_spirv_build7_pfn' (aka 'unsigned int (*)(struct vkd3d_spirv_builder *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)') [-Wincompatible-function-pointer-types]
            vkd3d_spirv_build_op_type_image);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/libs/vkd3d/libs/vkd3d-shader/spirv.c:612:68: note: passing argument to parameter 'build_pfn' here
        SpvOp op, const uint32_t *operands, vkd3d_spirv_build7_pfn build_pfn)
                                                                   ^

Signed-off-by: Martin Storsjö <martin@martin.st>
2022-08-15 21:59:38 +02:00
Francisco Casas
577014c017 vkd3d-shader/hlsl: Replace register offsets with index paths in split copies.
hlsl_new_store() and hlsl_new_load() are deleted, so now there are no more
direct ways to create derefs with offsets in hlsl.c and hlsl.h.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:34:19 +02:00
Francisco Casas
d7d2fe145f vkd3d-shader/hlsl: Replace register offsets with index paths in input/output copies.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:34:08 +02:00
Francisco Casas
1b69adbd13 vkd3d-shader/hlsl: Add input and output variables using the same function.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:34:05 +02:00
Francisco Casas
c572adbf2a vkd3d-shader/hlsl: Move register offset functions to hlsl_codegen.c.
This can be done now, to ensure that register offsets are no longer used
in hlsl.c and hlsl.h.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:34:01 +02:00
Francisco Casas
349aab2a6a vkd3d-shader/hlsl: Replace register offsets with index paths in resource loads initialization.
At this point, the parse code is free of offsets; it only uses index
paths.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:58 +02:00
Francisco Casas
5b664c7a5c vkd3d-shader/hlsl: Introduce hlsl_new_store_index().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:55 +02:00
Francisco Casas
f3289e1661 vkd3d-shader/hlsl: Introduce hlsl_new_store_component().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:51 +02:00
Francisco Casas
7515b8255b vkd3d-shader/hlsl: Print index paths in dump_deref().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:46 +02:00
Francisco Casas
4fede46c9a vkd3d-shader/hlsl: Replace register offsets with index paths in load initializations.
The transform_deref_paths_into_offsets pass turns these index paths back
into register offsets.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:37 +02:00
Zebediah Figura
a2996c2d59 include: Add list_move_after() and list_move_before().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:33 +02:00
Francisco Casas
2dcfc888fb vkd3d-shader/hlsl: Unify type minor/major size functions.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:29 +02:00
Francisco Casas
039b69ace9 vkd3d-shader/hlsl: Introduce add_load_index().
At this point add_load() is split into add_load_component() and
add_load_index(); register offsets are hidden for these functions.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:25 +02:00
Francisco Casas
a32157f586 vkd3d-shader/hlsl: Introduce add_load_component().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
2022-08-10 21:33:19 +02:00
Giovanni Mascellani
4112c36076 vkd3d: Do not store the latch bit in an object that could be overwritten.
Once a event is signaled, the corresponding struct vkd3d_waiting_event
entry is considered dead and could be overwritten, so it's not safe to
keep a pointer to it in d3d12_fence_SetEventOnCompletion(). Instead,
keep the latch bit in d3d12_fence_SetEventOnCompletion() and put a
pointer to it in struct vkd3d_waiting_event.
2022-08-09 22:14:30 +02:00
Conor McCarthy
4afe69d04a vkd3d: Send typed UAV unknown format read support info to vkd3d-shader.
Fixes reflections in Control appearing with only their red component.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52146
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
2022-08-09 22:14:28 +02:00
Conor McCarthy
971ab01add vkd3d: Check specific formats for typed UAV load feature support.
Vulkan's shaderStorageImageExtendedFormats includes more formats than are
required by D3D12.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
2022-08-09 22:14:28 +02:00
Conor McCarthy
3dbd2ceca6 vkd3d-shader: Introduce a compile option to use Unknown format for typed UAV loads.
Specifying R32 for UAVs created with a vector format, e.g. R32G32B32A32_FLOAT,
results in only the red being loaded/stored, potentially causing images to
contain only the red component.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
2022-08-09 22:14:28 +02:00
Conor McCarthy
d7554accbc tests: Test float4 UAV buffer load/store.
This currently fails if the shader loads from the UAV, because it causes
vkd3d-shader to specify the R32f format instead of Unknown.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
2022-08-09 22:14:08 +02:00
Giovanni Mascellani
5168929edc vkd3d: Remove unused field fence_destruction_cond. 2022-08-08 18:55:22 +02:00
Giovanni Mascellani
5749ae4700 vkd3d: Unlock fence worker mutex before exiting.
Pthread mandates that a mutex must be unlocked before being destroyed.
In pratice I doubt this make a difference on any platform (certainly
it doesn't on Linux), but let's comply to standards.
2022-08-08 18:55:19 +02:00
Stefan Dösinger
aae4e31ba8 vkd3d-shader: Initialize counter_var_info unconditionally. 2022-07-25 21:09:30 +02:00
Conor McCarthy
3b579f6fe7 vkd3d: Delay unlocking the fence until after the blocked command queue op is written.
An unblocking Signal() on the CPU must be handled after the blocked op
is written, or the op will not be flushed until the next signal.

The device is locked while the fence is already locked, so the fence must
never be locked after locking the device. Currently this never occurs.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-20 22:28:53 +02:00
Conor McCarthy
c1071fda52 vkd3d: Delay adding a command queue to the blocked list until after the op is written.
Otherwise the following sequence can occur:
1. A command queue is added to the blocked list during a Wait() call.
2. An unblocking Signal() occurs on the CPU in another thread, flushing the
   blocked ops, but as no op has been written, the queue is removed from the
   blocked list.
3. The blocked op is written.
3. Another op is queued and the queue is not re-added to the blocked
   list because this only happens for the first op.

World of Warcraft triggers this issue.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-20 22:28:49 +02:00
Francisco Casas
a7a4eb95e5 vkd3d-shader/hlsl: Introduce function to clean up hlsl_derefs.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-18 22:07:42 +02:00
Francisco Casas
b9435fb1ff vkd3d-shader/hlsl: Pass field to add_record_load() via index.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-18 22:07:33 +02:00
Francisco Casas
300a6c8fc3 vkd3d-shader/hlsl: Handle errors in recursive calls in hlsl_type_clone().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-18 22:07:30 +02:00
Zebediah Figura
e5905bbf0f vkd3d-shader/hlsl: Store the struct fields as an array.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-18 22:07:26 +02:00
Giovanni Mascellani
2ec6d4d3ff tests: Test arithmetic int operations without constant operands.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 22:43:30 +02:00
Giovanni Mascellani
448f856c09 vkd3d-shader/hlsl: Write SM4 logic or instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 22:43:28 +02:00
Giovanni Mascellani
15e4b9bafb vkd3d-shader/hlsl: Write SM4 logic and instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 22:43:25 +02:00
Giovanni Mascellani
02d92c9af6 vkd3d-shader/hlsl: Write SM4 logic not instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 22:43:22 +02:00
Giovanni Mascellani
3e88a46d4c vkd3d-shader/hlsl: Write SM4 casts from bool.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-07-05 22:43:18 +02:00
Giovanni Mascellani
98ebe9b69c vkd3d-shader/hlsl: Fold constant integral bitwise or.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-28 22:20:27 +02:00
Giovanni Mascellani
06c22b6a65 vkd3d-shader/hlsl: Fold constant integral bitwise and.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-28 22:20:24 +02:00
Giovanni Mascellani
4016ddff77 vkd3d-shader/hlsl: Fold constant integral bitwise xor.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-28 22:20:22 +02:00
Giovanni Mascellani
4a692dca4e vkd3d-shader/hlsl: Fold constant integral min().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-28 22:20:17 +02:00
Giovanni Mascellani
8cb865d65a vkd3d-shader/hlsl: Fold constant integral max().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-28 22:20:11 +02:00
Zebediah Figura
0ddaa80616 vkd3d-shader/hlsl: Fold constant swizzles.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-28 22:20:08 +02:00
Giovanni Mascellani
7682da58a8 vkd3d-shader/hlsl: Parse lerp() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:33 +02:00
Zebediah Figura
bb32ffad18 vkd3d-shader/hlsl: Parse the ldexp() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:31 +02:00
Giovanni Mascellani
c7198bc964 vkd3d-shader/hlsl: Write SM4 dot product instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:28 +02:00
Giovanni Mascellani
58d017ccc1 vkd3d-shader/hlsl: Parse dot() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:26 +02:00
Giovanni Mascellani
80586bf7a9 tests: Test lerp() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:24 +02:00
Giovanni Mascellani
0462d81484 tests: Test ldexp() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:22 +02:00
Giovanni Mascellani
7b6e782139 tests: Test dot() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-27 21:23:19 +02:00
Henri Verbeet
9d4df5e704 Release 1.4.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-22 18:31:51 +02:00
Henri Verbeet
2cad32d7fa build: Add tests/vulkan_procs.h to the distribution.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-22 17:28:38 +02:00
Henri Verbeet
780da51b65 build: Add the d3d9 and d3d11 shader runners to the distribution.
We don't want to add these to tests_shader_runner_SOURCES, because
they're only supposed to get built for the "crosstest" target.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-22 17:28:35 +02:00
Henri Verbeet
4093fe49bf vkd3d-compiler: Default to VKD3D_SHADER_SOURCE_HLSL when the source size is smaller than a uint32_t.
For example, when the input is an empty file. Leaving the source type as
VKD3D_SHADER_SOURCE_NONE would cause (potential) subsequent
get_source_type_info() calls to return NULL, resulting in a segmentation
fault.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-22 17:28:33 +02:00
Biswapriyo Nath
a021b0a7d3 include: Add ID3D12Device3 declaration in vkd3d_d3d12.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-21 20:16:35 +02:00
Biswapriyo Nath
f9921fc691 include: Add more D3D12_HEAP_FLAGS in vkd3d_d3d12.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-21 20:16:30 +02:00
Biswapriyo Nath
b7fbac1c09 include: Add ID3D12Device2 declaration in vkd3d_d3d12.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-10 11:59:57 +02:00
Biswapriyo Nath
694e5c865b include: Add ID3D12SharingContract interface declarations in vkd3d_d3d12sdklayers.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-10 11:59:52 +02:00
Biswapriyo Nath
abd82c9e6d include: Add ID3D12DebugDevice interface declarations in vkd3d_d3d12sdklayers.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-10 11:59:47 +02:00
Giovanni Mascellani
10917a7f47 vkd3d-shader/hlsl: Parse the mul() intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:29 +02:00
Giovanni Mascellani
62fa53f9b6 vkd3d-shader/hlsl: Split matrix operations.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:27 +02:00
Giovanni Mascellani
3a755cb0e2 vkd3d-shader/hlsl: Lower matrix casts.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:22 +02:00
Giovanni Mascellani
41df40b4ed tests: Test how matrix types interact with semantics.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:18 +02:00
Zebediah Figura
f821a1b29a tests: Add a test for multiple render targets.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:12 +02:00
Zebediah Figura
08e2a8e9bb tests: Add a basic shader test for UAVs.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:09 +02:00
Zebediah Figura
2b69ee67bd tests/shader_runner: Make the render target into a resource.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:06 +02:00
Zebediah Figura
d2d29d1b88 tests/shader_runner: Create the render pass and framebuffer in vulkan_runner_draw().
Prepare to allow for dynamically changing the bound attachments in consecutive
draw calls.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:13:03 +02:00
Zebediah Figura
ac404afe93 tests/shader_runner: Allow creating UAV resources.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-09 19:12:59 +02:00
Giovanni Mascellani
76bb1b7439 vkd3d-shader/hlsl: Have add_expr() return hlsl_ir_node*.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-08 18:51:38 +02:00
Giovanni Mascellani
e37ac63813 vkd3d-shader/hlsl: Introduce add_cast() helper.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-08 18:51:32 +02:00
Giovanni Mascellani
8cd4995958 vkd3d-shader/hlsl: Allocate enough space for temporary matrices.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-08 18:51:28 +02:00
Zebediah Figura
ea38ecc4ff vkd3d-shader/hlsl: Split matrices into multiple variables in prepend_input_copy().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-08 18:51:03 +02:00
Zebediah Figura
d2d4bc24e9 vkd3d-shader/hlsl: Split matrices into multiple variables in append_output_copy().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-08 18:50:52 +02:00
Biswapriyo Nath
4647209f27 include: Add ID3D12Debug interface declarations in vkd3d_d3d12sdklayers.idl.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-08 18:50:40 +02:00
Zebediah Figura
14f77294b1 vkd3d-shader/spirv: Do not print a warning for VKD3D_SHADER_COMPILE_OPTION_API_VERSION.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-07 19:39:52 +02:00
Zebediah Figura
64b784dbb9 vkd3d-utils: Allow writing log output via a custom callback.
When using PE vkd3d through Wine, debug output may be swallowed by writing to
Win32 stderr. Avoid this by providing a way to hook up vkd3d log output to Wine
output.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-07 19:39:01 +02:00
Zebediah Figura
46b1266809 vkd3d: Allow writing log output via a custom callback.
When using PE vkd3d through Wine, debug output may be swallowed by writing to
Win32 stderr. Avoid this by providing a way to hook up vkd3d log output to Wine
output.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-07 19:38:57 +02:00
Zebediah Figura
174172887b vkd3d-shader: Allow writing log output via a custom callback.
When using PE vkd3d through Wine, debug output may be swallowed by writing to
Win32 stderr. Avoid this by providing a way to hook up vkd3d log output to Wine
output.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-07 19:38:49 +02:00
Giovanni Mascellani
6ff6cb4ed2 tests/shader_runner: Allow probing a single component.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-31 21:53:26 +02:00
Zebediah Figura
4a9d675c49 tests/shader_runner: Move the check_readback_data_vec4() call to shader_runner.c.
Split the probe_vec4() directive into get_rt_readback() and release_readback().

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-31 21:53:21 +02:00
Zebediah Figura
e6ea409bbf tests: Move check_readback_data_vec4() to utils.h.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-31 21:53:16 +02:00
Zebediah Figura
1e8e0650c9 tests/shader_runner: Use the resource_readback structure in the Vulkan shader runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-31 21:53:11 +02:00
Zebediah Figura
ccdb702d53 tests/shader_runner: Use the common resource_readback structure in d3d9 and d3d11 readback structures.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-31 21:53:08 +02:00
Zebediah Figura
b5e773058c tests: Separate generic and d3d12-specific readback fields.
Move the "resource" field to a new "d3d12_resource_readback" structure
encapsulating struct resource_readback.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-31 21:52:49 +02:00
Giovanni Mascellani
bb49bdba6a vkd3d-shader/hlsl: Allow majority modifiers on function declarations.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-13 18:21:15 +02:00
Giovanni Mascellani
e39559690b vkd3d-shader/hlsl: Offset register id for input/ouput variables.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-13 18:21:12 +02:00
Francisco Casas
1fc44e7be4 tests: Test textures in initializers.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-13 18:20:45 +02:00
Francisco Casas
719e1bad1d tests: Add additional subtests to implicit array initialization.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-13 18:20:43 +02:00
Conor McCarthy
8cae046803 vkd3d: Map timeline semaphore values to fence virtual values and buffer out-of-order waits.
Strictly increasing timeline values must be mapped to fence virtual values
to avoid invalid use of Vulkan timeline semaphores. In particular, non-
increasing values and value jumps of >= 4G are permitted in d3d12.

Different virtual D3D12 command queues may map to the same Vulkan queue.
If a wait of value N is submitted on one command queue, and then a signal
for >= N is submitted on another, but they are sent to the same Vk queue,
the wait will never complete. The solution is to buffer out-of-order waits
and any subsequent queue commands until an unblocking signal value is
submitted to a different D3D12 queue, or signaled on the CPU.

Buffering out-of-order waits also fixes the old fence implementation so it
is fully functional, though a bit less efficient than timeline semaphores.

Based in part on vkd3d-proton patches by Hans-Kristian Arntzen. Unlike the
vkd3d-proton implementation, this patch does not use worker threads for
submissions to the Vulkan queue.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-13 18:20:10 +02:00
Conor McCarthy
a5c63dc4b9 vkd3d: Always destroy created objects on d3d12_fence_init() failure.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-13 18:20:08 +02:00
Matteo Bruni
228f7ab5cd vkd3d-shader/hlsl: Handle over/underflow when parsing integer literals.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-12 19:33:56 +02:00
Andrey Gusev
a9dc39dd92 include: Add more D3D12_ROOT_SIGNATURE_FLAGS enums.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-12 19:33:01 +02:00
Giovanni Mascellani
e6ce077ad4 vkd3d-shader/hlsl: Handle loops in copy propagation.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-04 18:32:35 +02:00
Giovanni Mascellani
ec85eb538b vkd3d-shader/hlsl: Remove the location parameter from initialize_var_components().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-04 18:32:26 +02:00
Giovanni Mascellani
9ad6ad7065 vkd3d-shader/hlsl: Use a more sensible source location in add_constructor().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-04 18:32:22 +02:00
Conor McCarthy
07e38212ec vkd3d: Replace the signaled semaphore list with a resizable array.
Order does not need to be preserved here, and another function will add
to this array when mapped timeline semaphores are implemented.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 20:19:35 +02:00
Conor McCarthy
488722b9b5 vkd3d: Create one fence worker thread per command queue.
Simplifies the handling of GPU waits, and in vkd3d-proton is reported
to increase performance when support for multiple Vulkan queues is
enabled, because it avoids the problem of fences being signaled while
they sit in the pending buffer waiting to be moved to the wait buffer.

Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 20:19:32 +02:00
Conor McCarthy
34e7b87966 vkd3d: Introduce an internal refcount to d3d12_fence to replace the thread waiting mechanism.
Simplifies the preservation of fence objects until worker threads are
done with them, and will be needed when threaded queue submission is
added.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 20:19:29 +02:00
Giovanni Mascellani
6167b3a4e2 vkd3d-shader/hlsl: Handle branches in copy propagation.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:30:21 +02:00
Giovanni Mascellani
38d7913f5f vkd3d-shader/hlsl: Allow storing to matrices.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:30:18 +02:00
Francisco Casas
1240a947d2 tests: Test initialization of implicit size arrays.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:30:04 +02:00
Francisco Casas
4b4537b874 tests: Test complex broadcasts.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:30:00 +02:00
Francisco Casas
a58c0e7c9d vkd3d-shader/hlsl: Detect missing loads on rhs when splitting copies of non-numeric types.
Otherwise we can get failed assertions:
assert(node->type == HLSL_IR_LOAD);
because broadcasts to these types are not implemented yet.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-02 11:29:54 +02:00
Zebediah Figura
f34db84c62 configure: Allow specifying the Vulkan library path with VULKAN_LIBS.
Do not define it for the vkd3d build, but restore support for overriding it as a
configure argument.

This partially reverts 99a3adcc19.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52915
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:46:18 +02:00
Giovanni Mascellani
cf7cf05cb7 vkd3d-shader/hlsl: Parse matrix constructors.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:45 +02:00
Giovanni Mascellani
ff3ec5d4a5 vkd3d-shader/hlsl: Support matrix indexing.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:43 +02:00
Francisco Casas
246ff14511 vkd3d-shader/hlsl: Support all complex initalizers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:41 +02:00
Giovanni Mascellani
e2b4f01a9f vkd3d-shader/hlsl: Simplify flow in add_array_load().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:39 +02:00
Giovanni Mascellani
c5c50a8b9b vkd3d-shader/hlsl: Do not generate useless swizzles.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:37 +02:00
Giovanni Mascellani
6b6ff48ece vkd3d-shader/hlsl: Test the INT_MIN / -1 constant folding special case.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:35 +02:00
Giovanni Mascellani
4d181bc622 vkd3d-shader/hlsl: Do not allow NaNs in SM1.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 21:45:32 +02:00
Zebediah Figura
eb2c3b0b90 tests: Test depth comparison sampling with cubemap array textures.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-26 16:02:13 +02:00
Zebediah Figura
9839850b87 vkd3d-shader: Remove the workaround for sample_c.
The current workaround is broken for texture cube arrays, which already have 4
components.

Sampling with the components not packed together apparently succeeds with newer
NVidia drivers, so just remove the workaround. Tested with 470.103.01 on a GTX
1060.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52886
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-26 16:02:09 +02:00
Francisco Casas
535bbfa6f8 tests: Test matrix initialization.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:59 +02:00
Giovanni Mascellani
74273ccadd vkd3d-shader/hlsl: Do not handle vector types in major_size() and minor_size().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:55 +02:00
Giovanni Mascellani
3bbb90a3cb tests: Test matrix copying with a non-square matrix.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:49 +02:00
Giovanni Mascellani
d2ba10a696 vkd3d-shader/hlsl: Update split_copy()'s introductory comment.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:39 +02:00
Giovanni Mascellani
0e8098ccfe vkd3d-shader/hlsl: Add trailing dots to warning messages.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:23 +02:00
Giovanni Mascellani
c680b674d6 vkd3d-shader/hlsl: Do not generate infinities in SM1.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:17 +02:00
Conor McCarthy
6b893b597b vkd3d: Prevent a null pointer dereference when a descriptor is not a UAV.
Fixes crashes in Shadow of the Tomb Raider, GRID 2019 and probably others.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:12:04 +02:00
Zebediah Figura
cab16fe903 configure: Allow specifying the shared object name of the Vulkan library at configure time.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:11:55 +02:00
Zebediah Figura
99a3adcc19 configure: Remove the no longer used check for VULKAN_LIBS.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:11:47 +02:00
Zebediah Figura
f9c7b123d8 demos: Load libvulkan dynamically.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-25 22:11:43 +02:00
Giovanni Mascellani
e38ee49e99 vkd3d-shader/hlsl: Split matrix copies.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 23:02:14 +02:00
Giovanni Mascellani
d1fac2660c vkd3d-shader/hlsl: Support vector indexing.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 23:02:11 +02:00
Zebediah Figura
aaa743033a vkd3d-shader/hlsl: Return bool from add_record_load() and add_array_load().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 23:02:00 +02:00
Zebediah Figura
367bd15ec5 tests: Simplify "probe" directive syntax and parsing a bit.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 23:01:04 +02:00
Zebediah Figura
f187b48792 tests: Mark individual invalid shaders as todo.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 23:00:57 +02:00
Zebediah Figura
0929ec7462 tests: Load libvulkan dynamically in d3d12_crosstest.h.
We would like to allow overriding the soname of libvulkan, in which case the
tests and demos should respect that override.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 16:41:46 +02:00
Zebediah Figura
beffe5f367 tests: Load libvulkan dynamically in shader_runner_vulkan.c.
We would like to allow overriding the soname of libvulkan, in which case the
tests and demos should respect that override.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 16:41:44 +02:00
Zebediah Figura
bcad6d6997 tests: Load libvulkan dynamically in vkd3d_api.c.
We would like to allow overriding the soname of libvulkan, in which case the
tests and demos should respect that override.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 16:41:42 +02:00
Zebediah Figura
d087b9ea5b include: Implement vkd3d_dl*() wrappers for Win32 platforms.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 16:41:39 +02:00
Zebediah Figura
a58e713314 include: Move vkd3d_dl*() helpers to vkd3d_common.h.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-20 16:41:37 +02:00
Giovanni Mascellani
16da0b3300 tests: Add another vector indexing test.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:24 +02:00
Giovanni Mascellani
564883a201 tests: Test matrix indexing.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:22 +02:00
Giovanni Mascellani
2b23b7329c vkd3d-shader/hlsl: Fold constant modulus.
This commit includes work by Francisco Casas.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:20 +02:00
Giovanni Mascellani
40b299c727 vkd3d-shader/hlsl: Fold constant division.
This commit includes work by Francisco Casas.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:17 +02:00
Francisco Casas
aefadb87b6 vkd3d-shader/hlsl: Support complex numeric initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:15 +02:00
Francisco Casas
9c518b45d1 vkd3d-shader/hlsl: Handle static struct initializer instructions.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:13 +02:00
Francisco Casas
7cee81cf3e vkd3d-shader/hlsl: Remove instruction list parameter in struct_var_initializer().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:11 +02:00
Zebediah Figura
c3a5cd7c13 tests: Do not abort when an invalid shader test fails.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:09 +02:00
Zebediah Figura
98a36dfa41 tests: Mark individual test directives as todo.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:06 +02:00
Zebediah Figura
c0562e2a1e tests: Introduce support for marking individual test directives as todo.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:04 +02:00
Zebediah Figura
26b89cc338 tests: Skip probe directives if the last render failed.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-15 21:18:01 +02:00
Zebediah Figura
e3f78706ec tests: Introduce a Vulkan shader runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-12 19:00:19 +02:00
Zebediah Figura
3e8b5a9fc3 tests: Store samplers in a fixed-size array.
We will need to allocate some structures in the Vulkan backend; this is easier
if we don't need to worry about allocating them dynamically.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-12 19:00:16 +02:00
Zebediah Figura
e208d87847 tests: Store resources in a fixed-size array.
We will need to allocate some structures in the Vulkan backend; this is easier
if we don't need to worry about allocating them dynamically.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-12 19:00:14 +02:00
Zebediah Figura
02182ce4f7 tests: Transition back to D3D12_RESOURCE_STATE_RENDER_TARGET in d3d12_runner_probe_vec4().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-12 19:00:11 +02:00
Francisco Casas
7d31fd1788 vkd3d-shader/hlsl: Ensure that SM4 endif has 0 source registers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-11 22:45:59 +02:00
Zebediah Figura
93c6fd0eb0 tests: Introduce a D3D9 shader runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-08 11:49:33 +02:00
Zebediah Figura
90b4cbc1f2 tests: Try to avoid using SV_Position from shaders which can be tested with SM1.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-08 11:49:31 +02:00
Zebediah Figura
d2872fa33a tests: Specify the arguments to "probe rect" as right and bottom, instead of width and height.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-08 11:49:27 +02:00
Zebediah Figura
83a3de8529 tests: Allow skipping shader tests if requirements are not met.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-08 11:49:27 +02:00
Zebediah Figura
c7a7cf498d tests: Use a vertex buffer to draw quads for shader tests.
For compatibility with shader models before 4.0.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-08 11:49:16 +02:00
Zebediah Figura
94fcd52031 tests: Mark some more tests as requiring shader model 4.0.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:32:21 +02:00
Giovanni Mascellani
53d7433054 vkd3d-shader/hlsl: Write SM4 right shift instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:32:13 +02:00
Giovanni Mascellani
95df144c69 vkd3d-shader/hlsl: Assert that bool values are not bit-shifted.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:32:10 +02:00
Giovanni Mascellani
ed921151b0 vkd3d-shader/hlsl: Write SM4 uint modulus instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:32:07 +02:00
Giovanni Mascellani
e37f1ed26d vkd3d-shader/hlsl: Write SM4 uint division instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:32:04 +02:00
Giovanni Mascellani
f3e81645be vkd3d-shader/hlsl: Write SM4 uint negation instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:32:00 +02:00
Giovanni Mascellani
c92897ffd2 vkd3d-shader/hlsl: Write SM4 int multiplication instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:31:55 +02:00
Giovanni Mascellani
8c086b5c91 vkd3d-shader/hlsl: Lower casts to bool to comparisons.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:31:52 +02:00
Matteo Bruni
8fa196cf51 vkd3d-shader/hlsl: Handle HLSL_TYPE_DOUBLE in sm4_base_type().
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:31:46 +02:00
Matteo Bruni
233157649c vkd3d-shader/hlsl: Drop extra '\n' from hlsl_error() messages.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:31:44 +02:00
Matteo Bruni
4ab4d42468 vkd3d-shader/hlsl: Drop extra '\n' from hlsl_fixme() messages.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-07 18:31:42 +02:00
Zebediah Figura
2e4367a470 build: Do not cross-compile tests if tests are not enabled.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:52:21 +02:00
Zebediah Figura
2f082de904 build: Do not make cross-compiled import libs an explicit dependency of the "crosstest" targets.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:52:19 +02:00
Zebediah Figura
113303c730 build: Do not cross-compile demos if demos are not enabled.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:52:12 +02:00
Zebediah Figura
d3347554a2 configure: Check for xcb-event and xcb-icccm.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:52:03 +02:00
Giovanni Mascellani
1ec00d8eba vkd3d-shader/hlsl: Fold constant not-equal expressions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
d9dc79de66 vkd3d-shader/hlsl: Store boolean constants as unsigned.
With this change it is possible to store booleans as 0xffffffff,
similarly as what happens at runtime.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
5b24f7a06c vkd3d-shader/hlsl: Add a helper to create constants of arbitrary type.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
39bd9b0943 vkd3d-shader/hlsl: Pass a pointer to the location to hlsl_new_*_constant().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
58956922df vkd3d-shader/hlsl: Abort on inconsistent types in fold_cast().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
c63fbbda06 vkd3d-shader/hlsl: Abort on inconsistent types in write_sm4_cast().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
4739cf1d33 vkd3d-shader/hlsl: Check types when folding constants.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Giovanni Mascellani
bc7c89bc1f vkd3d-shader/hlsl: Use an unsigned variable for iteration.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:51:07 +02:00
Zebediah Figura
08d198ba6f tests: Make test_shader_interstage_interface() into a shader test.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:50:22 +02:00
Zebediah Figura
6e966bcf23 vkd3d-shader/hlsl: Allow "nointerpolation" to be specified on struct fields.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:50:19 +02:00
Matteo Bruni
428a6b4033 vkd3d-shader/hlsl: Report failure when encountering matrix instructions.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-05 17:50:17 +02:00
Zebediah Figura
ea93c5c767 vkd3d-shader/hlsl: Write SM4 integer addition instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:57 +02:00
Zebediah Figura
c9b7669240 vkd3d-shader/hlsl: Declare integer semantics as having constant interpolation.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:52 +02:00
Zebediah Figura
e6dabf22bf vkd3d-shader/hlsl: Respect the 'nointerpolation' modifier.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:47 +02:00
Zebediah Figura
8e07f65595 vkd3d-shader/hlsl: Allow mixing "in" and "out" with other modifiers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:41 +02:00
Giovanni Mascellani
8e6c526779 vkd3d-shader/hlsl: Write SM4 bitwise NOT instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:38 +02:00
Giovanni Mascellani
2959ad74f7 vkd3d-shader/hlsl: Write SM4 bitwise XOR instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:34 +02:00
Giovanni Mascellani
f22d866cee vkd3d-shader/hlsl: Write SM4 bitwise OR instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-04 21:12:30 +02:00
Matteo Bruni
d2104522fe vkd3d-shader/preproc: Don't add additional spaces after whitespace tokens.
This is especially a problem when e.g. it introduces a whitespace
before a #pragma directive, breaking shader compilation.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:56 +02:00
Francisco Casas
a75560af3d vkd3d-shader/hlsl: Treat all braceless initializers as assignments.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:53 +02:00
Francisco Casas
6284cf7d57 vkd3d-shader/hlsl: Don't check exact number of components for braceless initialization of numeric types.
The implicit conversion in add_assignment() takes responsability now.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:49 +02:00
Francisco Casas
22f0b1df77 vkd3d-shader/hlsl: Properly free parse_variable_def memory.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:46 +02:00
Francisco Casas
426c08eba4 vkd3d-shader/hlsl: Add 'braces' flag to parse initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:43 +02:00
Francisco Casas
d9dc1a4554 vkd3d-shader/hlsl: Concatenate nested initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:39 +02:00
Francisco Casas
bed085cf9a vkd3d-shader/hlsl: Avoid leaks on memory allocation failures when parsing initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-31 21:24:35 +02:00
Conor McCarthy
889e5af5dd tests: Test signalling a fence to a lower value after a GPU wait.
Ensures the new fence implementation using timeline semaphores handles
this correctly.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-24 23:23:15 +01:00
Conor McCarthy
22d8665300 vkd3d: Use Vulkan timeline semaphores for D3D12 fences.
D3D12 supports signalling a fence to a lower value, while Vulkan timeline
semaphores do not. On the GPU side this is handled by simply submitting
the signal anyway, if a test for this passes on device creation, because
working around this is impractical. For CPU signals the Vulkan semaphore
is replaced with a new one at the lower value only if no waits and/or
signals are pending on the GPU. Otherwise, a fixme is emitted.

Partly based on a vkd3d-proton patch by Hans-Kristian Arntzen (not
including the handling of lower fence values).

The old implementation is used if KHR_timeline_semaphore is not
available or GPU signals do not work for a lower value.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-24 19:47:24 +01:00
Conor McCarthy
e3045090a8 vkd3d: Write a resource null descriptor to all applicable sets when one set is written.
Binding a shader with the wrong null descriptor type works in Windows. The
introduction of Vulkan-backed heaps may cause a regression in clients which
do this, because the written index will remain unpopulated in all other sets,
but a shader may access it in one of them.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-24 19:46:20 +01:00
Conor McCarthy
0627462192 vkd3d: Use Vulkan null descriptors if EXT_robustness2 is available.
This implements all remaining unsupported image view dimensions and saves
a small amount of resources because null buffers and images are no longer
needed. It matches the D3D12 requirement that all reads return zero,
which is not strictly true of the existing implementation using resources
of small but non-zero size. Warnings on null view creation are silenced
because there should no longer be a difference from D3D12 behaviour.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-24 19:46:13 +01:00
Conor McCarthy
f34168481d vkd3d: Remove an invalid NULL check.
The pointer is never NULL.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 18:40:58 +01:00
Conor McCarthy
ae2219a7f7 vkd3d: Do not enable Vulkan-backed descriptor heaps if required update-after-bind features are missing.
descriptorBindingUniformBufferUpdateAfterBind is false for Intel Skylake
(and maybe others).

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-23 18:40:56 +01:00
Zebediah Figura
24a27daf98 tests: Add a test for the "nointerpolation" modifier.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:43 +01:00
Zebediah Figura
c7623262cc tests: Specify the primitive type from the shader runner frontend.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:41 +01:00
Zebediah Figura
492cd135e3 tests: Specify the vertex count from the shader runner frontend.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:39 +01:00
Zebediah Figura
84c73f82f7 tests: Allow specifying a custom vertex buffer.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:37 +01:00
Zebediah Figura
f11f7032cd tests: Make the "texture" structure more generic.
Use it to hold any type of resource, regardless of type and binding.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:35 +01:00
Zebediah Figura
3ed4c6fe23 tests: Allow specifying a custom input layout.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:32 +01:00
Zebediah Figura
16b383aef5 tests: Specify the default vertex shader in the shader runner frontend.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:29 +01:00
Zebediah Figura
52223250d7 tests: Add support for running shader tests with a custom vertex shader.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-22 18:41:26 +01:00
Zebediah Figura
71db328d38 tests: Remove NULL rect handling from d3d11_runner_probe_vec4().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-21 22:35:05 +01:00
Zebediah Figura
099df706f0 tests: Use a macro to define the render target size.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-21 22:35:03 +01:00
Zebediah Figura
e5be178fe2 tests: Rename struct d3d11_shader_context to struct d3d11_shader_runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-21 22:35:01 +01:00
Zebediah Figura
39459d6c3e tests: Rename struct d3d12_shader_context to struct d3d12_shader_runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-21 22:34:59 +01:00
Zebediah Figura
5841e79102 tests: Rename struct shader_context to struct shader_runner.
This is a bit clearer, and avoids colliding with other things named "context",
e.g. struct test_context, or d3d11 device contexts.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-21 22:34:57 +01:00
Zebediah Figura
ead5cc3113 tests: Use SV_VertexID to draw a triangle in d3d11_runner_draw_quad().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Zebediah Figura
41d75fde22 vkd3d-shader/hlsl: Write SM4 left shift instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Zebediah Figura
ccb3326516 vkd3d-shader/hlsl: Write SM4 bitwise AND instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Zebediah Figura
5251ecff89 vkd3d-shader/hlsl: Parse the sv_vertexid semantic.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Zebediah Figura
6569b37e97 vkd3d-shader/hlsl: Reverse the switch order in write_sm4_expr().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Zebediah Figura
8fe4d7d37e vkd3d-shader/hlsl: Cast pow() input to float.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Francisco Casas
a7e6d6b9d2 vkd3d-shader/hlsl: Remove redundant type check in declare_vars().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Giovanni Mascellani
84059d61c3 vkd3d-shader/hlsl: Allow offsets for scalar and vector variables.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:36 +01:00
Zebediah Figura
ee764359d0 vkd3d-shader/hlsl: Correctly calculate offsets for array elements.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 22:20:32 +01:00
Conor McCarthy
2b0fd2a055 vkd3d: Do not copy descriptors having identical views.
Improves performance in Control, which copies large numbers of descriptors
per frame where often only ~10% are not identical.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 12:40:02 +01:00
Conor McCarthy
5e4f1e1ead vkd3d: Optimise descriptor copying for Vulkan-backed heaps.
Source descriptors are copied to separate arrays to facilitate use of
pre-initialised Vulkan structures, and allow arrayed writes where
possible.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 12:40:02 +01:00
Conor McCarthy
2b71ea406f vkd3d: Back descriptor heaps with Vulkan descriptor sets if descriptor indexing is available.
The existing implementation using virtual descriptor heaps, where Vk
descriptor sets are created for the bindings in the root descriptor tables,
is inefficient when multiple command lists are used with large descriptor
heaps. It also cannot support updating a descriptor set after it is bound.

This patch creates Vk sets for each D3D12 heap. Because D3D12 heaps
can contain CBV, SRV and UAV descriptors in the same heap, multiple Vk sets
are needed for each heap, however the total number of populated descriptors
is never more than (heap size + UAV counter count).

A new 'virtual_heaps' config option is introduced to make the old
implementation available when needed. It's not always possible to determine
if this is necessary when the device is created.

Up to nine Vk descriptor sets may be used. It's theoretically possible to
reduce this to eight by placing immutable samplers in the push descriptor
set layout, but contradictions in earlier versions of the Vulkan spec made
driver support inconsistent. The documentation was corrected in version
1.2.203.

This patch also adds support for UAV counter descriptor arrays. It's not
practical to add this in a separate patch due to complications with
combining the old UAV counter implementation with the new descriptor heap
implementation.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47713
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47154
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-18 12:38:53 +01:00
Giovanni Mascellani
500ce146c3 tests: Mark atomic operations as done on AMD.
They seem to work with mesa 21.3.7. Since some developers are
using older releases where the bug is not yet fixed, I am leaving
it marked as a bug.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-17 20:52:30 +01:00
Giovanni Mascellani
90827313f5 tests: Mark NaN conversion as todo on NVIDIA.
D3D mandates that NaN becomes zero when converted to unsigned[1],
while it doesn't look like that SPIR-V's OpConvertFToU has a similar
provision[2]. In practice, this seems to work on AMD and fails on
NVIDIA, where 0x80000000 is produced instead.

 [1] https://microsoft.github.io/DirectX-Specs/d3d/archive/D3D11_3_FunctionalSpec.htm#22.17.4%20dtou
 [2] https://www.khronos.org/registry/SPIR-V/specs/unified1/SPIRV.html#Conversion

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-17 20:52:30 +01:00
Giovanni Mascellani
8efbd4de51 tests: Work around a rounding difference between NVIDIA and AMD.
NVIDIA and AMD round differently the assignment of 0.5f to a UAV
of type R16G16_UNORM. NVIDIA rounds to 0x7fff and AMD to 0x8000.
According to both Vulkan and D3D12 specifications, both values
are acceptable, but the discrepancy currently appears as a
failure on NVIDIA cards.

Work around the issue by using 0.25f instead of 0.5f, which is
rounded as 0x4000 on both implementations.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-17 20:52:30 +01:00
Zebediah Figura
fa17a170b1 vkd3d-shader/sm4: Recognise the msad opcode.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-14 18:31:08 +01:00
Zebediah Figura
0ca2444e9b tests: Use only one heap for textures in the d3d12 shader runner.
The d3d12 specification forbids simultaneously binding more than one heap of a
given type.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-14 18:26:50 +01:00
David Gow
13ca6322c7 vkd3d: Handle D3D12_APPEND_ALIGNED_ELEMENT for <4 byte wide elements.
In d3d12, input element alignment needs to be the _minimum_ of 4 and the size of
the type. See the D3D11 spec, section 4.4.6, which behaves similarly:
https://microsoft.github.io/DirectX-Specs/d3d/archive/D3D11_3_FunctionalSpec.htm#4.4.6%20Element%20Alignment

This is correctly taken into account when generating, e.g., the
vertex_buffer_stride_align_mask used for validation, but is not taken
into account when D3D12_APPEND_ALIGNED_ELEMENT is used to automatically
place input elements. Currently, vkd3d always assumes the alignment is
4.

This means that, for example, bytes or shorts should be packed tightly
together when D3D12_APPEND_ALIGNED_ELEMENT is used, but are instead
padded to 4 bytes.

Fixing this makes units appear in Age of Empires IV.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-09 20:53:15 +01:00
Zebediah Figura
721ea8fa60 tests: Mark some tests as requiring shader model 4.0.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 17:45:21 +01:00
Zebediah Figura
1f4056125d tests: Avoid using non-float uniforms where possible.
SM1 encodes these differently.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 17:45:18 +01:00
Zebediah Figura
efd9e9e990 tests: Use SM1-compatible uniform layouts in shader tests.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 17:45:16 +01:00
Zebediah Figura
9bbce56dad tests: Avoid depending on float accuracy in the round() test.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 17:45:14 +01:00
Zebediah Figura
e9ff88469e tests: Split hlsl-operations into individual test units.
Partly to make the tests easier to navigate, and partly to allow marking some
tests as SM4+.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-08 17:45:11 +01:00
Francois Gouget
b64482e7c7 vkd3d-shader/spirv: Fix the spelling of some comments.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:39:09 +01:00
Francois Gouget
ab3855133d announce: Fix a typo in the libvkd3d-shader new interfaces section.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:31:31 +01:00
Francois Gouget
419c746806 vkd3d: Fix the spelling of a couple of trace message.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:31:28 +01:00
Francois Gouget
c1e376911e vkd3d: Add a trailing linefeed to a couple of WARN() messages.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:31:25 +01:00
Zebediah Figura
fc5df4d330 vkd3d-utils: Simplify handling of shader messages a bit.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:30:44 +01:00
Zebediah Figura
e9fd9a79a1 vkd3d-utils: Avoid leaking "messages" when vkd3d_blob_create() fails.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-07 16:30:37 +01:00
Henri Verbeet
d1d9e713f2 Release 1.3.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 21:32:57 +01:00
Henri Verbeet
f0479f08bd vkd3d-shader/glsl: Disable support for the GLSL target.
Regrettably, support for the GLSL target is not mature enough for the
upcoming 1.3 release.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 19:53:59 +01:00
Henri Verbeet
969dc1e899 vkd3d-shader: Add missing version information for some enum elements.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 19:53:57 +01:00
Henri Verbeet
fcf36f56c5 vkd3d-shader: Add a description for VKD3D_SHADER_TARGET_D3D_ASM.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 19:53:55 +01:00
Henri Verbeet
f276cbd821 vkd3d-shader: Slightly clarify the documentation for struct vkd3d_shader_descriptor_offset_info.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 19:53:53 +01:00
Henri Verbeet
f71ffabf81 build: Add the shader tests to the distribution.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 19:53:51 +01:00
Henri Verbeet
2d36d7f16d build: Add the flex and bison sources to the distribution.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 19:53:48 +01:00
Matteo Bruni
e1865cf98a vkd3d-shader/hlsl: Remove trivial swizzles after each copy prop pass.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:41:15 +01:00
Francisco Casas
94e8442355 vkd3d-shader/hlsl: Fix order of matrix dimensions in hlsl_type_to_string().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:54 +01:00
Giovanni Mascellani
be5668382e vkd3d-shader/hlsl: Fix typing rules for logical NOT.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:50 +01:00
Giovanni Mascellani
a83919c228 vkd3d-shader/hlsl: Fix typing rules for bitwise NOT.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:47 +01:00
Giovanni Mascellani
7aeb99261c vkd3d-shader/hlsl: Parse right shift.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:44 +01:00
Giovanni Mascellani
6fa1381657 vkd3d-shader/hlsl: Parse left shift.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:40 +01:00
Giovanni Mascellani
786f95ffcf vkd3d-shader/hlsl: Parse logical OR.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:35 +01:00
Giovanni Mascellani
2c3094b2dc vkd3d-shader/hlsl: Parse logical AND.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:28 +01:00
Zebediah Figura
5548d5fe6d vkd3d-shader/hlsl: Introduce a helper to validate that an instruction has integer type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-02 18:40:23 +01:00
Henri Verbeet
ffbc40ee20 vkd3d: Recognise newer memory properties in debug_vk_memory_property_flags().
The two _AMD properties would require bumping the version of the Vulkan
headers we require; that doesn't seem worth it for making a FIXME go away.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
8547174397 vkd3d-shader/d3d-asm: Add an l-suffix on double literals.
Like fxc/d3dcompiler does.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
cea9f19bd4 vkd3d-shader/d3d-asm: Always use '.' as decimal separator when printing doubles.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
aef9e9ea62 vkd3d-shader/d3d-asm: Always use '.' as decimal separator when printing floats.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
4728cf1286 include: Introduce a common macro for defining tags.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
273316a742 vkd3d-shader/sm4: Make the "reg" parameter to shader_sm4_set_descriptor_register_range() const.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
9a2d9d4f5c include: Reintroduce hidden visibility for GUID definitions.
This was dropped by d27fee64ab, presumably
because the default visibility was switched to "hidden". However, this is part
of a public header, and external users may not share our symbol visibility
defaults.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
062f0a25d3 vkd3d-shader/spirv: Pass vkd3d-shader formatting options to vkd3d_spirv_binary_to_text().
Instead of making the caller convert them.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:31:33 +01:00
Henri Verbeet
fd28eb8199 tests: Properly compare integers in compare_id().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:25:14 +01:00
Henri Verbeet
8844118d1b vkd3d: Properly compare integers in compare_descriptor_range().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-03-01 22:25:00 +01:00
Henri Verbeet
41b445d965 vkd3d: Properly compare integers in compare_register_range().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:32 +01:00
Henri Verbeet
beb6b8efc7 vkd3d-shader/spirv: Properly compare integers in vkd3d_symbol_compare().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:30 +01:00
Henri Verbeet
7e08773d4e vkd3d-shader/spirv: Properly compare integers in vkd3d_spirv_declaration_compare().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:28 +01:00
Henri Verbeet
e2c9423611 vkd3d-shader/hlsl: Properly compare integers in compare_function_decl_rb().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:26 +01:00
Henri Verbeet
790ab754d5 vkd3d-shader/hlsl: Properly compare integers in compare_param_hlsl_types().
As pointed out by Giovanni Mascellani, modular subtraction doesn't produce a
total order; in particular, it's not transitive. The nature of the types being
compared here makes it unlikely this will be an issue in practice, but it's
both fragile and setting a poor example.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:24 +01:00
Henri Verbeet
850badd38c vkd3d-shader: Handle double-precision floating-point data in vkd3d_shader_scan_typed_resource_declaration().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:22 +01:00
Henri Verbeet
2a14718fe5 vkd3d-shader: Handle "mixed" data in vkd3d_shader_scan_typed_resource_declaration().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:20 +01:00
Henri Verbeet
ab45f0cafd vkd3d-shader: Explicitly handle VKD3D_DATA_MIXED in vkd3d_component_type_from_data_type().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:18 +01:00
Henri Verbeet
22b02ed59f vkd3d-shader: Introduce VKD3D_SHADER_COMPILE_OPTION_API_VERSION.
Analogous to vkd3d_api_version for libvkd3d.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:15 +01:00
Henri Verbeet
f5c4c06090 vkd3d-shader/hlsl: Respect the requested target type.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 22:23:13 +01:00
Henri Verbeet
79ae688140 vkd3d-utils: Set a value for the VKD3D_SHADER_COMPILE_OPTION_STRIP_DEBUG option in D3DCompile2().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-25 20:41:40 +01:00
Henri Verbeet
c07e6536a9 vkd3d-utils: Return an ID3DBlob pointer from D3DCreateBlob().
ID3DBlob is a typedef for ID3D10Blob, so this isn't all that consequential,
but we're using ID3DBlob for the other vkd3d-utils exports.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-25 20:41:37 +01:00
Henri Verbeet
c97d7f5bff vkd3d-shader: Callers of vkd3d_shader_get_supported_target_types() should ignore unrecognised target types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-25 20:41:34 +01:00
Henri Verbeet
63098ba8fa vkd3d-shader: Callers of vkd3d_shader_get_supported_source_types() should ignore unrecognised source types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-25 20:41:30 +01:00
Henri Verbeet
3a97193246 vkd3d-shader: Add a function pointer type for vkd3d_shader_preprocess().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-25 20:41:24 +01:00
Zebediah Figura
7f166c4da4 vkd3d-shader/hlsl: Return false from hlsl_offset_from_deref() if the offset falls out of bounds.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-24 18:39:11 +01:00
Zebediah Figura
8b2bd02a53 tests: Add some tests for casting output arguments to functions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-24 18:39:08 +01:00
Zebediah Figura
cdd7f3d362 tests: Add some simple tests for HLSL function calls.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-24 18:39:05 +01:00
Giovanni Mascellani
2a92fc1676 include: Clarify docs for PFN_vkd3d_shader_close_include.
Clarify the contract about memory management of the code parameter
and reference callbacks by their name as fields of struct
vkd3d_shader_preprocess_info rather than by their type (like it
is already done above).

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-24 18:37:46 +01:00
Alexandre Julliard
59d918fd50 configure: Build demos with -municode on Mingw.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-23 19:03:38 +01:00
Alexandre Julliard
02fe9f5bdf configure: Don't require libxcb to build demos on Mingw.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-23 19:03:28 +01:00
Conor McCarthy
0d777e7fca vkd3d: Use device descriptor limits for unbounded descriptor ranges.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-21 20:32:25 +01:00
Conor McCarthy
65e353d5df vkd3d: Use device descriptor limits when creating descriptor pools.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-21 20:32:22 +01:00
Nikolay Sivov
a4ca091888 vkd3d-shader/hlsl: Fix floating point literals matching.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-17 21:21:35 +01:00
Francisco Casas
73e27ced37 vkd3d-shader/hlsl: Cover all numeric types in constant folding operations.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-17 21:19:10 +01:00
Francisco Casas
812123ffbf vkd3d-shader/hlsl: Move fold_constants() to a separate file.
Also rename it to hlsl_fold_constants().

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-17 21:19:04 +01:00
Francisco Casas
7b687751cc vkd3d-shader/hlsl: Move replace_node() to hlsl.c.
Also rename it to hlsl_replace_node().

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-17 21:19:00 +01:00
Giovanni Mascellani
02a2a9a929 vkd3d-shader/hlsl: Parse bitwise OR.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:27 +01:00
Giovanni Mascellani
c7695d0511 vkd3d-shader/hlsl: Parse bitwise XOR.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:24 +01:00
Giovanni Mascellani
c0ff9184cf vkd3d-shader/hlsl: Parse bitwise AND.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:21 +01:00
Giovanni Mascellani
52a3e0af55 vkd3d-shader/hlsl: Write SM4 unsigned multiplication instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:18 +01:00
Giovanni Mascellani
d49c84dc6f tests: Test a number of simple HLSL operations.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:09 +01:00
Giovanni Mascellani
6426161fea tests: Test matrix multiplication.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:05 +01:00
Matteo Bruni
02ac34d0a2 vkd3d-shader/sm4: Skip non-color outputs in shader output mapping.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:02:01 +01:00
Conor McCarthy
c9aea8993f vkd3d: Lock the heap mutex while binding heap memory.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:01:06 +01:00
Francisco Casas
b78087c20f vkd3d-shader/hlsl: Parse valid texture array types.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:45:44 +01:00
Francisco Casas
8b4cd715ea vkd3d-shader/hlsl: Remove Texture3DArrays from lexer and parser.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:45:40 +01:00
Francisco Casas
75afa731df vkd3d-shader/hlsl: Check texture dimension type on method calls.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:45:37 +01:00
Francisco Casas
68b9422470 vkd3d-shader/hlsl: Handle additional dimension types for textures.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:45:33 +01:00
Francisco Casas
ce2454db6d vkd3d-shader/hlsl: Move sampler_dim_count() to hlsl.h.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:45:29 +01:00
Francisco Casas
f5f9cddda2 vkd3d-shader/hlsl: Fix wrong conditional in compare_param_hlsl_types().
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:45:25 +01:00
Alexandre Julliard
af9bf3bbf2 vkd3d-shader: Undefine ERROR to avoid a compiler warning on Windows.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-08 18:59:47 +01:00
Alexandre Julliard
fd5d6cd454 vkd3d-shader: Define S_ISREG if necessary for the Windows build.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-08 18:59:44 +01:00
Conor McCarthy
de031bfb29 vkd3d: Use a helper function to copy descriptor set layouts to an array.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-07 20:24:04 +01:00
Conor McCarthy
ce243da81a vkd3d: Use a helper function to find and init UAV counters.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-07 20:24:02 +01:00
Conor McCarthy
3fe1492811 vkd3d: Pass shader extension info to all graphics stages.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-07 20:24:00 +01:00
Alexandre Julliard
ff5530d7ad configure: Don't require pthread for Mingw builds.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-07 17:33:33 +01:00
Alexandre Julliard
c78174f004 vkd3d: Add a create thread implementation for Windows.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-07 17:33:26 +01:00
Alexandre Julliard
923ea7bb1e vkd3d-utils: Implement the event functions for Windows.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-04 16:46:10 +01:00
Alexandre Julliard
2a1470cddf vkd3d: Implement the synchronization wrappers for Windows.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-04 16:46:07 +01:00
Alexandre Julliard
129b0be7ac vkd3d: Add inline wrappers for the pthread synchronization functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-02-04 16:46:03 +01:00
Francisco Casas
832d6b6702 tests: Test initializer argument flattening.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:46:00 +01:00
Francisco Casas
e3d55e315b tests: Test single numeric initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:45:57 +01:00
Francisco Casas
6b58079cbd tests: Test initialization using a numeric constructor with implicit truncation.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:45:55 +01:00
Francisco Casas
6061a4e6e3 tests: Test nested initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:45:52 +01:00
Francisco Casas
82720796d0 tests: Test complex initializers for numeric types.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:45:49 +01:00
Francisco Casas
053f5354cc tests: Test invalid number of arguments on initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:45:46 +01:00
Francisco Casas
40c9799d34 tests: Test struct initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 16:45:43 +01:00
Francisco Casas
dbcf063489 tests: Test array initializers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-02 21:06:23 +01:00
Zebediah Figura
13a1ba4263 vkd3d-shader/preproc: Allow capital U and L after integer constants as well.
Technically we shouldn't allow "uu" or "ll" either, but we also don't really
handle preprocessor parsing errors the way we should.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-02 21:06:21 +01:00
Nikolay Sivov
4e36c1825d vkd3d-shader/hlsl: Implement floor().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-02 21:06:19 +01:00
Nikolay Sivov
11d962ddbf vkd3d-shader/hlsl: Cast saturate() input to float.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-02 21:06:17 +01:00
Nikolay Sivov
22d8b0a033 vkd3d-shader/hlsl: Cast round() input to float.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-02 21:06:15 +01:00
Alexandre Julliard
7710f5deaf vkd3d-shader: Use LONG type with InterlockedIncrement.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-01-31 15:58:15 +01:00
Alexandre Julliard
2d1fb5ef33 vkd3d-shader: Fix some DWORD/unsigned int pointer mismatches.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-01-31 15:58:12 +01:00
Alexandre Julliard
e21928f6ee vkd3d-shader: Consistently use uint32_t for pointers to shader data.
Mixing uint32_t and DWORD pointers causes warnings on Windows.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-01-31 15:58:08 +01:00
Alexandre Julliard
beafa0914e vkd3d: Replace atomic_add_fetch() by InterlockedAdd().
By analogy with InterlockedIncrement. It avoids the need for a
configure check on Windows platforms.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-01-28 17:48:32 +01:00
Alexandre Julliard
ab3aa96e1f vkd3d: Always use _BitScanReverse on Windows.
Use ULONG instead of unsigned long for non-Mingw msvcrt builds.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2022-01-28 17:48:30 +01:00
Zebediah Figura
22e6581ffc tests: Add a D3D11 shader runner backend.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:49 +01:00
Zebediah Figura
ecbdd8f994 tests: Add a helper to set uniforms.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:47 +01:00
Zebediah Figura
3994cec7b1 tests: Pass HLSL source to the draw_quad() function.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:44 +01:00
Zebediah Figura
33c845ece5 tests: Move d3d12-specific members of struct texture to a new d3d12_texture structure.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:41 +01:00
Zebediah Figura
c417d3f830 tests: Make texture allocation and destruction into separate shader_runner ops.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:39 +01:00
Zebediah Figura
09e3018b6d tests: Move the drawing and readback implementation to the d3d12 shader runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:37 +01:00
Zebediah Figura
85d61f0c64 tests: Move HLSL shader compilation to a new d3d12 shader runner backend.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:34 +01:00
Zebediah Figura
63622a92e8 tests: Rename shader_runner_d3d12 to shader_runner.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 18:00:30 +01:00
Francisco Casas
d07d0d8eff tests: Add tests for texture gather methods.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:28 +01:00
Francisco Casas
6de080088a vkd3d-shader/hlsl: Implement texture gather methods.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:26 +01:00
Francisco Casas
7aa709ad57 tests: Add tests for Sample method with offset.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:24 +01:00
Francisco Casas
96c2a3e586 vkd3d-shader/hlsl: Add aoffimmi modifiers on Sample sm4 instructions.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:22 +01:00
Francisco Casas
2570967aab vkd3d-shader/hlsl: Add texel_offset field to hlsl_ir_resource_load.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:20 +01:00
Francisco Casas
591cec956e vkd3d-shader/hlsl: Add support for sm4 instruction modifiers.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:18 +01:00
Zebediah Figura
5c330e7a78 vkd3d-shader/hlsl: Introduce a sm4_dst_from_node() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:16 +01:00
Zebediah Figura
505751d2e4 vkd3d-shader/hlsl: Introduce a sm4_src_from_deref() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:14 +01:00
Zebediah Figura
c2803da1f0 vkd3d-shader/hlsl: Introduce a sm4_src_from_node() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-26 18:36:12 +01:00
Giovanni Mascellani
a06d54d24e makefile: Explicitly avoid ANSI stdio modifiers when cross compiling.
Crosstests are compiled with MinGW and linked against msvcrt, which
doesn't necessarily support ANSI stdio format modifiers like "ll".
Still, MinGW headers default to emit "ll" for format macros like
PRIu64, which is wrong and triggers a lot of warnings in recent enough
versions of GCC.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 18:23:59 +01:00
Zebediah Figura
8cb3ec4640 vkd3d-shader/hlsl: Propagate copies for resource load instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 18:23:45 +01:00
Zebediah Figura
4529fbe57f vkd3d-shader/hlsl: Do not calculate a buffer offset for object variables.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 18:23:42 +01:00
Zebediah Figura
387ec06b6f vkd3d-shader/hlsl: Pass copy_propagation_state and hlsl_deref pointers to copy_propagation_compute_replacement().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 18:23:40 +01:00
Zebediah Figura
62bcdcda76 vkd3d-shader/hlsl: Handle objects in copy propagation.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 18:23:36 +01:00
Matteo Bruni
5e14b843ea vkd3d-shader/hlsl: Use hlsl_alloc() in hlsl_new_texture_type().
Spotted by Giovanni Mascellani.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-24 18:23:34 +01:00
Conor McCarthy
5d627d6c64 vkd3d: Handle plane slice for texture views.
vk_image_aspect_flags_from_d3d12_plane_slice() is based on a
vkd3d-proton implementation by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 18:35:51 +01:00
Conor McCarthy
8e30a7750e vkd3d: Use the resource's stored format in d3d12_command_list_CopyTextureRegion().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-21 18:35:48 +01:00
Conor McCarthy
31a1026d3e vkd3d/tests: Revert "Enable on vkd3d the tests for ID3D12CommandQueue::Wait().".
This reverts commit 41230b6e76.

The tests can hang and the Wait() implementation has issues.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-20 10:57:14 +01:00
Giovanni Mascellani
2d619f3d52 vkd3d-shader/hlsl: Remove HLSL_OP2_GREATER and HLSL_OP2_LEQUAL.
They are replaced with HLSL_OP2_LESS and HLSL_OP2_GEQUAL after swapping
the parameters.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Giovanni Mascellani
9182e73e64 vkd3d-shader/hlsl: Write SM4 greater-or-equal instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Giovanni Mascellani
2f3b1e8f7d vkd3d-shader/hlsl: Write SM4 less-than instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Giovanni Mascellani
1db9dab156 vkd3d-shader/hlsl: Write SM4 inequality instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Giovanni Mascellani
f23415f4b5 vkd3d-shader/hlsl: Write SM4 equality instructions.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Zebediah Figura
6b5e44435f tests: Test redefining intrinsic functions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Zebediah Figura
8ced37058d vkd3d-shader/hlsl: Fold constant casts from int to uint.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Zebediah Figura
833bfa8812 vkd3d-shader/hlsl: Use list_empty() instead of comparing list_count() against zero.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Conor McCarthy
8727b9a435 tests: Add tests for NULL event handles in SetEventOnCompletion().
Testing this before NULL event handling is patched results in a crash.
Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:13 +01:00
Conor McCarthy
c965b7b213 vkd3d: Handle NULL event handles in ID3D12Fence::SetEventOnCompletion().
The D3D12 documentation states: "If hEvent is a null handle, then
this API will not return until the specified fence value(s) have
been reached."

Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 22:47:09 +01:00
Conor McCarthy
de87352f77 vkd3d: Use the resource's stored format in init_default_texture_view_desc().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:53 +01:00
Conor McCarthy
beb9151e5d vkd3d: Use the resource's stored format in d3d12_command_list_ResolveSubresource().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:50 +01:00
Conor McCarthy
68b70585a7 vkd3d: Use the resource's stored format in d3d12_command_list_CopyResource().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:47 +01:00
Conor McCarthy
ecb854c6c1 vkd3d: Add DXGI_FORMAT_UNKNOWN to the array of vkd3d_format objects.
This results in a valid format instead of NULL being returned for
buffers and any other case where DXGI_FORMAT_UNKNOWN is specified.
In some cases invalid use of a buffer or DXGI_FORMAT_UNKNOWN will
not result in E_INVALIDARG, and would need to be tested explicitly
if proven to be an issue.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:42 +01:00
Conor McCarthy
b93edeccfd tests: Test a texture with format DXGI_FORMAT_UNKNOWN in test_create_committed_resource().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:39 +01:00
Conor McCarthy
e1f2325aec vkd3d: Use the resource's stored format in d3d12_resource_ReadFromSubresource().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:36 +01:00
Conor McCarthy
4c3ecdf5fd vkd3d: Use the resource's stored format in d3d12_resource_WriteToSubresource().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:34 +01:00
Conor McCarthy
04b1c977ce vkd3d: Use the resource's stored format in d3d12_resource_validate_box().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:31 +01:00
Conor McCarthy
70d87dcf37 vkd3d: Use the resource's stored format in vkd3d_create_image().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:28 +01:00
Conor McCarthy
16393e10d5 vkd3d: Use the resource's stored format in d3d12_command_list_ResourceBarrier().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:25 +01:00
Conor McCarthy
1f3ec35138 vkd3d: Store the vkd3d format in resource objects.
Resource formats are immutable and the format object is static data.
Storing it saves a function call and error check in many locations.
The current implementation for finding a format iterates over the
entire list of formats.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-19 17:33:22 +01:00
Conor McCarthy
66bc2672a1 vkd3d: Implement ID3D12CommandQueue_GetClockCalibration().
Extends vkd3d_instance_create_info with struct vkd3d_host_time_domain_info
to allow host ticks per second to be changed from the default 10000000.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-18 09:22:56 +01:00
Conor McCarthy
440286e9de vkd3d-shader/spirv: Enable descriptor indexing if runtime arrays are used.
SpvCapabilityRuntimeDescriptorArrayEXT requires descriptor indexing and
a validation error will result if it is not enabled.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-18 09:22:51 +01:00
Conor McCarthy
3d044c4453 tests: Add tests for ID3D12CommandQueue_GetClockCalibration().
Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-14 19:28:11 +01:00
Conor McCarthy
2047bfa664 tests: Avoid -Wstringop-overread warnings from GCC 11.1+.
It's technically correct in warning about overwriting the entire
vec4 from the address of .x, if a bit overzealous. It's probably a
good warning to keep enabled.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-14 19:28:09 +01:00
Conor McCarthy
fa8956940c tests: Set the wrong descriptor heaps in test_descriptor_tables().
Has no effect in Windows at least on AMD. Not calling SetDescriptorHeaps()
at all has no effect in Windows on any hardware so this is likely to be
universal too.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-14 19:27:00 +01:00
Conor McCarthy
2566b8dd8c vkd3d: Handle depth/stencil planes in GetCopyableFootprints().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-13 17:21:08 +01:00
Conor McCarthy
c6e46f84df vkd3d/tests: Add tests for GetCopyableFootprints() depth/stencil planes.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-13 17:21:03 +01:00
Conor McCarthy
41230b6e76 vkd3d/tests: Enable on vkd3d the tests for ID3D12CommandQueue::Wait().
The Wait() implementation was added some time ago and these tests succeed.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-13 17:21:00 +01:00
Zebediah Figura
4fdd6f0935 vkd3d-shader: Trace tiled resource opcodes.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-13 17:20:44 +01:00
Zebediah Figura
8f26c99f8b vkd3d-shader: Use a designated initializer for the shader_opcode_names array.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-13 17:20:41 +01:00
Conor McCarthy
5d2b604b5c vkd3d: Handle D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE using a Vulkan extension.
Used by Cyberpunk 2077.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-10 20:10:11 +01:00
Conor McCarthy
eb1ae29de0 vkd3d-shader/dxbc: Emit a fixme when a DXIL shader chunk is found.
Simplifies detection of SM6+ shaders, e.g. Horizon Zero Dawn and
Cyberpunk 2077.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-10 20:10:08 +01:00
Giovanni Mascellani
9375950450 vkd3d-compiler: Properly forward argument validation failures.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-07 16:49:48 +01:00
Conor McCarthy
758b984c41 vkd3d-shader/spirv: Support UAV counter descriptor arrays.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-07 16:49:06 +01:00
Conor McCarthy
c04b6b1765 vkd3d: Do not flag a descriptor table as dirty if it is unchanged.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-07 16:49:00 +01:00
Conor McCarthy
711378ea31 vkd3d: Validate the base descriptor handle in d3d12_command_list_set_descriptor_table().
The availability of allocation info makes it possible to check that
the descriptor belongs to a heap of the correct type. This will be
more important when Vulkan-backed descriptor heaps are added.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-07 16:48:58 +01:00
Conor McCarthy
67ee837f2b vkd3d: Use a binary search for matching a descriptor to an allocation.
The performance improvement will be useful for Vulkan-backed heaps,
where descriptor heaps must be found more often.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-07 16:48:55 +01:00
Zebediah Figura
2edec69da4 vkd3d-shader: Make shader_extract_from_dxbc() static.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:34:19 +01:00
Zebediah Figura
f3050be89d vkd3d-shader: Do not validate the target type in vkd3d_shader_scan().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:34:16 +01:00
Zebediah Figura
9fef9fe2bc vkd3d-compiler: Try to detect the source type by inspecting the file.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:34:02 +01:00
Zebediah Figura
47ea863535 vkd3d-compiler: Move some argument validation out of parse_command_line().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:33:57 +01:00
Zebediah Figura
1e2bcb0458 vkd3d-compiler: Print usage instructions only if --help is specified.
vkd3d-compiler is hardly the only program to print usage instructions on all
invalid invocations, but it's rather annoying to have one's whole screen wiped
due to a typo. It also makes it hard to notice the actual error messages printed
on e.g. `vkd3d-compiler -x`.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:33:41 +01:00
Zebediah Figura
6b34fc671a vkd3d-shader: Add tiled resource opcode definitions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:33:34 +01:00
Nikolay Sivov
3a480415c1 tests: Fix shader tests crashes on WARP driver.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:32:44 +01:00
Zebediah Figura
d0e539aec9 include: Avoid using a field reference as a truth value.
Ported from 5d01ebab89cee8a3499ee00729c048068d5b719d from Wine.

Despite the commit message there, even GCC 11.1 chokes on this.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-06 11:32:22 +01:00
Andrey Gusev
c7682480dd vkd3d-shader: Remove duplicate initialization.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:43:52 +01:00
Conor McCarthy
b252693043 vkd3d: Don't copy an entire descriptor when destroying a view.
Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:42:57 +01:00
Matteo Bruni
726bf72b07 vkd3d-shader/hlsl: Explicitly set swizzle type for resource derefs.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:42:19 +01:00
Giovanni Mascellani
56bd7fc8b3 vkd3d-shader/hlsl: Write SM4 unsigned minimum.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:42:15 +01:00
Giovanni Mascellani
3fd1d5c33e vkd3d-shader/hlsl: Write SM4 unsigned maximum.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:42:12 +01:00
Giovanni Mascellani
790f330836 vkd3d-shader/hlsl: Write SM4 integer minimum.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:42:07 +01:00
Giovanni Mascellani
ccc2dcee1b vkd3d-shader/hlsl: Write SM4 integer maximum.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:42:04 +01:00
Giovanni Mascellani
4441dafa09 vkd3d-shader/hlsl: Parse min intrinsic.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:59 +01:00
Giovanni Mascellani
0e45838370 vkd3d-shader/hlsl: Make pre/post decrement generate a signed one.
If a float expression is pre/post decremented and an unsigned one is
used to execute it, the unsigned one is first negated (becoming 2^32-1)
and then casted to float (becoming 2^32), which leads to an incorrect
result.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:56 +01:00
Giovanni Mascellani
c64627313f vkd3d-shader/hlsl: Write SM4 integer negation.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:52 +01:00
Zebediah Figura
3ad8609247 vkd3d-shader/hlsl: Pass a vkd3d_shader_location pointer to the intrinsic handler callback.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:49 +01:00
Zebediah Figura
943bd2fede vkd3d-shader/hlsl: Pass a vkd3d_shader_location pointer to message reporting functions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:45 +01:00
Zebediah Figura
a33439f1a0 vkd3d-shader/hlsl: Lower narrowing casts to swizzles.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:41 +01:00
Zebediah Figura
0a4e948453 vkd3d-shader/hlsl: Lower scalar-to-vector casts to swizzles.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:37 +01:00
Zebediah Figura
cbe69494a7 vkd3d-shader/hlsl: Write SM4 sample instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:24 +01:00
Giovanni Mascellani
5c1c9cba7a vkd3d-shader/hlsl: Introduce a copy propagation pass.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-16 11:41:09 +01:00
Conor McCarthy
ffbbee9247 vkd3d: Convert the descriptor handle to a pointer when the descriptor table is set.
Saves a couple of conversion calls later, and more when Vulkan-backed
heaps are added.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-15 19:26:21 +01:00
Conor McCarthy
ff6e930004 vkd3d: Change strip cut value FIXMEs to FIXME_ONCE.
These can generate many messages per frame in some games, e.g.
Control.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-15 19:26:17 +01:00
Conor McCarthy
7d609770c4 vkd3d: Simplify checking if a descriptor has a view.
Saves a few CPU cycles on a potentially very hot code path.
Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-15 19:25:55 +01:00
Conor McCarthy
3816fa403f vkd3d-shader/spirv: Support runtime descriptor array offsets using push constants.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-15 19:25:38 +01:00
Conor McCarthy
f65884f6b4 vkd3d: Initialise root signature descriptor offset buffer to NULL.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-12-15 19:25:35 +01:00
Conor McCarthy
d6ff603605 vkd3d: Only allocate descriptor offsets when descriptor arrays are used.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-24 21:55:48 +01:00
Conor McCarthy
535d4a78b1 vkd3d-shader/spirv: Use runtime descriptor arrays.
Runtime descriptor arrays should be used for descriptor bindings with
a variable count.

Support for SpvCapabilityRuntimeDescriptorArrayEXT is required by the
Vulkan spec as part of descriptor indexing support.

The current implementation depends on a separate array declaration for
each range because binding_base_idx is stored in the array data. This
occurs in practice because binding.count is always different. Use of
runtime arrays eliminates the count from the key, so binding_base_idx
must be separated from the array data.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-24 21:55:46 +01:00
Zebediah Figura
1d59b177c9 vkd3d-shader/hlsl: Allocate samplers.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-22 16:55:09 +01:00
Matteo Bruni
1227891db9 vkd3d-shader/hlsl: Fix texture reservation trace.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-22 16:54:15 +01:00
Francisco Casas
ecf1180c35 vkd3d-shader/hlsl: Implement cross() intrinsic function.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-22 16:25:05 +01:00
Francisco Casas
3dad54845e vkd3d-shader/hlsl: Implement round() intrinsic function in SM4.
Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-22 16:24:56 +01:00
Giovanni Mascellani
c632ac7605 vkd3d-shader/hlsl: Take writemask into account when emitting a SM4 constant.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:21:51 +01:00
Francisco Casas
a32f89c714 vkd3d-shader/hlsl: Explicitly specify the swizzle type for sm4 source registers.
Some register types do not use a consistent swizzle type, so the
sm4_swizzle_type() function is removed.

The swizzle type now must be specified using the swizzle_type field.

Signed-off-by: Francisco Casas <fcasas@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:21:26 +01:00
Giovanni Mascellani
b266133a8c vkd3d-shader/hlsl: Allow failure in hlsl_offset_from_deref.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:20:44 +01:00
Giovanni Mascellani
f257004caf vkd3d-shader/hlsl: Use "false" instead of "0" as a bool immediate.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:20:41 +01:00
Giovanni Mascellani
93a40c1c57 vkd3d-shader/hlsl: Remove trivial swizzles.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:20:39 +01:00
Giovanni Mascellani
b4aacec5cd tests: Test support for HLSL vector and matrix types.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:20:25 +01:00
Giovanni Mascellani
f30f92f193 vkd3d-shader/hlsl: Parse matrix and vector types without parameters.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:20:23 +01:00
Giovanni Mascellani
0f16b8ec78 vkd3d-shader/hlsl: Write the else block only if it isn't empty.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 15:20:05 +01:00
Conor McCarthy
dbd7e18364 vkd3d-shader/spirv: Shift the private variable destination mask instead of the source mask.
Otherwise if the input is located above position 0 in the private array
it will be swizzled incorrectly, e.g. a.yz instead of a.xy in
test_domain_shader_inputs().

Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:27:31 +01:00
Conor McCarthy
5357ab78b9 vkd3d-shader/spirv: Fix the outer tessellation level indices for isoline tessellation.
For isoline tessellation, "density" is specified by OL0, and "detail" by OL1.

Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:27:27 +01:00
Conor McCarthy
462bbfaa74 tests: Add tests for a domain shader using a single patch constant input value.
This specifically tests the case where "count" would end up being one for
arrayed builtins in needs_private_io_variable().

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:27:25 +01:00
Conor McCarthy
db10a63a2e tests: Add tests for domain shader patch constant inputs.
Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:27:22 +01:00
Conor McCarthy
c41931c750 vkd3d-shader/spirv: Handle arrayed builtin inputs.
Fixes invalid SPIR-V being generated in Monster Hunter: World.
Based on vkd3d-proton patches by Hans-Kristian Arntzen and Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:27:19 +01:00
Conor McCarthy
9a1f6c7daf vkd3d-shader/spirv: Apply 'Patch' decorations to builtin patch constant inputs.
Prevents a crash in radv when such inputs are present.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 15:27:15 +01:00
Giovanni Mascellani
312de24b9a tests: Test implicit conversions for return statements.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-17 14:17:24 +01:00
Joshua Ashton
a55c51a2b7 vkd3d-shader/hlsl: Avoid hard-coding array sizes in hlsl_type_to_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 21:39:29 +01:00
Zebediah Figura
ae4ff17b18 vkd3d-shader/hlsl: Write SM4 sampler declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 21:39:12 +01:00
Zebediah Figura
eca2d90a6e vkd3d-shader/hlsl: Handle samplers in write_sm1_uniform().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-10 21:39:09 +01:00
Zebediah Figura
7c534f4a77 tests: Return a failure code if unable to parse a shader_test file.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 19:56:28 +01:00
Zebediah Figura
3ca8f52b0b tests: Add a shader test for texture sampling.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 19:56:26 +01:00
Matteo Bruni
9c645bb1f6 tests: Initialize current_texture variable.
It avoids a compiler warning for me. There is no actual issue though.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-09 19:56:23 +01:00
Philip Rebohle
45ccf85ae6 vkd3d-shader/spirv: Ignore break instructions outside active blocks.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 22:39:55 +01:00
Conor McCarthy
a1df197561 tests: Add a test for an unconditional break instruction at the end of a loop block.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 22:39:54 +01:00
Philip Rebohle
4e398459b1 vkd3d-shader/spirv: Omit the "endloop" branch to the loop start if the loop block was previously ended.
Avoiding generation of invalid SPIR-V.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 22:39:51 +01:00
Giovanni Mascellani
581d71310f vkd3d-shader/hlsl: Fix a typo in an error message.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:55 +01:00
Giovanni Mascellani
427dbf4062 vkd3d-shader/hlsl: Align conditionals and loops in the IR dump.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:52 +01:00
Giovanni Mascellani
10593ad653 vkd3d-shader/hlsl: Write SM4 conditionals.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:48 +01:00
Giovanni Mascellani
09dfe62368 vkd3d-shader/hlsl: Write SM4 loops.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:44 +01:00
Giovanni Mascellani
ac6164f3d9 vkd3d-shader/hlsl: Introduce a helper to write SM4 code blocks.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:40 +01:00
Zebediah Figura
d76d777876 vkd3d-shader/hlsl: Parse the Sample() method.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:30 +01:00
Zebediah Figura
4dfe66b1f1 vkd3d-shader/hlsl: Lex the SamplerState keyword.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:27 +01:00
Zebediah Figura
da2dcb128e tests: Allow using multiple [test] directives in the same shader_test file.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:17 +01:00
Zebediah Figura
00d5f4e761 vkd3d-shader/hlsl: Write SM4 image load instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:44:11 +01:00
Zebediah Figura
9d5dce2dc1 vkd3d-shader/hlsl: Define a symbolic constant to represent the D3D_SIF_TEXTURE_COMPONENTS shift.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 11:43:58 +01:00
Zebediah Figura
c2057c6849 vkd3d-shader/hlsl: Don't explicitly mark the return variable as read in compute_liveness().
The return variable was already added to the extern_vars list and marked as an
output semantic by the append_output_var_copy() call above, so the preceding
loop will take care of setting the last_read field.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:54 +01:00
Zebediah Figura
182707f168 vkd3d-shader/hlsl: Factor out an hlsl_block structure.
This doesn't hold anything other than a list, nor do I have any immediate plans
for it to hold anything other than a list, but I'm adding it for some degree of
clarity. Passing around untyped list pointers is not my favourite hobby.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:50 +01:00
Zebediah Figura
8485a7c450 vkd3d-shader/hlsl: Store the function body directly in the hlsl_ir_function_decl structure.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:47 +01:00
Zebediah Figura
423213fb05 vkd3d-shader/hlsl: Generate synthetic temps for object uniforms as well.
These can be assigned to when compatibility mode is used.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:42 +01:00
Zebediah Figura
5e3b8b70fc vkd3d-shader/hlsl: Use last_read for resource loads.
This fixes DCE.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:38 +01:00
Giovanni Mascellani
ed0223e629 vkd3d-shader/hlsl: Add a helper for comparison operations.
The only difference from arithmetic operations is that the result
has always base type bool.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:31 +01:00
Giovanni Mascellani
6658da8861 vkd3d-shader/hlsl: Do not cast types in add_expr.
Determining cast types and return type is now delegated to higher level
helpers, which are differentiated according to the operation category.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:27 +01:00
Giovanni Mascellani
32bfc8d017 vkd3d-shader/hlsl: Add a helper for unary arithmetic operations.
The helper doesn't do much, but it is useful to mark operations as
arithmetic as opposed to other categories (like bitwise and boolean),
which have a different treatment.

It also saves an explicit variable to most callers, which can directly
pass the argument node instead of creating an array.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:24 +01:00
Giovanni Mascellani
ed7d2b5316 vkd3d-shader/hlsl: Add helpers for binary arithmetic operations.
This commit moves the logic for casting operands to a common type
out of add_expr, so that different helpers can use different logics
(corresponding to the different typing rules used by e.g. arithmetic,
comparison or bitwise operations).

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:51:15 +01:00
Giovanni Mascellani
fc053b1c08 vkd3d-shader/hlsl: Allow more implicit conversions between matrices and vectors.
HLSL seems to treat matrices 1xN or Nx1 as vectors when looking for
implicit conversions.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:50:27 +01:00
Giovanni Mascellani
ce9a86975f vkd3d-shader/hlsl: Return the shape of the left operand when appropriate.
The assumption about the size of matrices is not correct: it is
legitimate to compose a matrix 2x2 with a vector of length 4, in which
case it appears that the result has the shape of the first (leftmost)
operand. Even for matrices 1xN or Nx1, the result is not always a
vector: in general it has the shape of the first operand again.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:50:23 +01:00
Giovanni Mascellani
9196f28822 vkd3d-shader/hlsl: Simplify common shape computation.
When t1 is a vector type, it's already supposed to have dimx == max_dim_1
and dimy == 1, and the same for t2.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:50:20 +01:00
Giovanni Mascellani
e9edb2161e vkd3d-shader/hlsl: Move the common shape computation to expr_common_shape.
Function expr_common_shape can be used for boolean operators,
for which a common shape must be determined even if the base type
of the result is always bool.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:50:17 +01:00
Giovanni Mascellani
ced3b9a31c vkd3d-shader/hlsl: Introduce a helper for getting numeric types.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-01 20:50:14 +01:00
Conor McCarthy
53a7ba4a3a vkd3d: Enable EXT_shader_stencil_export if available.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:37:01 +02:00
Conor McCarthy
4a2fbe54c0 vkd3d-shader/spirv: Implement support for stencil export.
Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:37:00 +02:00
Conor McCarthy
b8ab71e4dc tests: Add a test for exporting SV_StencilRef from a pixel shader.
Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:36:58 +02:00
Conor McCarthy
fed21a1245 vkd3d: Implement output merger logic ops.
Using vk_logic_op_from_d3d12() from a vkd3d-proton patch by Philip
Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:36:56 +02:00
Conor McCarthy
90d564f798 tests: Add tests for output merger logic ops.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:36:55 +02:00
Conor McCarthy
566eeb0465 vkd3d: Take the mip-level into account for the 3D UAV slice check in vkd3d_create_texture_uav().
Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:36:53 +02:00
Conor McCarthy
c8d94c036d vkd3d: Do not emit a FIXME for UINT_MAX Texture3D.WSize in vkd3d_create_texture_uav().
Specifying UINT_MAX here is equivalent to specifying the remaining layers for
the mip-level.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-18 18:36:51 +02:00
Conor McCarthy
3948056256 vkd3d: Pass descriptor offset info to vkd3d-shader for graphics pipelines.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
1edbd3d698 vkd3d: Pass descriptor offset info to vkd3d-shader for compute pipelines.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
6a88c57f5d vkd3d: Introduce a helper function to chain vkd3d structures.
Analogous to vk_prepend_struct().

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
e328d0b178 vkd3d-shader/spirv: Implement support for descriptor array offsets.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Philip Rebohle
ea1b01b1f8 vkd3d-shader/spirv: Implement texel offset support for sample_c instructions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
ebc82a622c tests: Add tests for sample_c texel offsets.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
a86a681912 vkd3d: Reject 0 sample count textures in d3d12_resource_validate_desc().
Buffers with 0 sample counts were already rejected here.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
a36dfef004 tests: Add a test for 0 sample count resources to test_create_committed_resource().
Windows returns E_INVALIDARG at least on AMD and Intel.
Psychonauts 2 attempts to create resources with this argument.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
2bf4539c0d tests: Add tests for d3d12_command_list_IASetVertexBuffers() calls with NULL views.
Part of a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Conor McCarthy
f172647d5e vkd3d: Ignore d3d12_command_list_IASetVertexBuffers() calls with NULL views.
Part of a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 22:38:15 +02:00
Zebediah Figura
e7e46be371 vkd3d-shader/hlsl: Write SM4 texture declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 10:14:05 +02:00
Zebediah Figura
4678f2f156 vkd3d-shader/hlsl: Write bound resources into the RDEF table.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 10:14:03 +02:00
Zebediah Figura
c27def4276 vkd3d-shader/hlsl: Sort extern objects by type and resource index for SM4.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 10:14:00 +02:00
Zebediah Figura
899c2f25e2 vkd3d-shader/hlsl: Allocate textures for SM4.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-15 10:13:58 +02:00
Conor McCarthy
832e740248 vkd3d: Reject overflowing descriptor ranges.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-13 22:38:06 +02:00
Conor McCarthy
8239064826 vkd3d: Reject empty descriptor ranges.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-13 22:38:06 +02:00
Conor McCarthy
36f6af1570 tests: Add more tests for invalid descriptor tables.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-13 22:38:06 +02:00
Conor McCarthy
41685c374a tests: Add a UINT_MAX layer count test to test_clear_depth_stencil_view().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:38:13 +02:00
Conor McCarthy
dbb07a40f8 tests: Add UINT_MAX layer count tests to test_clear_render_target_view().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:38:09 +02:00
Conor McCarthy
e3495613fb tests: Test a UINT_MAX layer count in test_clear_unordered_access_view_image().
Testing without the fixes in vkd3d_create_texture_uav() has nasty results in
radv and possibly others.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:38:06 +02:00
Henri Verbeet
8577747879 vkd3d: Normalise layer counts in d3d12_desc_create_srv().
I'm not aware of any issue caused by not normalising SRV layer counts, but
this makes it consistent with the other view types.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:38:04 +02:00
Conor McCarthy
3f6f615e50 vkd3d: Normalise layer counts in d3d12_dsv_desc_create_dsv().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:38:01 +02:00
Conor McCarthy
4c07252da6 vkd3d: Normalise layer counts in d3d12_rtv_desc_create_rtv().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:37:58 +02:00
Conor McCarthy
bec4f0a85e vkd3d: Normalise layer counts in vkd3d_create_texture_uav().
Passing UINT_MAX as layer count to Direct3D behaves similar to passing
VK_REMAINING_ARRAY_LAYERS to Vulkan. Since these have the same value,
everything usually works out even without normalisation. However, there are
some exceptions; for example, we calculate workgroup counts for UAV clears
from layer counts using vkd3d_compute_workgroup_count(), which doesn't handle
UINT_MAX. Normalising layer counts during view creation avoids having to
handle this issue in the rest of the code.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:37:56 +02:00
Conor McCarthy
85def272ae vkd3d-shader/spirv: Correctly handle bit shifts greater than 31 bits.
This is undefined behaviour in SPIR-V, but well-defined in Direct3D, so we
should explicitly 'and' the shift amount with 31.

Based on a vkd3d-proton patch by Philip Rebohle.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:37:53 +02:00
Conor McCarthy
0c3fb46a7a tests: Add a test for 5-bit masking of shader bit shift operands.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-12 18:37:51 +02:00
Robin Kertels
21725c5c08 vkd3d: Ignore D3D12_SO_NO_RASTERIZED_STREAM when stream output is disabled.
Fixes the black screen problem in Diablo 2: Resurrected.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-11 21:25:28 +02:00
Conor McCarthy
8fbe785c11 tests: Use D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER for constant buffers in test_unbounded_resource_arrays().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-11 21:25:27 +02:00
Conor McCarthy
58b52f6950 tests: Use a bounded range between unbounded ranges in test_unbounded_resource_arrays().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-11 21:25:25 +02:00
Conor McCarthy
821bb0c5cf vkd3d-shader/spirv: Add non-uniform decorations.
Based in part on vkd3d-proton patches by Philip Rebohle and Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-11 21:25:22 +02:00
Zebediah Figura
cd2df526e1 vkd3d-shader/hlsl: Parse the Load() method.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:56:33 +02:00
Zebediah Figura
aafe776401 vkd3d-shader/hlsl: Handle texture types in hlsl_type_to_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:56:30 +02:00
Zebediah Figura
a56c294abe vkd3d-shader/hlsl: Parse explicitly typed texture types.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:56:28 +02:00
Zebediah Figura
a318f36e59 vkd3d-shader/hlsl: Lex the Texture* keywords.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:56:26 +02:00
Zebediah Figura
fcb03a9947 vkd3d-shader/hlsl: Parse texture types.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-08 16:56:23 +02:00
Giovanni Mascellani
64bd7f677c tests: Mark WriteToSubresource test as todo on NVIDIA.
Similarly to ReadFromSubresource, WriteToSubresource is currently
implemented only for images with linear tiling, which NVIDIA drivers
currently do not support.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 22:27:04 +02:00
Conor McCarthy
104626cc1d vkd3d: Create and write descriptor sets for root signature unbounded ranges.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 20:28:44 +02:00
Conor McCarthy
d3090699c5 vkd3d: Reject descriptor tables containing register collisions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 20:28:41 +02:00
Conor McCarthy
c5fdd2f404 vkd3d: Reject OFFSET_APPEND after unbounded ranges in d3d12_root_signature_info_count_descriptors().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 20:28:38 +02:00
Henri Verbeet
441d8e24b2 tests: Add root signature tests for unbounded descriptor ranges.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 20:28:35 +02:00
Conor McCarthy
39ec44f345 tests: Add root signature tests for descriptor register range collisions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 20:28:30 +02:00
Henri Verbeet
b5a7abbfa6 vkd3d-shader/sm1: Add support for vkd3d_shader_scan().
Nominally, at least. Not all of the early shader models explicitly
declare resources and samplers, so those may currently get missed for
those.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 18:35:46 +02:00
Henri Verbeet
f7662f9878 vkd3d-shader/sm1: Introduce a parser for the legacy D3D byte-code format.
This is largely derived from the parser in Wine/wined3d, as of wine-6.18.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 18:35:44 +02:00
Henri Verbeet
28316b2694 vkd3d-shader: Introduce struct vkd3d_shader_parser_ops.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 18:35:42 +02:00
Henri Verbeet
f5c6f2ea0e vkd3d-shader: Introduce vkd3d_shader_parser_error().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 18:35:40 +02:00
Henri Verbeet
a0c2e52b4b vkd3d-shader/sm4: Set an error state when shader_sm4_error() is called.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 18:35:38 +02:00
Henri Verbeet
8543a1741e vkd3d-shader/sm4: Use the parser location in shader_sm4_error().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-06 18:35:36 +02:00
Zebediah Figura
1e62adbee7 tests: Add a test for explicitly typed textures.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 21:09:25 +02:00
Zebediah Figura
b1889215ee tests: Add a test for texture load instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 21:09:20 +02:00
Zebediah Figura
5f8becada4 tests: Use % as the shader_test comment character.
So as to avoid clashing with the preprocessor.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 21:09:16 +02:00
Zebediah Figura
12acfd9724 vkd3d-shader/hlsl: Get rid of hlsl_type_is_void().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 21:09:12 +02:00
Zebediah Figura
ded7b381e5 vkd3d-shader/hlsl: SM4 immediate constants do not have a register index.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 21:09:07 +02:00
Henri Verbeet
18e838a1cc vkd3d-shader/sm4: Maintain the parser location in the vkd3d_shader_parser structure.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 15:34:21 +02:00
Henri Verbeet
aca39afd73 vkd3d-shader/sm4: Store the message context pointer in the vkd3d_shader_parser structure.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 15:34:20 +02:00
Henri Verbeet
6be802ac1f vkd3d-shader/sm4: Get rid of the redundant "shader_version" field in the vkd3d_shader_sm4_parser structure.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 15:34:18 +02:00
Henri Verbeet
3023d6ba46 vkd3d-shader/sm4: Rename the vkd3d_sm4_data structure to vkd3d_shader_sm4_parser.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 15:34:16 +02:00
Henri Verbeet
88c8d11805 vkd3d-shader/sm4: Store a vkd3d_shader_parser structure in the vkd3d_sm4_data structure.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-05 15:34:14 +02:00
Matteo Bruni
49eba71844 vkd3d-shader: Allocate memory for a string buffer at init time.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:52 +02:00
Matteo Bruni
c3f8531477 vkd3d-shader: Don't resize the buffer when there is enough free space.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:46 +02:00
Zebediah Figura
a1f938e8e4 vkd3d-shader/hlsl: Pass the original name string to hlsl_new_type().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:39 +02:00
Zebediah Figura
ec8d8e6f73 vkd3d-shader/hlsl: Cache matrix types.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:37 +02:00
Zebediah Figura
b8502ed51c vkd3d-shader/hlsl: Use cached vector types in more places.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:35 +02:00
Zebediah Figura
98cfd7b09f vkd3d-shader/hlsl: Avoid hardcoding the size of the operands array.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:32 +02:00
Giovanni Mascellani
897ba6a3c7 vkd3d-shader/hlsl: Specify the destination register in struct sm4_instruction as an array.
Some instructions (e.g. umul) have multiple destination registers.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:29 +02:00
Zebediah Figura
efab7c82a5 vkd3d-shader/hlsl: Parse state blocks in variable definitions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-01 19:32:26 +02:00
Conor McCarthy
04bb6c395f vkd3d-shader/sm4: Skip second-order extended operands.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:17:35 +02:00
Conor McCarthy
9e40fe5768 vkd3d-shader/sm4: Parse the "non-uniform" modifier.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:17:34 +02:00
Conor McCarthy
a422e37953 vkd3d-shader/sm4: Parse register precision modifiers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:17:32 +02:00
Conor McCarthy
cddd978be6 vkd3d-shader/sm4: Parse register modifiers separately from the extended operand type.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:17:30 +02:00
Giovanni Mascellani
859f80930d vkd3d-shader/hlsl: Fix type comparison for column-major matrices.
Previously hlsl_types_are_equal considered two matrices of different
type if one of those had an explicit column-major modifier while the
other didn't have any (in which case the matrix is still considered
column-major by default).

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:14:03 +02:00
Giovanni Mascellani
d6d6971fc9 vkd3d-shader/hlsl: Fix a few memory leaks.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:14:00 +02:00
Giovanni Mascellani
1502740d5b vkd3d-shader/hlsl: Fix a memory leak.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-28 20:13:58 +02:00
Zebediah Figura
58c80574d8 vkd3d-shader/hlsl: Factor out a variable_decl rule.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 20:41:48 +02:00
Zebediah Figura
19b21ed005 vkd3d-shader/hlsl: Get rid of append_unop().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 20:41:46 +02:00
Zebediah Figura
8930bb734f vkd3d-shader/hlsl: Get rid of the unary_op rule.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 20:41:44 +02:00
Zebediah Figura
9a627494a3 vkd3d-shader/hlsl: Factor out add_unary_expr().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 20:41:42 +02:00
Zebediah Figura
14e9a1ba1c vkd3d-shader/hlsl: Don't dereference a NULL offset_node in hlsl_offset_from_deref().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-27 20:41:39 +02:00
Zebediah Figura
6765c1dfb4 vkd3d-shader/hlsl: Separate an add_constructor() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 20:24:59 +02:00
Giovanni Mascellani
62b25bc52b vkd3d-shader/hlsl: Respect the deref offset for uniforms in sm4_register_from_deref().
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 20:24:53 +02:00
Zebediah Figura
6f85aad54b vkd3d-shader/hlsl: Do not try to dereference the else_instrs list pointer if there is no else block.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 20:22:51 +02:00
Zebediah Figura
2ebfa91062 vkd3d-shader/hlsl: Introduce an allocation helper for vkd3d_realloc() as well.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 20:22:48 +02:00
Zebediah Figura
b4e301b2d8 vkd3d-shader/hlsl: Store constant values as an array of unions.
This allows us to more easily manipulate individual elements in a type-agnostic
way. For example, it allows easier implementation of constant swizzle folding.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-23 20:22:44 +02:00
Zebediah Figura
e2b57f6d2b vkd3d-shader/hlsl: Write SM4 exponent instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 20:53:33 +02:00
Zebediah Figura
960a473c6d vkd3d-shader/hlsl: Write SM4 logarithm instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 20:53:31 +02:00
Zebediah Figura
2461ad601b vkd3d-shader/hlsl: Parse the pow() intrinsic.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 20:53:17 +02:00
Zebediah Figura
96fd5f74f9 vkd3d-shader/hlsl: Write SM4 absolute value instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 20:53:08 +02:00
Zebediah Figura
c5e50ae658 vkd3d-shader/hlsl: Parse the abs() intrinsic.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 20:53:01 +02:00
Zebediah Figura
75a1a24d63 vkd3d-shader: Factor out a vkd3d_shader_trace_text() helper and use it in vkd3d_spirv_dump() (Valgrind).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:56:31 +02:00
Zebediah Figura
155812b124 vkd3d-shader/hlsl: Write SM4 saturate instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:56:31 +02:00
Zebediah Figura
f0955c164a vkd3d-shader/hlsl: Parse the saturate() intrinsic.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:56:27 +02:00
Zebediah Figura
4ecdd280ac vkd3d-shader/hlsl: Write SM4 min instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:05:13 +02:00
Zebediah Figura
ccaa7d2c2b vkd3d-shader/hlsl: Write SM1 min instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:05:07 +02:00
Zebediah Figura
c0a7e3e40a vkd3d-shader/hlsl: Write SM4 max instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:05:05 +02:00
Zebediah Figura
b46900bb82 vkd3d-shader/hlsl: Write SM1 max instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:05:02 +02:00
Conor McCarthy
eadf0ba88e vkd3d: Do not attempt to enable primitive restart for non-strip topology.
Prevents a validation failure if a d3d12 strip cut value is supplied.
Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-17 22:04:27 +02:00
Giovanni Mascellani
46282caf0f vkd3d-shader/hlsl: Write constant buffer offsets in bytes.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:35:07 +02:00
Giovanni Mascellani
eeeb9a5c2a vkd3d-shader/hlsl: Write dimension for constant buffer registers.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:35:05 +02:00
Giovanni Mascellani
3522d0f3a7 tests: Test a for loop, with break and continue.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:58 +02:00
Giovanni Mascellani
d4adbe81a0 tests: Test the shape of the sum of two numeric values.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:53 +02:00
Henri Verbeet
77b5125fda vkd3d-shader/glsl: Explicitly initialise "buffer" in vkd3d_glsl_generator_create().
So that we don't get in trouble if vkd3d_string_buffer_init() were to
start doing more than zeroing fields.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:46 +02:00
Zebediah Figura
c53a641b26 vkd3d-shader/hlsl: Write SM4 casts to uint.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:08 +02:00
Zebediah Figura
b08e8a9177 vkd3d-shader/hlsl: Write SM4 casts to int.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:06 +02:00
Zebediah Figura
9d54153271 vkd3d-shader/hlsl: Write SM4 casts to float.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:03 +02:00
Zebediah Figura
cb4970e9ca tests: Test casts to uint.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:34:01 +02:00
Zebediah Figura
d9eee8f24a tests: Test casts to int.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:33:59 +02:00
Zebediah Figura
6fb5d2c11c tests: Test casts to half.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:33:56 +02:00
Zebediah Figura
9d1f9746b7 tests: Test casts to float.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-15 18:33:53 +02:00
Henri Verbeet
4509f089e5 vkd3d-shader: Introduce shader_sm4_reset().
This allows us to drop the "ptr" argument to various functions.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 17:52:16 +02:00
Henri Verbeet
26009069dd vkd3d-shader: Pass a vkd3d_shader_parser structure to shader_sm4_is_end().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 17:52:14 +02:00
Henri Verbeet
bb482332bf vkd3d-shader: Pass a vkd3d_shader_parser structure to shader_sm4_read_instruction().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 17:52:13 +02:00
Henri Verbeet
12190ee3a9 vkd3d-shader: Pass a vkd3d_shader_parser structure to shader_sm4_read_header().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 17:52:11 +02:00
Henri Verbeet
661570254d vkd3d-shader: Pass a vkd3d_shader_parser structure to shader_sm4_free().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-09 17:52:09 +02:00
Conor McCarthy
ce07710f49 tests: Add tests for an unbounded sampler array.
Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:41:43 +02:00
Conor McCarthy
9afbe598e9 tests: Add tests for unbounded resource arrays.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:41:40 +02:00
Giovanni Mascellani
8555896bb0 tests: Test casting to and then from bool.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:41:19 +02:00
Conor McCarthy
471b8e2206 vkd3d: Handle D3D_PRIMITIVE_TOPOLOGY_UNDEFINED.
Bundles need to set an undefined topology to match D3D12 behaviour.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:41:10 +02:00
Conor McCarthy
2ed344a5f0 vkd3d: Change to void the return type for ID3D12GraphicsCommandList::ClearState().
ClearState() does not return a value.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:41:07 +02:00
Conor McCarthy
eb3d8c911c vkd3d-shader: Free the capabilities array on spirv builder destruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:41:01 +02:00
Zebediah Figura
d035f3c2ff vkd3d-shader/hlsl: Parse the clamp() intrinsic.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:40:55 +02:00
Zebediah Figura
99674ab60f vkd3d-shader/hlsl: Parse the max() intrinsic.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:40:52 +02:00
Zebediah Figura
f86e4d6b92 vkd3d-shader/hlsl: Use get_overloaded_func() only to find exact matches.
The parameters are specified as a list of hlsl_ir_var structures, but
add_call() is given an array of hlsl_ir_node pointers. Even if the former were
changed to use an array instead, it's not worth trying to reuse the same
function for both cases.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:40:49 +02:00
Zebediah Figura
32ba154eb2 vkd3d-shader/hlsl: Parse function calls.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:40:46 +02:00
Zebediah Figura
6e182e0206 tests: Add a simple test for function overloads.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-08 17:40:40 +02:00
Henri Verbeet
1c8b0d1062 vkd3d-shader: Pass a vkd3d_shader_parser structure to vkd3d_dxbc_binary_to_text().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 22:02:06 +02:00
Henri Verbeet
a129206e7e vkd3d-shader: Pass a vkd3d_shader_parser structure to vkd3d_shader_trace().
Mostly to avoid passing around void pointers.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 22:02:03 +02:00
Henri Verbeet
a8b062000e vkd3d-shader: Only use scan_dxbc() for scanning dxbc-tpf source.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 22:01:59 +02:00
Henri Verbeet
7fa0de03b9 vkd3d-shader/hlsl: Set the source name in hlsl_ctx_init().
Without this, HLSL compiler messages were missing the source name. For
example, when attempting to compile gears.hlsl from the "gears" demo
with vkd3d-compiler:

    ":33:17: E5000: syntax error, unexpected NEW_IDENTIFIER"

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 22:01:55 +02:00
Henri Verbeet
cfc09a210a vkd3d-shader: Dump HLSL shaders with a ".hlsl" suffix.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 22:01:52 +02:00
Zebediah Figura
28092bb200 vkd3d-shader/hlsl: Use the modifiers location when validating modifiers on casts.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 17:10:46 +02:00
Zebediah Figura
6ee423a21b vkd3d-shader/hlsl: Merge the "type" and "base_type" rules.
It's certainly invalid to declare a vector of non-scalars, but it doesn't need
to result in a syntax error. Indeed native d3dcompiler does not emit a syntax
error in this case.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 17:10:43 +02:00
Zebediah Figura
7e353ce62b vkd3d-shader/hlsl: Write SM4 negation instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 17:10:40 +02:00
Zebediah Figura
2fb1643ee0 vkd3d-shader/hlsl: Write SM4 division instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 17:10:37 +02:00
Zebediah Figura
0d6fb615d2 vkd3d-shader/hlsl: Write SM4 multiplication instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-01 17:10:33 +02:00
Henri Verbeet
8cc940df93 build: Install the gears and triangle demos.
These were originally intended more as documentation than as end-user
executables, but there's some value in using them for diagnostic
purposes, much like e.g. glxgears.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:27 +02:00
Henri Verbeet
0de7a2eeb5 vkd3d-compiler: Default to monochrome output when NO_COLOUR/NO_COLOR is set.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:26 +02:00
Henri Verbeet
cc05e9c391 vkd3d-compiler: Mention the default target type in the help text for -b.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:24 +02:00
Henri Verbeet
0b293ceae7 vkd3d-compiler: Reference --print-target-types in the help text for -b.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:21 +02:00
Henri Verbeet
5f4fc9cb06 vkd3d-shader: Use vkd3d_swizzle_get_component() in shader_dump_src_param().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:18 +02:00
Giovanni Mascellani
8b6db3d366 vkd3d-shader/hlsl: Cleanup HLSL context during error path.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:05 +02:00
Giovanni Mascellani
910aa4df01 vkd3d-shader/hlsl: Do not swallow compilation errors.
There are cases where compilation fails, but no error message is
recorded. They usually correspond to unimplemented features, but
still failure should be forwarded to the caller, otherwise it will
manifest itself later in more confusing ways (like not being able
to find a function even though it was apparently correctly compiled).

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-31 10:56:03 +02:00
Giovanni Mascellani
b5251b3350 vkd3d-shader/hlsl: Simplify expr_common_base_type.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:47 +02:00
Giovanni Mascellani
176b12f9e4 vkd3d-shader/hlsl: Return int as common type between bool and bool.
So does the native d3dcompiler, following the spirit of integer promotion
in C.

Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:43 +02:00
Giovanni Mascellani
5a55e8e8d5 vkd3d-shader/hlsl: Move the base type equality case in expr_common_base_type.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:39 +02:00
Matteo Bruni
54bef05070 include: Print failed allocation size.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:28 +02:00
Zebediah Figura
fbcdc7a9d4 vkd3d-shader/hlsl: Write SM4 addition instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:18 +02:00
Zebediah Figura
ebfb8be1c6 vkd3d-shader/hlsl: Write SM4 constant instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:15 +02:00
Zebediah Figura
32fd18837b vkd3d-shader/hlsl: Write SM4 swizzle instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:13 +02:00
Zebediah Figura
51b8c46b9d vkd3d-shader/hlsl: Write SM4 load instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:11 +02:00
Zebediah Figura
4232231dd3 vkd3d-shader/hlsl: Write SM4 store instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:08 +02:00
Zebediah Figura
ac88631755 vkd3d-shader/hlsl: Avoid crashing when emitting a dereference with non-constant offset.
Some places assert() that the register is allocated.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 21:20:04 +02:00
Zebediah Figura
864e816de8 vkd3d-shader/hlsl: Write the SHDR token count.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:51:10 +02:00
Zebediah Figura
636ec27381 vkd3d-shader/hlsl: Write the SM4 ret instruction.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:51:08 +02:00
Zebediah Figura
40ec063a26 vkd3d-shader/hlsl: Write the SM4 dcl_temps instruction.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:51:01 +02:00
Zebediah Figura
62456beeda vkd3d-shader/hlsl: Write SM4 semantic declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:50:59 +02:00
Zebediah Figura
5da4949f7c vkd3d-shader/hlsl: Write SM4 constant buffer declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:50:57 +02:00
Zebediah Figura
464dae2c46 vkd3d-shader/hlsl: Write SM4 signatures.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:50:55 +02:00
Zebediah Figura
486c525dc1 include: Update the D3D_SHADER_VARIABLE_TYPE enumeration.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:50:53 +02:00
Zebediah Figura
62c60776b9 vkd3d-shader/hlsl: Use vkd3d_make_u32() in more places.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-23 20:50:51 +02:00
Conor McCarthy
04a08088ec vkd3d: Calculate shader visibility once per root signature table.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:43:30 +02:00
Conor McCarthy
2021734a7b vkd3d: Pass a struct d3d12_root_descriptor_table_range to vk_write_descriptor_set_from_d3d12_desc().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:43:27 +02:00
Conor McCarthy
c7fc5ff819 vkd3d: Store descriptor sets in an array.
Unbounded ranges can result in multiple descriptor sets being
used.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:43:24 +02:00
Atharva Nimbalkar
0d03a52f6c vkd3d-shader/glsl: Implement VKD3DSIH_DCL_OUTPUT.
Signed-off-by: Atharva Nimbalkar <atharvakn@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:56 +02:00
Atharva Nimbalkar
d71483d0e5 vkd3d-shader/glsl: Implement VKD3DSIH_RET.
Signed-off-by: Atharva Nimbalkar <atharvakn@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:53 +02:00
Atharva Nimbalkar
ebe3bf0c00 vkd3d-shader/glsl: Implement VKD3D_DCL_OUTPUT_SIV.
Signed-off-by: Atharva Nimbalkar <atharvakn@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:50 +02:00
Atharva Nimbalkar
f5b95a08a5 vkd3d-shader/glsl: Implement VKD3DSIH_DCL_INPUT.
Signed-off-by: Atharva Nimbalkar <atharvakn@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:47 +02:00
Atharva Nimbalkar
72435b8ac7 vkd3d-shader/glsl: Implement vkd3d_glsl_generator_generate().
Signed-off-by: Atharva Nimbalkar <atharvakn@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:44 +02:00
Zebediah Figura
d509e7ead5 vkd3d-shader/hlsl: Write SM5 RDEF extensions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:17 +02:00
Zebediah Figura
b89b02d21f vkd3d-shader/hlsl: Write data types into the RDEF section.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:14 +02:00
Zebediah Figura
f402f7042e vkd3d-shader/hlsl: Write the RDEF section.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:10 +02:00
Zebediah Figura
ed49461309 vkd3d-shader/hlsl: Write an empty SHDR section.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:08 +02:00
Zebediah Figura
96d523722d vkd3d-shader/hlsl: Write empty SM4 shaders.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:42:04 +02:00
Zebediah Figura
2db8cbc9a7 vkd3d-shader/hlsl: Free all instruction lists in reverse order (Valgrind).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-19 20:41:48 +02:00
Atharva Nimbalkar
0376a8b4ee vkd3d-shader: Implement VKD3D_SHADER_TARGET_GLSL.
Signed-off-by: Atharva Nimbalkar <atharvakn@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-18 23:16:52 +02:00
Chip Davis
34edc44b6f tests: Parse max ulps in the "probe rect rgba" case. (Clang).
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:41:10 +02:00
Zebediah Figura
3dfe0e1710 vkd3d: Do not append a newline to messages passed to d3d12_device_mark_as_removed().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:41:06 +02:00
Zebediah Figura
c08a9cff7f vkd3d-shader/hlsl: Make some FIXME messages into proper compiler errors.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:40:59 +02:00
Zebediah Figura
65a13c8290 vkd3d-shader/hlsl: Remove a couple of redundant default switch cases.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:40:53 +02:00
Zebediah Figura
3cc6b565ce vkd3d-shader/hlsl: Split array copies.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:40:51 +02:00
Zebediah Figura
7960f9e373 vkd3d-shader/hlsl: Rename hlsl_ir_expr_op members.
For the sake of simplicity and clarity, especially in the interest of allowing
us to have expressions with larger numbers of terms.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:40:48 +02:00
Zebediah Figura
b65789e74a vkd3d-shader/hlsl: Use a designated initializer in debug_expr_op().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-16 18:40:44 +02:00
Conor McCarthy
f3c19dfedb vkd3d-shader: Implement UTOD instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:44:36 +02:00
Conor McCarthy
3623a99cf6 vkd3d-shader: Implement ITOD instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:44:32 +02:00
Conor McCarthy
88c08df03b vkd3d-shader: Implement DTOU instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:44:30 +02:00
Conor McCarthy
c61b573d9c vkd3d-shader: Implement DTOI instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:44:26 +02:00
Conor McCarthy
580747b224 vkd3d-shader: Implement DTOF instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:44:22 +02:00
Conor McCarthy
821389d274 vkd3d-shader: Implement FTOD instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-12 17:44:18 +02:00
Zebediah Figura
6e3bdb17dc vkd3d-shader: Lower SUB to NEG + ADD at parse time.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 20:58:27 +02:00
Zebediah Figura
ed7cdb3940 vkd3d-shader: Introduce vkd3d_make_u{16, 32}() helpers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 20:58:24 +02:00
Zebediah Figura
2dedc937a0 vkd3d-shader: Move SM1 code generation to a separate file.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 20:58:02 +02:00
Zebediah Figura
ae3df158d8 vkd3d-shader: Fold negations of constant integers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 20:58:00 +02:00
Zebediah Figura
b956efcaa4 vkd3d-shader: Fold constant casts from int to float.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 20:57:57 +02:00
Conor McCarthy
9cc4b38236 tests: Add a test for the shader DTOF instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 11:38:33 +02:00
Conor McCarthy
00752b8fa6 vkd3d-shader: Implement DMOVC instruction.
Based in part on a vkd3d-proton patch by Joshua Ashton.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 11:38:29 +02:00
Conor McCarthy
c3363faba2 vkd3d-shader: Implement DRCP instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 11:38:27 +02:00
Conor McCarthy
6656a92c45 vkd3d-shader: Implement DDIV instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 11:38:25 +02:00
Conor McCarthy
25b559ba25 vkd3d-shader: Implement DMUL instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 11:38:23 +02:00
Conor McCarthy
408295e336 tests: Add a test for the shader DMUL instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-11 11:38:18 +02:00
Conor McCarthy
a08d99e026 vkd3d: Initialise static samplers before the root descriptor tables.
If static samplers are done after an unbounded range has been initialised,
the samplers will occupy their own descriptor set layout instead of sharing
one with the bounded ranges.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-10 15:32:00 +02:00
Conor McCarthy
d746105835 vkd3d: Iterate over the root signature's range table instead of the D3D12 table.
Future sorting of ranges will greatly simplify processing of
unbounded ranges and handling of descriptor aliasing.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-10 15:31:58 +02:00
Conor McCarthy
e8ac03973d vkd3d: Introduce a helper function to append descriptor set layouts to the layout array.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-10 15:31:56 +02:00
Conor McCarthy
242261bc52 vkd3d-shader: Implement DFMA instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-09 21:43:40 +02:00
Conor McCarthy
ca82a379f5 tests: Add a test for the shader DFMA instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-09 21:43:38 +02:00
Conor McCarthy
74a9a0b167 vkd3d-shader: Implement DMIN instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-09 21:43:36 +02:00
Conor McCarthy
44a3ebb77c vkd3d-shader: Implement DMAX instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-09 21:43:34 +02:00
Zebediah Figura
cdb9c5808e build: Use dllimport/dllexport on Win32 targets.
Tested with x86_64-w64-mingw32-gcc.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-09 21:43:25 +02:00
Zebediah Figura
d27fee64ab build: Make the default symbol visibility "hidden".
We tag far fewer symbols this way.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-09 21:43:22 +02:00
Zebediah Figura
688cdb218e vkd3d-shader: Move SM4 byte code definitions to a separate header.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-06 12:31:17 +02:00
Chip Davis
73bc52c273 configure: Also extract the cross target from Clang compilers.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-06 12:31:15 +02:00
Chip Davis
25d79204e3 tests: Include <stddef.h> from "d3d12_crosstest.h". (Clang).
Neither MinGW's nor Microsoft's <windows.h> includes <stddef.h>, either
directly or indirectly. Also, unlike GCC, Clang's <inttypes.h> does not
include <stddef.h>, either. "vkd3d_windows.h" does include <stddef.h>,
and this is why building for the host works, even with Clang.

Fixes cross compilation errors with Clang related to using offsetof(3).

Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-06 12:31:13 +02:00
Zebediah Figura
6d687521d0 build: Use noinst_HEADERS instead of EXTRA_DIST to track demo and test headers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-04 18:21:54 +02:00
Zebediah Figura
587e85af5b build: Add hlsl.h and preproc.h to libvkd3d_shader_la_SOURCES.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-04 18:21:45 +02:00
Conor McCarthy
fabadf584f vkd3d-shader: Implement DNE instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-04 18:21:43 +02:00
Conor McCarthy
4ea3da3067 vkd3d-shader: Implement DLT instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-04 18:21:41 +02:00
Conor McCarthy
df60cffef1 vkd3d-shader: Implement DGE instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-04 18:21:38 +02:00
Conor McCarthy
f21510a9fc tests: Add tests for DGE and DLT instructions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-04 18:21:36 +02:00
Conor McCarthy
9ffe362641 vkd3d: Use Vulkan descriptor arrays if descriptor indexing is available.
Descriptor indexing is required for its partial binding feature. Separate
buffer and image descriptor arrays are needed for implementing D3D12 SRV and
UAV descriptor ranges, so not all of the Vulkan descriptors will be populated.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:36 +02:00
Conor McCarthy
1c96f76afc vkd3d: Return E_INVALIDARG if a descriptor range overflows.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:34 +02:00
Conor McCarthy
50c4e43eaa tests: Test for range overflow in test_root_signature_limits().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:32 +02:00
Conor McCarthy
eb804a5a9f vkd3d-shader: Implement DADD instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:27 +02:00
Conor McCarthy
2f09f1d359 vkd3d-shader: Emit saturate modifier for double-precision float registers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:25 +02:00
Conor McCarthy
c86570dff0 vkd3d-shader: Emit abs modifier for double-precision float registers.
Based on a vkd3d-proton patch by Joshua Ashton.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:23 +02:00
Conor McCarthy
506c98b4a2 vkd3d-shader: Handle 64-bit immediate constant registers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:21 +02:00
Conor McCarthy
a9eadaa06a vkd3d-shader: Add a 64-bit immediate constant register type.
Based in part on a vkd3d-proton patch by Joshua Ashton.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-03 15:57:18 +02:00
Conor McCarthy
341f9745fd vkd3d: Narrow the scope of cur_binding in d3d12_root_signature_init_root_descriptor_tables().
Simplifies the calling of a helper function to create descriptor arrays.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-02 19:10:39 +02:00
Conor McCarthy
112ed83dde vkd3d: Pass target info to vkd3d-shader for compute pipelines.
Required for enabling extensions, e.g. descriptor indexing.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-02 19:10:30 +02:00
Conor McCarthy
6fe884a02c vkd3d: Include descriptor indexing in the shader extensions if the device supports it.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-02 19:10:02 +02:00
Conor McCarthy
6d5e71f5b8 vkd3d: Resolve D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND during table parsing.
Simplifies the code path for handling array bindings and unbounded
ranges.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-02 19:09:56 +02:00
Chip Davis
d44c8e9feb tests: Do not use llabs(3) on an unsigned difference.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:49 +02:00
Zebediah Figura
26caa7136a vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_signature().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:46 +02:00
Zebediah Figura
dda2c4839d vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_static_samplers().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:44 +02:00
Zebediah Figura
bd88613c3e vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_parameters().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:42 +02:00
Zebediah Figura
e285eb2d23 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_descriptor1().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:40 +02:00
Zebediah Figura
7cf0d84ec9 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_descriptor().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:38 +02:00
Zebediah Figura
c95d028ee2 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_constants().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:36 +02:00
Conor McCarthy
8422a3a82a vkd3d-shader: Create descriptor array symbols for samplers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:32 +02:00
Conor McCarthy
be8f51666e vkd3d-shader: Handle descriptor array dynamic indexing.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-29 13:01:30 +02:00
Chip Davis
5812aa17c6 vkd3d: Pass vkd3d_pipeline_bind_point values to invalidate_root_parameters() calls.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:47 +02:00
Chip Davis
0efa6a2f11 vkd3d: Pass vkd3d_pipeline_bind_point values to set_root_cbv() calls.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:45 +02:00
Chip Davis
777b9dfc0e vkd3d: Pass vkd3d_pipeline_bind_point values to set_root_constants() calls.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:42 +02:00
Chip Davis
cad0d6770b vkd3d: Pass vkd3d_pipeline_bind_point values to set_descriptor_table() calls.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:39 +02:00
Chip Davis
829c861af4 vkd3d: Pass vkd3d_pipeline_bind_point values to set_root_signature() calls.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:35 +02:00
Chip Davis
4e383bf0fa vkd3d: Pass vkd3d_pipeline_bind_point values to update_descriptors() calls.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:20 +02:00
Zebediah Figura
63fbb62301 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_descriptor_table1().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:14 +02:00
Zebediah Figura
d1671829d9 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_descriptor_table().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:13 +02:00
Zebediah Figura
6f8be6c208 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_descriptor_ranges1().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:11 +02:00
Zebediah Figura
a0fc2a20f3 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_descriptor_ranges().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:09 +02:00
Zebediah Figura
743b1fc090 vkd3d-shader: Use vkd3d_bytecode_buffer helpers directly in shader_write_root_signature_header().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:07 +02:00
Conor McCarthy
4e63842a73 vkd3d-shader: Implement DMOV instruction.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:59:03 +02:00
Conor McCarthy
82237796ad vkd3d-shader: Replace individual SpvCapability bit fields with an array.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:58:52 +02:00
Conor McCarthy
e1b334aff8 vkd3d-shader: Exclude descriptor arrays from push constant buffer searches.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:58:50 +02:00
Conor McCarthy
5bebfe264d vkd3d-shader: Exclude descriptor arrays from combined sampler searches.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:58:48 +02:00
Conor McCarthy
dbb715a160 vkd3d-shader: Include register ranges in descriptor binding error messages.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-28 19:58:46 +02:00
Zebediah Figura
f5821c5dce vkd3d-shader: Use struct vkd3d_bytecode_buffer in vkd3d_shader_serialize_root_signature().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-27 13:55:44 +02:00
Zebediah Figura
70017e0e9e vkd3d-shader: Move the bytecode buffer helpers to vkd3d_shader_main.c.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-27 13:55:42 +02:00
Zebediah Figura
bcf272aa0b vkd3d: Introduce a vkd3d_bound_range() helper.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-27 13:55:40 +02:00
Zebediah Figura
9f0b475583 vkd3d-shader: Track bytecode buffer size in bytes.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 19:43:24 +02:00
Zebediah Figura
1ed82b9fc4 vkd3d-shader: Allocate the $Params buffer in hlsl_ctx_init().
For clarity.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 19:43:22 +02:00
Conor McCarthy
e292351fa9 vkd3d: Return E_INVALIDARG if a heap is too small for a placed resource.
Otherwise vkBindBufferMemory() or vkBindImageMemory() will fail, which
can result in a generic E_FAIL.

Based on a vkd3d-proton patch by Samuel Pitoiset which fixes a GPU hang
with Cyberpunk 2077.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:45 +02:00
Conor McCarthy
7cd4cf8aba tests: Test a buffer larger than the destination heap.
As per vkd3d-proton commit 72d9b322, E_INVALIDARG should be returned to
indicate the type of failure.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:42 +02:00
Conor McCarthy
b01104e47d vkd3d-shader: Compute XfbOffset for the slot of the specified element.
Fixes NVIDIA HairWorks GPU crash on Metro Exodus, and test failures
in test_line_tessellation().
Based on a vkd3d-proton patch by Hans-Kristian Arntzen.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:35 +02:00
Conor McCarthy
8860c4d077 vkd3d: Add support for UAV counters in pixel shaders.
Allows GRID (2019) to run in D3D12 mode.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49107
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:28 +02:00
Conor McCarthy
640b914bfb vkd3d: Introduce struct d3d12_pipeline_uav_counter_state.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:26 +02:00
Conor McCarthy
951af90f3e vkd3d-shader: Create descriptor array symbols for resources.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:23 +02:00
Conor McCarthy
a97d090010 vkd3d-shader: Get descriptor info for descriptor arrays.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:21 +02:00
Conor McCarthy
85eff9373d vkd3d-shader: Introduce to struct vkd3d_symbol a descriptor array symbol type.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:18 +02:00
Conor McCarthy
2924a481a7 vkd3d-shader: Find bindings for descriptor arrays.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:35:01 +02:00
Conor McCarthy
d11510f02e vkd3d-shader: Emit negation modifier for double-precision float registers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-26 17:34:49 +02:00
Conor McCarthy
bb0ae18efb tests: Use multiple stream output slots in test_line_tessellation().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 21:11:25 +02:00
Conor McCarthy
59cf70142a vkd3d-shader: Implement DEQ instruction.
Source modifiers and immediate constants are not supported.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-22 21:11:13 +02:00
Andrey Gusev
c1cd999079 vkd3d: Add missing parenthesis in vkd3d_init_format_info().
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:22:57 +02:00
Conor McCarthy
a4250e7d71 vkd3d: Rename d3d12_pipeline_state_init_compute_uav_counters() and handle pixel shaders.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:55 +02:00
Conor McCarthy
76ed601b69 tests: Add tests for a UAV counter in a graphics pipeline.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:53 +02:00
Conor McCarthy
3c4163a1b0 tests: Use D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT in test_uav_counters().
CounterOffsetInBytes must be a multiple of the required alignment,
and must be zero if no counter buffer is specified. This allows the
test to succeed in Windows.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:41 +02:00
Conor McCarthy
751d9342f5 tests: Delete spurious HLSL source line.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:35 +02:00
Conor McCarthy
4b919a10ad vkd3d-shader: Add shader component type double.
Based on a vkd3d-proton patch by Joshua Ashton.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:20 +02:00
Conor McCarthy
e6a676410a vkd3d-shader: Trace DXBC global flags for double-precision floating point ops and extensions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:18 +02:00
Conor McCarthy
d027ac4c15 vkd3d-shader: Enable Float64 capability if flagged in DXBC.
Based on a vkd3d-proton patch by Joshua Ashton.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:16 +02:00
Conor McCarthy
1a542a4bba tests: Add tests for shader double-precision floating point instructions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:14 +02:00
Conor McCarthy
b44478781d vkd3d-shader: Trace SM5.1 descriptor register ranges.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-19 12:14:07 +02:00
Conor McCarthy
1acb3de9bd vkd3d-shader: Normalise descriptor register indices to shader model 5.1.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-08 21:14:44 +02:00
Henri Verbeet
cd233fe018 tests: Add shader tests for dynamically indexed unbounded resource arrays.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 22:00:11 +02:00
Conor McCarthy
cea28ec77e vkd3d: Pad resource allocation size to allow texture placement at a 64kb alignment.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 01:07:10 +02:00
Conor McCarthy
fdad6a9bde tests: Add test for texture placement with a 64kb alignment.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-07 01:07:08 +02:00
Conor McCarthy
57faa09dc0 vkd3d-shader: Introduce shader_sm4_error() for reporting via vkd3d_shader_verror().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:45:28 +02:00
Conor McCarthy
219bd1fc07 vkd3d-shader: Call shader_sm4_set_descriptor_register_range() for raw resources.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:45:10 +02:00
Conor McCarthy
03422e9681 vkd3d-shader: Call shader_sm4_set_descriptor_register_range() for structured resources.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:45:08 +02:00
Conor McCarthy
09231ca8cd vkd3d-shader: Call shader_sm4_set_descriptor_register_range() for structured UAVs.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:45:06 +02:00
Conor McCarthy
bc3a9cdb78 vkd3d-shader: Call shader_sm4_set_descriptor_register_range() for raw UAVs.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:45:04 +02:00
Conor McCarthy
bbd44e854e vkd3d-shader: Call shader_sm4_set_descriptor_register_range() for samplers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:45:01 +02:00
Conor McCarthy
911f5649cc vkd3d-shader: Call shader_sm4_set_descriptor_register_range() for constant buffers.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:44:58 +02:00
Conor McCarthy
31613e060b vkd3d-shader: Introduce shader_sm4_set_descriptor_register_range().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-07-02 16:44:56 +02:00
Conor McCarthy
f3ed1c0d9a vkd3d-shader: Pass a struct vkd3d_shader_register_range to vkd3d_shader_scan_add_descriptor().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:39 +02:00
Conor McCarthy
21b638377e vkd3d-shader: Pass a struct vkd3d_shader_register_range to vkd3d_dxbc_compiler_get_descriptor_binding().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:35 +02:00
Conor McCarthy
df87c251f9 vkd3d-shader: Pass a struct vkd3d_shader_register_range to vkd3d_dxbc_compiler_emit_descriptor_binding_for_reg().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:31 +02:00
Conor McCarthy
390b5639a8 vkd3d-shader: Pass a struct vkd3d_shader_register_range to vkd3d_dxbc_compiler_get_descriptor_info().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:28 +02:00
Conor McCarthy
ead2c22fff vkd3d-shader: Pass a struct vkd3d_shader_register_range to vkd3d_dxbc_compiler_get_image_type_id().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:24 +02:00
Conor McCarthy
e2d61f8da3 vkd3d-shader: Pass a struct vkd3d_shader_register_range to vkd3d_dxbc_compiler_emit_combined_sampler_declarations().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:21 +02:00
Zebediah Figura
dd03242417 vkd3d-shader: Allocate constant buffers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:05 +02:00
Zebediah Figura
f7bf1dc01c vkd3d-shader: Calculate register size for SM4.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:44:01 +02:00
Zebediah Figura
5a8c89566f vkd3d-shader: Factor out register size calculation.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:43:57 +02:00
Zebediah Figura
faeeed84f9 vkd3d-shader: Apply type modifiers recursively when cloning a type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:43:52 +02:00
Zebediah Figura
1dbb146454 vkd3d-shader: Allow declarations to specify type modifiers redundant with the type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-28 13:43:49 +02:00
Conor McCarthy
b38f94cfdc vkd3d-shader: Store a vkd3d_shader_register_range structure in struct vkd3d_symbol_sampler_data.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:49:20 +02:00
Conor McCarthy
0c04c1777a vkd3d-shader: Store a vkd3d_shader_register_range structure in struct vkd3d_symbol_resource_data.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:49:19 +02:00
Conor McCarthy
533d901a24 vkd3d-shader: Store a vkd3d_shader_register_range structure in struct vkd3d_shader_constant_buffer.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:49:17 +02:00
Conor McCarthy
1b716f8c28 vkd3d-shader: Store a vkd3d_shader_register_range structure in struct vkd3d_shader_sampler.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:49:14 +02:00
Conor McCarthy
af2714832b vkd3d-shader: Introduce struct vkd3d_shader_register_range.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:49:12 +02:00
Conor McCarthy
20e0a241b4 tests: Add offset tests to test_uav_counters().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:49:07 +02:00
Conor McCarthy
67c002e7ca vkd3d: Remove fixme for UAV counter offsets.
The fixme says the offset is ignored, but it is used when creating
the Vulkan buffer view for the counter, and works as expected.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-24 21:48:59 +02:00
Zebediah Figura
0dc665484b vkd3d-shader: Track register size in components.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:07:55 +02:00
Zebediah Figura
dbfe63d6a1 vkd3d-shader: Keep track of the buffer in which a variable was defined.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:07:50 +02:00
Zebediah Figura
4695690ac8 vkd3d-shader: Parse buffer declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:07:48 +02:00
Zebediah Figura
c30ad6ddea vkd3d-shader: Get rid of HLSL_IR_SEQUENCE.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:07:46 +02:00
Zebediah Figura
e81989492c vkd3d-shader: Rename the "regnum" field of struct hlsl_reg_reservation to "index".
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:07:44 +02:00
Matteo Bruni
06551db10a vkd3d-shader: Zero-initialize constant definitions.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-23 15:07:41 +02:00
Zebediah Figura
e8e138ed54 vkd3d-shader: Store the hlsl_reg_reservation struct directly.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 21:08:22 +02:00
Zebediah Figura
bb79ca76ae vkd3d-shader: Store the register type for reservations as a char.
Essentially because the meaning of 'b' differs between SM1-3 and SM4+.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 21:08:20 +02:00
Zebediah Figura
abd6ceb489 vkd3d-shader: Write SM1 reciprocal instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 21:08:18 +02:00
Zebediah Figura
56bf11d813 vkd3d-shader: Fold constant casts from uint to float.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 21:08:16 +02:00
Zebediah Figura
98149da91a vkd3d-shader: Write SM1 subtraction instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-06-18 21:08:14 +02:00
Zebediah Figura
100c65c967 vkd3d-shader: Lower DIV to RCP + MUL for SM1.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 17:44:03 +02:00
Zebediah Figura
6493953516 vkd3d-shader: Distinguish between resource exhaustion and invalid shaders when returning failure.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 17:44:02 +02:00
Zebediah Figura
ba1cc670e6 vkd3d-shader: Use the HLSL string buffer cache in hlsl_type_to_string() and hlsl_modifiers_to_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 17:43:59 +02:00
Zebediah Figura
4fe1e86310 vkd3d-shader: Introduce HLSL string buffer helpers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 17:43:57 +02:00
Zebediah Figura
49726b0e64 vkd3d-shader: Introduce HLSL allocation helpers.
To automatically put the compilation context in a failed state.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 17:43:54 +02:00
Zebediah Figura
3a9f547be3 vkd3d-shader: Write SM1 negation instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 22:03:39 +02:00
Zebediah Figura
a35b0fc321 vkd3d-shader: Write SM1 multiplication instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 22:03:37 +02:00
Zebediah Figura
dfaa382460 vkd3d-shader: Write SM1 addition instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 22:03:35 +02:00
Zebediah Figura
2bef48f33b vkd3d-shader: Write SM1 swizzle instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 22:03:33 +02:00
Zebediah Figura
cd21ba703b vkd3d-shader: Write SM1 constant instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-20 22:03:31 +02:00
Zebediah Figura
6e47581415 vkd3d-shader: Write SM1 load instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 21:52:00 +02:00
Zebediah Figura
0238f60d8b vkd3d-shader: Sanity-check the offset data type in hlsl_reg_from_deref().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 21:51:59 +02:00
Zebediah Figura
9f73897725 vkd3d-shader: Introduce write_sm1_{src, dst}_register() helpers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 21:51:57 +02:00
Zebediah Figura
0997d65589 vkd3d-shader: Trace SM1 predefined registers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 21:51:55 +02:00
Zebediah Figura
b20e182da1 vkd3d-shader: Mark all declared non-static global variables as HLSL_STORAGE_UNIFORM.
Fixes: 549be35c0a
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 21:51:49 +02:00
Zebediah Figura
e237803011 vkd3d-shader: Write SM1 store instructions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-14 21:02:15 +02:00
Zebediah Figura
db849f2b45 vkd3d-shader: Write SM1 semantic declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-14 21:02:13 +02:00
Zebediah Figura
4d4aeb9bb4 tests: Add some tests for HLSL storage qualifiers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-14 21:02:11 +02:00
Zebediah Figura
07fb4ea1ae vkd3d-shader: Forbid declaring variables as both "uniform" and "static".
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-14 21:02:08 +02:00
Zebediah Figura
1bc2ea37c2 vkd3d-shader: Forbid declaring parameters as both "out" and "uniform".
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-14 21:02:06 +02:00
Zebediah Figura
7da320e522 vkd3d-shader: Allocate semantic registers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:28 +02:00
Zebediah Figura
0c3b1d1d89 vkd3d-shader: Avoid using the term "varying" for all semantics.
It's not particularly accurate; "varying" only refers to the interface between
two consecutive shader stages.

Replace it with "semantic" in most cases.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:26 +02:00
Zebediah Figura
445165823e vkd3d-shader: Parse the semantic index in hlsl_parse().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:24 +02:00
Zebediah Figura
549be35c0a vkd3d-shader: Only mark entry point parameters as uniform, input, or output.
In fact, don't even mark them directly; only mark the synthetic variables.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:20 +02:00
Zebediah Figura
16e549e579 vkd3d-shader: Write SM1 constant definitions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:18 +02:00
Zebediah Figura
d0ab65c7a1 vkd3d-shader: Return the current buffer offset from put_dword() and put_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:15 +02:00
Zebediah Figura
aab9482758 vkd3d-shader: Rename name_offset to name_bytecode_offset.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-10 18:09:12 +02:00
Conor McCarthy
8b99fc66d3 vkd3d: Store root signature Vulkan descriptor set layouts in an array.
They need to be in an array for pipeline layout creation anyway, and
this is useful when more layouts are needed for unbounded arrays.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:28:15 +02:00
Conor McCarthy
c7c3376760 vkd3d: Remove an unused function parameter.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:28:09 +02:00
Conor McCarthy
e94a4549c8 vkd3d: Move descriptor range iteration to the count function.
Simplifies future validation of consecutive range upper bounds (a
bounded range must not follow an unbounded one) and handling of the
last range.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:28:01 +02:00
Conor McCarthy
9bc1d0f6a3 vkd3d: Move duplicate descriptor accounting to the descriptor count function.
Count variables no longer (or never) used are deleted.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:54 +02:00
Conor McCarthy
59419c6bde vkd3d: Rename descriptor_count where binding_count is more accurate.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:45 +02:00
Zebediah Figura
de64483850 vkd3d-shader: Sort uniforms by name before writing them into the SM1 constant table.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:12 +02:00
Zebediah Figura
b87e9b0652 vkd3d-shader: Write the SM1 constant table.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:09 +02:00
Zebediah Figura
f0d2a6d384 vkd3d-shader: Generate the synthetic name for the temp variable instead of the uniform.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:06 +02:00
Zebediah Figura
8f26986615 vkd3d-shader: Store variables with external linkage in a dedicated list.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:03 +02:00
Zebediah Figura
44816403f1 vkd3d-shader: Write empty SM1 shaders.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:27:00 +02:00
Zebediah Figura
12b297b8cc vkd3d-shader: "reg_size" is tracked in whole registers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-20 18:26:56 +02:00
Zebediah Figura
12e3109e00 vkd3d-shader: Allocate constant registers for uniforms.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-13 22:59:53 +02:00
Zebediah Figura
21b4052247 vkd3d-shader: Allocate constant registers for anonymous constants.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-13 22:59:51 +02:00
Zebediah Figura
60ece9cd62 vkd3d-shader: Store the shader type and version in the hlsl_ctx structure.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-13 22:59:49 +02:00
Zebediah Figura
e957d3a346 vkd3d-shader: Allocate temporary registers for anonymous expressions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-13 22:59:47 +02:00
Zebediah Figura
16163021b9 vkd3d-shader: Allocate temporary registers for variables.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-13 22:59:44 +02:00
Zebediah Figura
027f994fe0 vkd3d-shader: Rename HLSL_IR_ASSIGNMENT to HLSL_IR_STORE.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-13 22:59:41 +02:00
Zebediah Figura
3d22df25fe vkd3d-shader: Create a separate variable for output varyings.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 20:38:41 +02:00
Zebediah Figura
5ad94644ec vkd3d-shader: Store the function return semantic in the return variable.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 20:38:38 +02:00
Zebediah Figura
a6e47e1552 vkd3d-shader: Create a separate variable for input varyings.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 20:38:36 +02:00
Zebediah Figura
9a70d57690 vkd3d-shader: Check for missing semantics on entry function parameters.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 20:38:34 +02:00
Zebediah Figura
21fea55c2d vkd3d-shader: Create a separate variable for uniforms.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-30 20:38:32 +02:00
Zebediah Figura
85892db65f vkd3d-shader: Treat global variables as written to only if they are uniform.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:48:53 +01:00
Zebediah Figura
2d109b69f9 vkd3d-shader: Treat entry point parameters as written to if they are uniform.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:48:51 +01:00
Zebediah Figura
154a73a5b1 vkd3d-shader: Do not mark objects as uniform or varying.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:48:49 +01:00
Zebediah Figura
c16a07caff vkd3d-shader: Use separate flag fields to track whether a variable is a uniform or varying.
Mostly in order to make it clearer that these don't directly correspond to the
modifiers with which the variable was declared.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:48:46 +01:00
Zebediah Figura
7d8491516a vkd3d-shader: Inline declare_variable() into its caller.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:48:44 +01:00
Zebediah Figura
e285fc57d2 vkd3d-shader: Forbid storage modifiers on struct fields.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-24 20:48:42 +01:00
Matteo Bruni
0e504e974a build: Move Vulkan library detection to m4/check-vulkan.m4.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Matteo Bruni
8c01e98650 configure: Use VULKAN_LIBS when looking for the Vulkan library.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
9007df1067 vkd3d-shader: Set correct dcl masks in vkd3d_dxbc_compiler_emit_hull_shader_inputs().
Avoiding some duplicate input declarations.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
f59e9dfeee vkd3d-shader: Avoid redeclaring inputs in vkd3d_dxbc_compiler_emit_default_control_point_phase().
We've already set these up in vkd3d_dxbc_compiler_emit_hull_shader_inputs().

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
1f92c1dd53 vkd3d-shader: Export patch constants at the end of tessellation control shaders.
As opposed to at the end of each fork/join phase. This eliminates a
bunch of redundant SPIR-V, since it's not uncommon for fork/join phases
to only write to individual output components.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
851afc6229 vkd3d-shader: Support patch constant inputs in tessellation control shader join phases.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
6f12553731 tests: Add a test for patch constant inputs in tessellation control shader join phases.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
cad26f7f2c vkd3d-shader: Use the (potentially) modified write mask as dcl_mask in vkd3d_dxbc_compiler_emit_input().
Like outputs, when inputs are coalesced, the write mask is modified by
needs_private_io_variable().

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
3b4b898cc5 vkd3d-shader: Use the (potentially) modified write mask as dcl_mask in vkd3d_dxbc_compiler_emit_output().
When outputs are coalesced, the write mask is modified by
needs_private_io_variable(). We want the "dcl_mask" field to reflect
that as well.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Henri Verbeet
b584668a81 vkd3d-shader: Properly handle coalesced outputs in vkd3d_dxbc_compiler_emit_store_shader_output().
Multiple patch constant or output signature elements may be coalesced
into a single output register by needs_private_io_variable() in
vkd3d_dxbc_compiler_emit_output(). When this happens, only the original
element will have a corresponding variable ID assigned in output_info[].

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Zebediah Figura
0c1c916ad7 vkd3d-shader: Allow static const variables to lack an initializer.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Zebediah Figura
3377f2445a vkd3d-shader: Eliminate unused assignments.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Matteo Bruni
f73b3385c7 vkd3d-shader: Consider previous last_read value when computing liveness.
Otherwise we end up overwriting UINT_MAX last_read for output variables.

Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 16:59:18 +01:00
Zebediah Figura
716753896e vkd3d-shader: Split struct copies.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 15:36:56 +01:00
Zebediah Figura
6d10d887d0 vkd3d-shader: Factor out hlsl_new_load().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 15:36:54 +01:00
Zebediah Figura
3ac20487f8 vkd3d-shader: Rename hlsl_type_compare() to hlsl_types_are_equal().
hlsl_type_compare() implies a stable comparison function, as if to be passed to
qsort().

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 15:36:52 +01:00
Matteo Bruni
588d3e5a57 vkd3d-shader: Get rid of a spurious '\n' in a HLSL compiler message.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-17 22:10:06 +01:00
Zebediah Figura
1b7cc14365 vkd3d-shader: Fold redundant casts between scalars and 1-dimensional vectors.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-17 22:10:02 +01:00
Zebediah Figura
79d4e62911 vkd3d-shader: Fold redundant casts.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-17 22:09:59 +01:00
Zebediah Figura
7c2083d374 vkd3d-shader: Add a dead code elimination pass.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-17 22:09:57 +01:00
Zebediah Figura
14993f34c9 vkd3d-shader: Fold addition and multiplication of uint constants.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-17 22:09:54 +01:00
Zebediah Figura
8096e4ae7b vkd3d-shader: Factor out hlsl_new_copy().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-17 22:09:51 +01:00
Zebediah Figura
80cac66b6f tests: Add some tests for fused assignment operations with writemasks.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 20:39:13 +01:00
Zebediah Figura
1aca201651 vkd3d-shader: Build fused assignment operations before unwrapping swizzles from the LHS.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 20:39:11 +01:00
Zebediah Figura
363a4334e9 vkd3d-shader: Lower postincrement and postdecrement to assignment operations at parse time.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 20:39:09 +01:00
Zebediah Figura
1cd208fb32 vkd3d-shader: Lower preincrement and predecrement to assignment operations at parse time.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 20:39:07 +01:00
Zebediah Figura
5f66257b8b vkd3d-shader: Don't use assignment instructions as sources.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-15 20:39:04 +01:00
Zebediah Figura
ed44a2bcf0 build: Enable -Winit-self.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-12 21:27:19 +01:00
Zebediah Figura
001328e084 vkd3d-shader: Use yy_scan_bytes() instead of yy_scan_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 11:58:02 +01:00
Zebediah Figura
b35fd8628e vkd3d-shader: Watch for allocation failure from yyparse().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 11:58:01 +01:00
Zebediah Figura
405f2db4d9 vkd3d-shader: Parse nested arrays.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-05 18:00:59 +01:00
Zebediah Figura
2b38799e66 tests: Add some tests for nested arrays.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-05 18:00:55 +01:00
Zebediah Figura
8ce33da2ab vkd3d-shader: Move the remainder of hlsl_parser_compile() to hlsl_compile_shader().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-05 18:00:22 +01:00
Zebediah Figura
df5e4a865c vkd3d-shader: Move some functions into hlsl_codegen.c.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-04 19:55:46 +01:00
Zebediah Figura
d423f8f469 vkd3d-shader: Remove a duplicate check for semantics on void functions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-04 19:55:44 +01:00
Zebediah Figura
7758882732 vkd3d-shader: Print offending values for more error messages.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-04 19:55:39 +01:00
Zebediah Figura
3d5a4f133a vkd3d-shader: Print the previous location for redefinition errors.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-04 19:55:32 +01:00
Zebediah Figura
2fe6d26dfc vkd3d-shader: Use %empty.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-04 19:55:30 +01:00
Zebediah Figura
0f4d62b09d vkd3d-shader: Factor out hlsl_new_loop().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 20:44:02 +01:00
Zebediah Figura
ccd67dcf37 vkd3d-shader: Factor out hlsl_new_jump().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 20:43:59 +01:00
Zebediah Figura
774609e1e2 vkd3d-shader: Factor out make_empty_list().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 20:43:57 +01:00
Zebediah Figura
8d444ebbfc vkd3d-shader: Assert that we don't read out of bounds of the base_types array.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 20:43:55 +01:00
Zebediah Figura
35105d4e29 vkd3d-shader: Return a vkd3d_string_buffer from hlsl_modifiers_to_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 20:43:53 +01:00
Zebediah Figura
48a1db2976 vkd3d-shader: Return a vkd3d_string_buffer from hlsl_type_to_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-02 20:43:49 +01:00
Henri Verbeet
6d032f6d1c vkd3d-shader: Keep track of declared SPIR-V output components.
Much like we do for input components, for much of the same reasons.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-26 21:32:31 +01:00
Zebediah Figura
87a371292d vkd3d-shader: Implement hlsl_note().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-23 20:20:26 +01:00
Zebediah Figura
7069fa1c40 vkd3d-shader: Replace hlsl_message() with hlsl_error().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-23 20:20:24 +01:00
Zebediah Figura
6124aa664f vkd3d-shader: Implement hlsl_error() and hlsl_warning().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-23 20:20:22 +01:00
Andrey Gusev
24537d3693 vkd3d-shader: Add a fall-through to default case in shader_sm4_read_param().
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-22 20:25:52 +01:00
Henri Verbeet
804d191aee vkd3d-shader: Recognise the "raw_buffer" and "structured_buffer" shader model 5 resource types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:12:43 +01:00
Henri Verbeet
3bacb33556 vkd3d-shader: Parse shader model 5 resource strides.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:12:43 +01:00
Henri Verbeet
d40d8c858e vkd3d-shader: Explicitly handle "none" modifiers in shader_sm4_read_param().
These (seemingly) have no effect, it's not entirely clear why they are
generated.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:12:43 +01:00
Henri Verbeet
944665ed11 vkd3d-shader: Do not print FIXMEs for VKD3DSUF_ORDER_PRESERVING_COUNTER when generating SPIR-V.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:12:43 +01:00
Henri Verbeet
7a791f5ef9 vkd3d-shader: Respect VKD3D_SHADER_COMPILE_OPTION_FORMATTING_INDENT for d3d-asm output.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:12:43 +01:00
Henri Verbeet
f0dee5a06a vkd3d-shader: Add some colour to the d3d-asm version token.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:12:43 +01:00
Zebediah Figura
7afe9148f0 vkd3d-shader: Avoid using debug functions for shader error messages.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:07:00 +01:00
Zebediah Figura
124069907d vkd3d-shader: Get rid of hlsl_base_type_to_string().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:06:58 +01:00
Zebediah Figura
60f7735b20 vkd3d-shader: Correctly dump array types.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-19 21:00:19 +01:00
Henri Verbeet
364621fa77 vkd3d-shader: Add some colour to d3d-asm swizzles.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 18:23:46 +01:00
Henri Verbeet
71f1dd5792 vkd3d-shader: Add some colour to d3d-asm write masks.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 18:23:43 +01:00
Henri Verbeet
486d8edb7c vkd3d-shader: Add some colour to d3d-asm literals.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 18:23:39 +01:00
Henri Verbeet
54092b944c vkd3d-shader: Introduce a helper to print d3d-asm boolean literals.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 18:23:24 +01:00
Henri Verbeet
11915f2431 vkd3d-shader: Introduce a helper to print d3d-asm hexadecimal literals.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-18 18:23:11 +01:00
Henri Verbeet
66694cd385 vkd3d-shader: Introduce a helper to print d3d-asm unsigned integer literals.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:31:05 +01:00
Henri Verbeet
03c34076e8 vkd3d-shader: Introduce a helper to print d3d-asm integer literals.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:31:03 +01:00
Henri Verbeet
8ff88d4544 vkd3d-shader: Introduce a helper to print d3d-asm floating-point literals.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:31:02 +01:00
Henri Verbeet
401b51f888 vkd3d-shader: Introduce a helper to print d3d-asm subscripts.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:31:00 +01:00
Henri Verbeet
be024a7e17 vkd3d-shader: Add some colour to d3d-asm register names.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-17 21:30:58 +01:00
Henri Verbeet
6680d9e865 vkd3d-shader: Add some colour to d3d-asm opcodes.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 16:00:13 +01:00
Henri Verbeet
a5f98f2601 vkd3d-shader: Introduce a helper to print d3d-asm opcodes.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 16:00:11 +01:00
Henri Verbeet
cee390d755 vkd3d-shader: Store the output buffer in struct vkd3d_d3d_asm_compiler.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 16:00:09 +01:00
Henri Verbeet
b5587f6a5b vkd3d-shader: Introduce struct vkd3d_d3d_asm_compiler.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 16:00:05 +01:00
Henri Verbeet
8315d319f6 vkd3d-shader: Rename VKD3D_SHADER_INSTRUCTION_HANDLER to vkd3d_shader_opcode.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 16:00:03 +01:00
Zebediah Figura
b57ad006c2 vkd3d-shader: Avoid using debugging utilities in debug_hlsl_type().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 15:59:59 +01:00
Zebediah Figura
61c3d802ed vkd3d-shader: Avoid using debugging utilities in hlsl_debug_modifiers().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 15:59:56 +01:00
Zebediah Figura
9b1b9e222a vkd3d-shader: Remove some TRACE messages.
This patch can be freely ignored. I have not found any of these messages to be
useful when debugging, but others may.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 15:59:52 +01:00
Zebediah Figura
82c659539f vkd3d-shader: Do not warn if a "for" initializer is empty.
It is perfectly valid.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 15:59:46 +01:00
Zebediah Figura
193218f54e vkd3d-shader: Replace "parse_status" with a boolean variable.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-16 15:59:44 +01:00
Henri Verbeet
8313225cc6 vkd3d-shader: Keep track of declared SPIR-V input components.
In particular, a shader may declare e.g. v6.x to refer to an output from the
previous stage, and v6.y to refer to a builtin, or the other way around. At
the same time, different hull shader phases may redeclare the same register.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:54 +01:00
Henri Verbeet
90216bd478 tests: Add tessellation shader tests to test_clip_distance().
Like the Wine d3d11 test it was originally ported from.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:52 +01:00
Henri Verbeet
3a710385f3 vkd3d-shader: Handle non-vec4 builtins in vkd3d_dxbc_compiler_emit_hull_shader_input_initialisation().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:50 +01:00
Zebediah Figura
3bf0e40b9d vkd3d-shader: Use struct vkd3d_shader_location in struct hlsl_ctx.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:40 +01:00
Zebediah Figura
3a975c2215 vkd3d-shader: Replace struct source_location with struct vkd3d_shader_location.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:38 +01:00
Zebediah Figura
28b1d68ce3 vkd3d-shader: Separate hlsl_report_message() into helpers for individual log levels.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:36 +01:00
Zebediah Figura
df3773ff7e vkd3d-shader: Use "hlsl_yy" as an API prefix for bison and flex definitions.
So as to differentiate their API from our internal functions.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:33 +01:00
Zebediah Figura
e3e0c26475 vkd3d-shader: Use hlsl_report_message() to report use of reserved keywords.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-12 21:01:31 +01:00
Zebediah Figura
c7d4acaf4b vkd3d-shader: Make the HLSL compiler reëntrant.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:08:12 +01:00
Zebediah Figura
f1acb3d383 vkd3d-shader: Use struct source_location as the Bison location type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:08:10 +01:00
Zebediah Figura
af47cc5b53 vkd3d-shader: Use a table to initialize predefined effect types.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:08:08 +01:00
Zebediah Figura
7400717282 vkd3d-shader: Move hlsl_ctx initialization and cleanup to hlsl_compile_shader().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:08:06 +01:00
Zebediah Figura
3854991154 vkd3d-shader: Move parse_* structure definitions to hlsl.y.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-10 20:08:04 +01:00
Zebediah Figura
16aceacc0c vkd3d-shader: Implement global resource memory barriers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-04 22:32:42 +01:00
Zebediah Figura
c2c092b143 vkd3d-shader: Replace BOOL with bool.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-04 22:32:38 +01:00
Zebediah Figura
aa52cb10b4 vkd3d-shader: Return void from hlsl_pop_scope().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-04 22:32:36 +01:00
Zebediah Figura
db1765c283 vkd3d-shader: Rename debug_dump_*() to dump_*().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-04 22:32:33 +01:00
Zebediah Figura
7c5bd7c776 vkd3d-shader: Add a hlsl_ namespace prefix to common functions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-04 22:32:31 +01:00
Zebediah Figura
0da1401d3d vkd3d-shader: Move hlsl_message() and hlsl_report_message() to hlsl.c.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-04 22:32:28 +01:00
Henri Verbeet
0c73afd424 vkd3d-shader: Implement relative addressing of tessellation control shader inputs.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 22:27:57 +01:00
Henri Verbeet
88fd3b3e1b tests: Add a test for relative addressing of tessellation control shader inputs.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 22:27:55 +01:00
Zebediah Figura
ab2e95a78c vkd3d-shader: Move compatible_data_types() to hlsl.y.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-02 22:48:18 +01:00
Zebediah Figura
d8dd91e840 vkd3d-shader: Move add_expr() to hlsl.y.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-02 22:48:16 +01:00
Zebediah Figura
768eb86101 vkd3d-shader: Move add_implicit_conversion() to hlsl.y.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-02 22:48:13 +01:00
Zebediah Figura
60cde237c5 vkd3d-shader: Move add_assignment() to hlsl.y.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-02 22:48:08 +01:00
Zebediah Figura
9b2e8fb1db vkd3d-shader: Move instruction allocation functions to hlsl.c.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-02 22:48:06 +01:00
Matteo Bruni
abe7051e99 vkd3d-compiler: Update usage message for the -x option.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-29 20:54:30 +01:00
Matteo Bruni
5399f6fcc6 vkd3d-compiler: Set default source type before handling --print-target-types.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-29 20:54:25 +01:00
Zebediah Figura
b523122ef3 vkd3d-shader: Import the HLSL compiler from Wine.
This corresponds to Wine commit 9f9fec18799bf59df6211b7294f8d338caa7f4db.

Note that for the moment, compilation messages have not been ported.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-29 20:54:19 +01:00
Matteo Bruni
9d6be9530b vkd3d-compiler: Require a profile specification when compiling HLSL sources.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-27 21:13:44 +01:00
Matteo Bruni
1e01656def vkd3d-shader: Cleanup predefined macro body on allocation failure.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-27 21:13:35 +01:00
Matteo Bruni
f26eed586d vkd3d: Fix typo in WARN() message.
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-27 21:13:32 +01:00
Zebediah Figura
3b132ec5ea vkd3d-shader: Preserve some tokens verbatim for the assembler.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-26 21:28:20 +01:00
Zebediah Figura
275f949a19 vkd3d-shader: Add predefined macros to the macro list.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-26 21:28:14 +01:00
Zebediah Figura
160db8306f vkd3d-shader: Parse #line directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-26 21:28:11 +01:00
Zebediah Figura
6520fb153e vkd3d-shader: Implement the parenthetical operator in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 22:45:17 +01:00
Zebediah Figura
e15b884e1a vkd3d-shader: Implement the ternary operator in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 22:45:14 +01:00
Zebediah Figura
338399d563 vkd3d-shader: Implement logical operators in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 22:45:12 +01:00
Zebediah Figura
c1d2edc9d5 vkd3d-shader: Implement bitwise operators in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 22:45:09 +01:00
Zebediah Figura
15bbaed960 vkd3d-shader: Implement equality operators in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 22:45:00 +01:00
Zebediah Figura
eecfe9c2a2 vkd3d-shader: Implement inequality operators in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-21 23:02:37 +01:00
Zebediah Figura
76383b244b vkd3d-shader: Implement addition and subtraction in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-21 23:02:34 +01:00
Zebediah Figura
be7e06cd4a vkd3d-shader: Implement multiplication and division in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-21 23:02:31 +01:00
Zebediah Figura
f8a8987737 vkd3d-shader: Implement unary operators in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-21 23:02:26 +01:00
Zebediah Figura
d4929660c3 vkd3d-shader: Treat undefined identifiers as equal to 0 in #if directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-21 23:02:23 +01:00
Zebediah Figura
d31f288111 vkd3d-shader: Implement the "defined" keyword.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 20:15:59 +01:00
Zebediah Figura
1a326d16c6 vkd3d-shader: Implement #error.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 20:15:56 +01:00
Zebediah Figura
ba32e91aca vkd3d-shader: Implement #pragma.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 20:15:54 +01:00
Zebediah Figura
92877f7a43 vkd3d-shader: Implement __FILE__.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 20:15:52 +01:00
Zebediah Figura
e72c2461cd vkd3d-shader: Implement __LINE__.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-18 20:15:50 +01:00
Zebediah Figura
d33a896403 vkd3d-shader: Implement stringification.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-14 21:12:22 +01:00
Zebediah Figura
33df515f10 vkd3d-shader: Implement concatenation.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-14 21:12:19 +01:00
Zebediah Figura
e1a956f8f2 vkd3d-shader: Implement function-like macro expansion.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-14 21:12:17 +01:00
Zebediah Figura
0f80ac0975 vkd3d-shader: Parse function-like macro definitions.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-14 21:12:15 +01:00
Zebediah Figura
668820f069 vkd3d-shader: Implement macro body expansion.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-14 21:12:13 +01:00
Henri Verbeet
73a937edd0 vkd3d-shader: Decorate "precise" arithmetic instructions with SpvDecorationNoContraction.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-12 20:35:23 +01:00
Zebediah Figura
1fc8b85879 vkd3d-shader: Implement #undef.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-12 20:35:08 +01:00
Zebediah Figura
8c927c491c vkd3d-shader: Implement #include.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-12 20:35:02 +01:00
Zebediah Figura
568983596e vkd3d-shader: Implement #ifndef.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-12 20:35:00 +01:00
Zebediah Figura
b0dbb35ec7 vkd3d-shader: Implement #ifdef.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-12 20:34:58 +01:00
Zebediah Figura
9a1317ff0f vkd3d-shader: Partially implement #define.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-12 20:34:56 +01:00
Zebediah Figura
6b75fb7b9c vkd3d-shader: Implement #elif.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-04 21:01:11 +01:00
Zebediah Figura
78e31bff16 vkd3d-shader: Implement #else.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-04 21:01:09 +01:00
Zebediah Figura
86cb863bc2 vkd3d-shader: Implement basic support for #if and #endif.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-04 21:01:04 +01:00
Zebediah Figura
5304cabf46 vkd3d-shader: Handle preprocessor parsing errors.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-04 21:01:00 +01:00
Zebediah Figura
cdfca2fab7 vkd3d-shader: Move location tracking out of the vkd3d_shader_message_context structure.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-15 22:19:32 +01:00
Zebediah Figura
e34213d0d5 vkd3d-shader: Introduce a helper to report errors while scanning.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-15 22:00:39 +01:00
Zebediah Figura
4bee8dd89b build: Create object directories before running bison or flex.
Vkd3d-Bug: https://bugs.winehq.org/show_bug.cgi?id=50334
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-15 22:00:33 +01:00
Andrey Gusev
a9abb0d7eb vkd3d: Fix misplaced parenthesis.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-09 19:59:56 +01:00
Zebediah Figura
12180a8e30 vkd3d-shader: Preserve some tokens verbatim for HLSL.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-09 19:59:53 +01:00
Zebediah Figura
741c332658 vkd3d-shader: Parse comments in the preprocessor.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-09 19:59:51 +01:00
Zebediah Figura
f544cb38e5 vkd3d-shader: Implement an initial pass-through HLSL preprocessor.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-09 19:59:49 +01:00
Zebediah Figura
5065cb6c1f vkd3d-shader: Validate "compile_info" in vkd3d_shader_preprocess().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-02 18:43:47 +01:00
Zebediah Figura
f4bbbb2975 tests: Add a test for macro invocation split across multiple files.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-02 16:28:57 +01:00
Zebediah Figura
d2f6ddba49 vkd3d-utils: Initialize input parameters to ID3DInclude::Open().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-02 16:28:55 +01:00
Zebediah Figura
dc7fd3760d vkd3d-utils: Return an error from open_include() if a NULL ID3DInclude was passed to D3DPreprocess().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-02 16:28:53 +01:00
Zebediah Figura
e1aea0a3af tests: Use vkd3d_memmem() in shader_runner_d3d12 (Valgrind).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-02 16:28:51 +01:00
Zebediah Figura
6d5fd68f1d vkd3d-compiler: Default to HLSL as a source format when preprocessing.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 20:00:29 +01:00
Zebediah Figura
10ab0ff124 vkd3d-compiler: Check whether the source format is binary when checking if the output is a tty, when preprocessing.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 20:00:26 +01:00
Zebediah Figura
b40b191498 vkd3d-compiler: Do not validate the target type when preprocessing.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 20:00:24 +01:00
Zebediah Figura
9a4a5ba63e vkd3d-compiler: Add support for running the HLSL preprocessor.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-27 18:41:25 +01:00
Zebediah Figura
584f84737b vkd3d-compiler: Also pass the entry point as part of the SPIR-V target information.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-27 18:41:23 +01:00
Zebediah Figura
2164915450 vkd3d-compiler: Rename the 'spirv' local variable to 'output_code'.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-27 18:41:21 +01:00
Zebediah Figura
ffa7bd39f3 tests: Add some C HLSL preprocessor tests.
That is, tests in C, for features of the HLSL preprocessor which are difficult
to test using the shader_runner framework.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-24 22:28:11 +01:00
Zebediah Figura
e44f2fbf43 tests: Add some more miscellaneous preprocessor tests.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-24 22:28:05 +01:00
Zebediah Figura
3bf15d6345 tests: Add some tests for shaders which fail to preprocess.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-24 22:27:59 +01:00
Zebediah Figura
5642fbaae7 tests: Add some tests for macro expansion.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-24 22:27:53 +01:00
Zebediah Figura
34ff79b0f3 tests: Add some tests for #if expression evaluation.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-24 22:27:48 +01:00
Zebediah Figura
f8ad29aad0 tests: Add some tests for #ifdef and defined().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 22:07:47 +01:00
Zebediah Figura
ca28ac17fb tests: Add some basic tests for #if and related preprocessor directives.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 22:07:44 +01:00
Zebediah Figura
52f844d2dc vkd3d-shader: Initialize "messages" to NULL in vkd3d_shader_preprocess() (Valgrind).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 22:07:42 +01:00
Zebediah Figura
dc36245be2 vkd3d-utils: Initialize "messages_blob" to NULL in D3DPreprocess().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 22:07:39 +01:00
Zebediah Figura
6cd5205fa7 vkd3d-utils: Initialize "messages_blob" to NULL in D3DCompile2().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 22:07:37 +01:00
Vinson Lee
4f5ec93661 include: Add more D3D12_RESOURCE_STATES enum elements.
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-12 20:22:17 +01:00
Biswapriyo Nath
f84c09cc66 include: Add DEFINE_ENUM_FLAG_OPERATORS macro for enumerations.
This prevents g++ error: invalid conversion from 'int' to 'XYZ' [-fpermissive]

Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-12 20:22:07 +01:00
Zebediah Figura
1c2344818d vkd3d-shader: Adjust the API for struct vkd3d_shader_macro.
To more closely match the behaviour of D3D_SHADER_MACRO.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-16 22:07:18 +02:00
Zebediah Figura
5d9398e10c include: Clarify that struct vkd3d_shader_code is not null-terminated.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-16 22:07:16 +02:00
Zebediah Figura
dffff8bdbc vkd3d-shader: Avoid reading past the end of the buffer in vkd3d_string_buffer_trace() (Valgrind).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-16 22:07:14 +02:00
Zebediah Figura
86cf5145dc vkd3d-shader: Avoid reading past the end of the buffer in vkd3d_shader_trace() (Valgrind).
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-16 22:07:12 +02:00
Zebediah Figura
5fb9bcdd14 vkd3d-shader: Don't allocate an initial buffer in vkd3d_string_buffer_init().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-09 16:15:12 +02:00
Zebediah Figura
05cf9a5404 vkd3d-shader: Return NULL from vkd3d_shader_message_context_copy_messages() if there are no messages to copy.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-09 16:15:10 +02:00
Zebediah Figura
0072fb213a vkd3d-shader: Pass the output pointer to vkd3d_shader_message_context_copy_messages().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-09 16:15:08 +02:00
Zebediah Figura
4eadd917c7 vkd3d-compiler: Use the correct array count in validate_target_type().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-07 18:44:20 +02:00
Biswapriyo Nath
55feaae815 include: Add the D3D12_GPU_BASED_VALIDATION_SHADER_PATCH_MODE enumeration.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-07 18:41:33 +02:00
Biswapriyo Nath
1210dac8e1 include: Add the ID3D12InfoQueue interface.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-07 18:41:31 +02:00
Henri Verbeet
e075ec5914 vkd3d-compiler: Do not validate the target type if --print-target-types is specified.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-07 18:41:27 +02:00
Zebediah Figura
0c6cd3ba21 vkd3d-common: Correctly escape whitespace characters in debugstr_*().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:52:54 +02:00
Zebediah Figura
ce4c7a1634 tests: Import invalid HLSL shader tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:52:51 +02:00
Zebediah Figura
57a8a90856 tests: Import HLSL static initializer tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:52:49 +02:00
Zebediah Figura
2c4d4277dd tests: Import HLSL struct varying tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:52:48 +02:00
Zebediah Figura
ce7c964935 tests: Import HLSL struct assignment tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-05 20:52:46 +02:00
Zebediah Figura
ec6fe1cc9d tests: Import HLSL majority tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:04:10 +02:00
Zebediah Figura
d0b13d51ca tests: Import HLSL array dimension tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:04:08 +02:00
Zebediah Figura
e04b917322 tests: Import HLSL return statement tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:04:06 +02:00
Zebediah Figura
fe6b9678d8 tests: Import comma tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:04:03 +02:00
Zebediah Figura
c3ac07efa7 tests: Import trigonometry tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:04:01 +02:00
Biswapriyo Nath
97af69bebd include: Add more D3D12_FEATURE enum elements.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:03:58 +02:00
Biswapriyo Nath
a547196d30 include: Add enum flag operators for D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:03:56 +02:00
JĂłzef Kucia
abc4aa09ba include: Add the D3D12EnableExperimentalFeatures() prototype.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:03:54 +02:00
Stefan Dösinger
615b182846 include: Remove backslashes from D3D12_COLOR_WRITE_ENABLE_ALL.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-02 19:03:51 +02:00
Zebediah Figura
fd9a568b8a tests: Import vector indexing tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-01 21:47:57 +02:00
Zebediah Figura
b64b304061 tests: Import HLSL conditional tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-01 21:47:55 +02:00
Zebediah Figura
2206e0c9bb tests: Import math tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-01 21:47:53 +02:00
Zebediah Figura
e26a0f95d6 tests: Import HLSL swizzle tests from Wine.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-01 21:47:51 +02:00
Zebediah Figura
68ef1de6ec tests: Introduce a custom format and parser for shader-based tests.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-01 21:47:49 +02:00
Zebediah Figura
d64a423233 vkd3d-shader: Correct an off-by-one error when comparing against ARRAY_SIZE.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-01 21:47:46 +02:00
Zebediah Figura
0cd7f47263 vkd3d-utils: Introduce D3DPreprocess().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-30 17:10:33 +02:00
Zebediah Figura
0df589369e vkd3d-utils: Introduce D3DCompile() and D3DCompile2().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-30 17:10:31 +02:00
Zebediah Figura
042a2928dc vkd3d-compiler: Add support for specifying the entry point for HLSL shaders.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-29 18:34:18 +02:00
Zebediah Figura
7e6dd8a895 vkd3d-compiler: Add support for specifying the HLSL shader profile.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-29 18:34:16 +02:00
Zebediah Figura
22fcdb7613 vkd3d-compiler: Add the dxbc-tpf target type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-29 18:34:15 +02:00
Zebediah Figura
0bcb8ba398 vkd3d-compiler: Add the HLSL source type.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-29 18:34:13 +02:00
Zebediah Figura
ce58af9df8 vkd3d: Move hresult_from_vkd3d_result to vkd3d-common.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-29 18:34:06 +02:00
Henri Verbeet
8d3e1e8300 vkd3d-compiler: Enable colour output by default when outputting to a colour capable tty.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 19:42:10 +02:00
Isabella Bosia
9136e56435 vkd3d-shader: Parse all 4 data type components.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:26 +02:00
Isabella Bosia
8d9d20d47b vkd3d-shader: Add valid vkd3d_sm4_data_type types.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:23 +02:00
Zebediah Figura
cbe4a3adff vkd3d-shader: Introduce struct vkd3d_shader_hlsl_source_info.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:20 +02:00
Zebediah Figura
f1cc186f18 vkd3d-shader: Introduce vkd3d_shader_preprocess().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:17 +02:00
Zebediah Figura
be0864f949 vkd3d-shader: Advertise support for compiling HLSL to DXBC_TPF.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:14 +02:00
Zebediah Figura
8dea03d9fd vkd3d-shader: Move vkd3d_shader_compile() to avoid forward declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:11 +02:00
Zebediah Figura
c78fe643a8 vkd3d-shader: Use the same message context for scanning and compiling in vkd3d_shader_compile().
So that messages from scanning are not lost.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 15:00:00 +02:00
Isabella Bosia
b0153f8054 vkd3d-compiler: Add d3d-asm target type.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-25 16:12:06 +02:00
Isabella Bosia
f494abde89 vkd3d-shader: Implement target type d3d asm.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-25 16:12:04 +02:00
Isabella Bosia
a0d469b20e vkd3d-shader: Add vkd3d_dxbc_binary_to_text() helper function.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-25 16:11:51 +02:00
Isabella Bosia
0808058ede vkd3d-shader: Change use of strstr to strchr.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-25 16:11:41 +02:00
Zebediah Figura
b72a2893c2 vkd3d-utils: Introduce D3DCreateBlob().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-24 19:11:41 +02:00
Zebediah Figura
e5fea6ade0 vkd3d: Move the ID3DBlob implementation to vkd3d-common.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-24 19:11:39 +02:00
Henri Verbeet
56cd4a94d5 Release 1.2.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-22 11:56:18 +02:00
Henri Verbeet
db8ab36464 build: Add ANNOUNCE to EXTRA_DIST.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-22 11:46:02 +02:00
Henri Verbeet
a6c4329415 build: Install vkd3d-compiler.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-22 11:46:00 +02:00
Henri Verbeet
55cfa465ea vkd3d-compiler: Allow the --formatting option to modify individual flags.
Instead of replacing all of them.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-21 19:16:20 +02:00
Henri Verbeet
4fda96190b vkd3d-shader: Invert the "FRIENDLY_NAMES" output formatting flag.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-21 19:16:15 +02:00
Henri Verbeet
7c64e827ca vkd3d-shader: Invert the "NO_HEADER" output formatting flag.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-21 19:16:05 +02:00
Henri Verbeet
8cc0abfca0 vkd3d-shader: Rename the "SHOW_BYTE_OFFSET" output formatting flag to just "OFFSETS".
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-21 19:16:02 +02:00
Henri Verbeet
bc5be191d9 include: The vkd3d_shader_log_level enumeration describes the *minimum* severity.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-21 19:15:56 +02:00
Isabella Bosia
3779177399 vkd3d-shader: Pass format to shader_addline.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-21 19:15:49 +02:00
Henri Verbeet
da4449ac91 build: Print whether we're building documentation in the configuration summary.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 22:08:30 +02:00
Zebediah Figura
82c42588e7 vkd3d-shader: Separate the allocated and used mask in struct vkd3d_shader_signature_element.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 22:08:22 +02:00
Zebediah Figura
1165ad3f00 vkd3d: Print VK_MEMORY_HEAP_MULTI_INSTANCE_BIT in debug_vk_memory_heap_flags().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 15:31:13 +02:00
Isabella Bosia
b27eac1cb5 vkd3d-shader: Make shader_dump_data_type print the type 4 times.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 15:31:07 +02:00
Isabella Bosia
cf02e942eb vkd3d-shader: Print abs(x) as |x|.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 15:31:05 +02:00
Isabella Bosia
171f25e6a5 vkd3d-shader: Print oC registers as o in versions >= 4.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 15:31:02 +02:00
Isabella Bosia
3c30efe14c vkd3d-shader: Output "tri" instead of "triangle" in tessellator domains.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:48 +02:00
Isabella Bosia
83c9c2bd72 vkd3d-shader: Output "isoline" instead of "line" in tessellator domains.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:46 +02:00
Isabella Bosia
9aa76a8e4f vkd3d-shader: Print "partitioning" in tessellator partitions.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:43 +02:00
Isabella Bosia
03e17b3d0c vkd3d-shader: Print "output" in tessellator outputs.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:39 +02:00
Isabella Bosia
5b4bd5ad9b vkd3d-shader: Print "domain" in tessellator domains.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:34 +02:00
Isabella Bosia
d93d76079c vkd3d-shader: Always print swizzle except for immediates or samplers.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:29 +02:00
Isabella Bosia
8eb4c54f73 vkd3d-shader: Always print writemask.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:27 +02:00
Isabella Bosia
149a8e311f vkd3d-shader: Don't print 1-st index in constant buffers if < 5.1.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:26 +02:00
Isabella Bosia
891952e6e6 vkd3d-shader: Only print brackets when necessary.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:23 +02:00
Isabella Bosia
1fb3c77cce vkd3d-shader: Remove [ ] from first index of fp in dcl_interface.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:21 +02:00
Isabella Bosia
3757b951f3 vkd3d-shader: Remove [ ] from x registers in dcl_indexabletemp.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:41:19 +02:00
Isabella Bosia
ef7c28eb93 vkd3d-shader: Print samplers with dump_register directly.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:46 +02:00
Isabella Bosia
d1360ad3aa vkd3d-shader: Print uav with dump_register directly.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:44 +02:00
Isabella Bosia
5fa7d5d356 vkd3d-shader: Print dcl_cb registers with dump_register directly.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:43 +02:00
Isabella Bosia
cc9d08eb38 vkd3d-shader: Add "typed" when handling VKD3DSIH_DCL_UAV_TYPED.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:41 +02:00
Isabella Bosia
058aec3ad9 vkd3d-shader: Recognize skipOptimization global flag.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:39 +02:00
Isabella Bosia
cf3388dad7 vkd3d-shader: Fix out of bound array accesses.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:37 +02:00
Isabella Bosia
56382c21bf vkd3d-shader: Add shader_ver_ge version comparison function.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-16 17:12:35 +02:00
Henri Verbeet
5e523cedca vkd3d-shader: Use proper variables for epilogue arguments.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-08 12:28:33 +02:00
Henri Verbeet
e339cc0edb vkd3d-shader: Do not use built-ins for hull shader clip/cull distance built-ins.
We need these to be per-vertex. This fixes the Wine d3d11
test_clip_distance() test.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-08 12:28:33 +02:00
Henri Verbeet
56b042d1fa vkd3d-shader: Enable the corresponding capabilities when using the clip/cull distance built-ins.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-08 12:28:33 +02:00
Henri Verbeet
a10ecbc289 vkd3d-shader: Add some TRACEs.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-08 12:28:33 +02:00
Isabella Bosia
ff7a7bf411 build: Stop ignoring the vkd3d-compiler directory.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-08 12:28:31 +02:00
Isabella Bosia
04069d8d55 vkd3d-compiler: Add formatting options.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:17 +02:00
Isabella Bosia
c7f73f10fa vkd3d-compiler: Add spirv-text output type.
Also allow outputting non-binary formats to tty.

Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:15 +02:00
Isabella Bosia
6d7bef1f8d vkd3d-compiler: Validate target type.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:13 +02:00
Isabella Bosia
76c8c05fdb vkd3d-compiler: Add get_source_type_info helper.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:11 +02:00
Isabella Bosia
c6e36bf240 vkd3d-compiler: Add get_target_type_info helper.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:09 +02:00
Isabella Bosia
75f239dcbe vkd3d-shader: Add formatting compiler options.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:07 +02:00
Isabella Bosia
f222f99011 vkd3d-shader: Implement VKD3D_SHADER_TARGET_SPIRV_TEXT.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:06 +02:00
Isabella Bosia
e75a0d6f14 vkd3d-shader: Implement vkd3d_spirv_binary_to_text helper.
Signed-off-by: Isabella Bosia <ibosia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:04 +02:00
Zebediah Figura
7dd8c15d49 vkd3d-shader: Read the SM5 resource data type instruction modifier.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:01:00 +02:00
Zebediah Figura
c3a5df7375 vkd3d-shader: Read the SM5 resource type instruction modifier.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:00:58 +02:00
Zebediah Figura
d8bea777a1 vkd3d-shader: Rename VKD3D_SHADER_MINIMUM_PRECISION_FLOAT_8_2 to VKD3D_SHADER_MINIMUM_PRECISION_FIXED_8_2.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-07 21:00:57 +02:00
Zebediah Figura
41c6cb59d9 include: Document vkd3d_shader_signature.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-04 21:07:52 +02:00
Zebediah Figura
b68247132e include: Document vkd3d-shader function pointer types.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-04 21:07:18 +02:00
Zebediah Figura
cc0670e0be include: Document vkd3d-shader shader signature functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-04 21:07:16 +02:00
Zebediah Figura
c3816fc4e9 include: Document struct vkd3d_shader_scan_descriptor_info.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-04 21:07:14 +02:00
Zebediah Figura
277e70d035 include: Document vkd3d-shader swizzles.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-04 21:07:13 +02:00
Zebediah Figura
67065e4366 include: Document vkd3d-shader root signature functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-03 18:24:38 +02:00
Zebediah Figura
fcee3bfa9a include: Document vkd3d_shader_get_version().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-03 18:24:37 +02:00
Zebediah Figura
72984bddcd include: Document struct vkd3d_shader_interface_info.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-02 16:22:58 +02:00
Zebediah Figura
e61242b626 include: Document vkd3d-shader compilation and scanning functions.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-02 16:22:56 +02:00
Zebediah Figura
139d979733 include: Document struct vkd3d_shader_compile_info and members.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-02 16:22:55 +02:00
Zebediah Figura
73f1adfd22 include: Add documentation for enum vkd3d_shader_structure_type.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-02 16:22:53 +02:00
Zebediah Figura
83c67e76ff include: Add basic documentation for vkd3d_types.h.
This is built on Doxygen. I'm not personally attached to Doxygen, but it was
easy enough to set up and write for, and I've found its compiled HTML to be
reasonably legible.

Note that Doxygen does allow for specifying documentation in external files,
if keeping the documentation out of the header is desired.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-02 16:22:47 +02:00
Zebediah Figura
f895f0dce6 vkd3d-shader: Do not check for NULL in vkd3d_shader_free_shader_code().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-26 15:15:57 +02:00
Zebediah Figura
6c10b52804 vkd3d-shader: Do not check for NULL in vkd3d_shader_free_scan_descriptor_info().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-26 15:15:53 +02:00
Zebediah Figura
9a0692978e vkd3d-shader: Allow structures to be chained in any order.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-25 23:01:59 +02:00
Henri Verbeet
fb93449c85 vkd3d-shader: Handle non-contiguous destination write masks in vkd3d_dxbc_compiler_emit_store().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 22:01:51 +02:00
Henri Verbeet
a451af9c51 vkd3d-shader: Properly handle scalar destinations in vkd3d_dxbc_compiler_emit_store().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 22:01:46 +02:00
Henri Verbeet
106c76d45e tests: Use descriptor ranges with multiple descriptors in test_register_space().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 22:01:43 +02:00
Henri Verbeet
d2ffae5900 vkd3d-shader: Introduce API for descriptor array bindings.
We will need this for shader model 5.1 resource arrays. However, for the
time being any count other than '1' is unsupported.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 22:01:38 +02:00
Henri Verbeet
9efcf45d7a vkd3d-shader: Change the memory layout of swizzles to allow for future swizzle components.
We may want to add e.g. VKD3D_SHADER_SWIZZLE_ONE and
VKD3D_SHADER_SWIZZLE_ZERO in the future.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-20 22:01:35 +02:00
Henri Verbeet
2dd0d207d5 vkd3d-shader: Introduce an enumeration for swizzle components.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 21:46:17 +02:00
Henri Verbeet
690a717887 vkd3d-compiler: Support reading from standard input.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 21:46:10 +02:00
Henri Verbeet
c27bed0023 vkd3d-compiler: Support writing to standard output.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 21:46:00 +02:00
Henri Verbeet
9a2b3bac58 build: Try "vulkan-1" as the Vulkan library.
Somewhat unconventionally, the official Vulkan import library is called
"vulkan-1.lib" on Windows.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 21:45:55 +02:00
Henri Verbeet
a5daebbda9 build: Assume the soname is <library>.dll when building for MinGW hosts.
That's not strictly true, but the only case we care about is the Vulkan
DLL on Windows, for which the official import library is called
vulkan-1.lib, and the DLL is called vulkan-1.dll. We can do something
more elaborate once it becomes relevant.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-13 21:45:43 +02:00
Zebediah Figura
3244fa3f92 vkd3d-shader: Remove the unused "ctx" field from struct vkd3d_shader_instruction.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-12 22:11:37 +02:00
Zebediah Figura
90eb138f22 vkd3d-shader: Rename vkd3d_sm4_immconst_type to vkd3d_sm4_dimension.
These bits are used in all register tokens, not just immediate constants.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-12 22:11:34 +02:00
Henri Verbeet
a8937ede3a build: Link vkd3d-utils with PTHREAD_LIBS.
Since it uses pthread functions.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 18:05:59 +02:00
Henri Verbeet
7bae1a606a vkd3d-shader: Support register spaces for combined samplers.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 18:05:50 +02:00
Henri Verbeet
ea1cb2e699 vkd3d-compiler: Add an option to specify the target type.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 18:05:35 +02:00
Henri Verbeet
67173a0021 vkd3d-compiler: Add an option to list the supported target types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 18:05:32 +02:00
Henri Verbeet
72db9eb19d vkd3d-compiler: Add an option to list the supported source types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 18:05:14 +02:00
Zebediah Figura
04605a341b vkd3d-shader: Make VKD3D_SHADER_SWIZZLE more legible.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 18:05:05 +02:00
Zebediah Figura
7a414b1afc build: Clean widl generated headers if building with widl.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-07 15:33:43 +02:00
Henri Verbeet
c326d75c1d vkd3d-shader: Introduce vkd3d_shader_get_supported_target_types().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-06 11:54:22 +02:00
Henri Verbeet
5f4bd618ed vkd3d-shader: Introduce vkd3d_shader_get_supported_source_types().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-06 11:54:22 +02:00
Henri Verbeet
af73e16633 vkd3d-shader: Use vkd3d_shader_validate_compile_info() in vkd3d_shader_scan().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-06 11:54:22 +02:00
Henri Verbeet
805e13d975 vkd3d-compiler: Also print the vkd3d-shader version when printing the vkd3d-compiler version.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-06 11:54:22 +02:00
Henri Verbeet
7dda2339a2 vkd3d-shader: Introduce vkd3d_shader_get_version().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-06 11:54:22 +02:00
Henri Verbeet
dae87cc1c0 vkd3d-shader: Merge the vkd3d_shader_descriptor_type and vkd3d_shader_descriptor_range_type enumerations.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-04 15:52:27 +02:00
Henri Verbeet
b2dcff0ecf vkd3d-compiler: Add an option to specify the buffer type to use for buffer UAV bindings.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-04 15:52:25 +02:00
Henri Verbeet
ffe0dca779 vkd3d-shader: Allow plain storage buffers to be used for buffer UAVs.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-04 15:52:23 +02:00
Henri Verbeet
1496dc054e vkd3d-shader: Add a compiler message for unhandled register types in vkd3d_dxbc_compiler_get_descriptor_binding().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-04 15:52:22 +02:00
Henri Verbeet
cf3c50b705 vkd3d-shader: Fail shader compilation if any descriptor bindings are missing.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-04 15:52:20 +02:00
Zebediah Figura
04598b1316 include: Correct the case of rbtree macros.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-01 11:31:57 +02:00
Henri Verbeet
1279d5df9e vkd3d-shader: Report error messages from vkd3d_shader_serialize_root_signature().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-30 16:33:00 +02:00
Henri Verbeet
33eb944bf4 vkd3d-shader: Report error messages from vkd3d_shader_parse_root_signature().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-30 16:32:59 +02:00
Henri Verbeet
d135b4687b vkd3d-shader: Report error messages from vkd3d_shader_parse_input_signature().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-30 16:32:57 +02:00
Henri Verbeet
11f82d985c vkd3d-shader: Pass a vkd3d_shader_compile_info structure to vkd3d_shader_scan_dxbc().
In order to allow it to handle different source types.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-30 16:32:56 +02:00
Henri Verbeet
1c8077546e vkd3d-shader: Validate control flow instructions in vkd3d_shader_scan_dxbc().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-30 16:32:54 +02:00
Henri Verbeet
a1778b681e vkd3d-shader: Trace messages in vkd3d_shader_compile().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-28 15:23:02 +02:00
Henri Verbeet
f4237f7716 vkd3d-shader: Trace messages in vkd3d_shader_scan_dxbc().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-28 15:23:01 +02:00
Henri Verbeet
8de5546082 vkd3d-shader: Trace the shader in vkd3d_shader_scan_dxbc().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-28 15:22:59 +02:00
Henri Verbeet
cd69865b69 vkd3d-shader: Also copy the terminator in vkd3d_shader_message_context_copy_messages().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-28 15:22:58 +02:00
Henri Verbeet
f6868919d3 vkd3d: Add trailing newlines to error messages in vkd3d_uav_clear_state_init().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-28 15:22:56 +02:00
Henri Verbeet
29287d3368 vkd3d-shader: Add compiler messages for invalid DXBC chunk offsets and sizes.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-23 19:44:04 +02:00
Henri Verbeet
29e9cf032c vkd3d-shader: Add a compiler message for unsupported DXBC versions.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-23 19:44:01 +02:00
Henri Verbeet
9fcf00e2bf vkd3d-shader: Validate DXBC checksums.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-23 19:43:59 +02:00
Henri Verbeet
1f6ce3ceba vkd3d-shader: Add a compiler message for invalid DXBC magic.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-23 19:43:56 +02:00
Henri Verbeet
3b2fb3aba1 vkd3d-shader: Output a compiler error message if the DXBC size is invalid.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-23 19:43:52 +02:00
Henri Verbeet
e7828d6782 vkd3d-shader: Output point sizes.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:19:09 +02:00
Henri Verbeet
4906bd40c6 vkd3d-shader: Add missing VKD3D_FORCE_32_BIT_ENUM enum elements.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:19:07 +02:00
Henri Verbeet
a196555513 vkd3d-shader: Rename the VKD3D_DUMMY_SAMPLER_INDEX macro to VKD3D_SHADER_DUMMY_SAMPLER_INDEX.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:19:05 +02:00
Henri Verbeet
23416913f4 vkd3d-shader: Rename the vkd3d_versioned_root_signature_desc structure.
To vkd3d_shader_versioned_root_signature_desc.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:19:03 +02:00
Henri Verbeet
823e356460 vkd3d-shader: Rename the vkd3d_root_signature_desc1 structure to vkd3d_shader_root_signature_desc1.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:19:01 +02:00
Henri Verbeet
0f0f2b331e vkd3d-shader: Rename the vkd3d_root_signature_desc structure to vkd3d_shader_root_signature_desc.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:19:09 +02:00
Henri Verbeet
0056fc7046 vkd3d-shader: Rename the vkd3d_root_signature_version enumeration to vkd3d_shader_root_signature_version.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:19:07 +02:00
Henri Verbeet
9366248ed2 vkd3d-shader: Rename the vkd3d_root_parameter1 structure to vkd3d_shader_root_parameter1.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:19:05 +02:00
Henri Verbeet
197fe4ca60 vkd3d-shader: Rename the vkd3d_root_signature_flags enumeration to vkd3d_shader_root_signature_flags.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:19:03 +02:00
Henri Verbeet
62113ff828 vkd3d-shader: Rename the vkd3d_static_sampler_desc structure to vkd3d_shader_static_sampler_desc.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-21 15:19:02 +02:00
Henri Verbeet
4bea4b82e9 vkd3d-shader: Rename the vkd3d_root_parameter structure to vkd3d_shader_root_parameter.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:19:44 +02:00
Henri Verbeet
f5e39842fa vkd3d-shader: Rename the vkd3d_root_descriptor1 structure to vkd3d_shader_root_descriptor1.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:19:42 +02:00
Henri Verbeet
cb9bf177e9 vkd3d-shader: Rename the vkd3d_root_descriptor_table1 structure to vkd3d_shader_root_descriptor_table1.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:19:41 +02:00
Henri Verbeet
0e9f914197 vkd3d-shader: Rename the vkd3d_static_border_color enumeration to vkd3d_shader_static_border_colour.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:19:39 +02:00
Henri Verbeet
a029687d5f vkd3d-shader: Rename the vkd3d_comparison_func enumeration to vkd3d_shader_comparison_func.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 23:19:37 +02:00
Henri Verbeet
e5c7718667 vkd3d-shader: Rename the vkd3d_texture_address_mode enumeration to vkd3d_shader_texture_address_mode.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-16 12:46:38 +02:00
Henri Verbeet
d1849b86ea vkd3d-shader: Rename the vkd3d_filter enumeration to vkd3d_shader_filter.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-16 12:46:36 +02:00
Henri Verbeet
0f5dc67015 vkd3d-shader: Rename the vkd3d_root_descriptor structure to vkd3d_shader_root_descriptor.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-16 12:46:34 +02:00
Henri Verbeet
270b31a7db vkd3d-shader: Rename the vkd3d_root_constants structure to vkd3d_shader_root_constants.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-16 12:46:32 +02:00
Henri Verbeet
36d2127765 vkd3d-shader: Rename the vkd3d_root_descriptor_table structure to vkd3d_shader_root_descriptor_table.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-16 12:46:31 +02:00
Henri Verbeet
8b397eec88 vkd3d-shader: Rename the vkd3d_root_parameter_type enumeration to vkd3d_shader_root_parameter_type.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-14 18:07:45 +02:00
Henri Verbeet
de252f9b14 vkd3d-shader: Rename the vkd3d_root_descriptor_flags enumeration to vkd3d_shader_root_descriptor_flags.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-14 18:07:40 +02:00
Henri Verbeet
6b0eb46716 vkd3d-shader: Rename the vkd3d_descriptor_range1 structure to vkd3d_shader_descriptor_range1.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-14 18:07:37 +02:00
Henri Verbeet
de76e7c0b5 vkd3d-shader: Rename the vkd3d_descriptor_range structure to vkd3d_shader_descriptor_range.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-14 18:07:27 +02:00
Henri Verbeet
7c2120124b vkd3d-shader: Rename the vkd3d_descriptor_range_flags enumeration to vkd3d_shader_descriptor_range_flags.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-14 18:07:23 +02:00
Henri Verbeet
6e0ab34564 vkd3d-shader: Rename the vkd3d_descriptor_range_type enumeration to vkd3d_shader_descriptor_range_type.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-10 17:08:19 +02:00
Henri Verbeet
edd585ea44 vkd3d-shader: Rename the VKD3D_SWIZZLE macro to VKD3D_SHADER_SWIZZLE.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-10 17:08:17 +02:00
Henri Verbeet
3a9eb1839e vkd3d-shader: Rename the vkd3d_sysval_semantic enumeration to vkd3d_shader_sysval_semantic.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-10 17:08:16 +02:00
Henri Verbeet
2da59a1056 vkd3d-shader: Rename the vkd3d_component_type enumeration to vkd3d_shader_component_type.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-10 17:08:14 +02:00
Henri Verbeet
e4690d51cc vkd3d-compiler: Add an option to specify the source type.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-10 17:08:11 +02:00
Henri Verbeet
7bcddce05c vkd3d-compiler: Add a long option to specify the output file.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 17:46:28 +02:00
Henri Verbeet
4a094f5cba vkd3d-compiler: Add a --version option.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 17:46:23 +02:00
Henri Verbeet
7df61873d0 vkd3d-compiler: Add an explicit --help option.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 17:46:19 +02:00
Henri Verbeet
f658190794 vkd3d-compiler: Use getopt to parse command-line options.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 17:46:12 +02:00
Henri Verbeet
e3e76867ca vkd3d-compiler: Print a slightly more elaborate usage message.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-02 17:46:10 +02:00
Henri Verbeet
24eaeb2cdf vkd3d: Require VKD3D_API_VERSION_1_2 for version 1.1 root signatures.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 21:05:46 +02:00
Henri Verbeet
3777eb4e5c vkd3d: Introduce API versions.
For backwards compatibility. Newer vkd3d versions may report more
capabilities, but some of those may also require newer vkd3d APIs in order to
use them. That's an issue for a vkd3d user like Wine, where reporting more
capabilities may cause the application to try to use APIs that are not
implemented in that version of Wine.

Note that using ELF symbol versioning would have solved the issue for existing
binaries compiled against older versions of vkd3d, but not for older source
compiled against newer versions of vkd3d.

Users of vkd3d-utils should define VKD3D_UTILS_API_VERSION to the vkd3d
API version they wish to target.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 21:05:17 +02:00
Henri Verbeet
11980c3944 vkd3d-shader: Introduce struct vkd3d_shader_resource.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 21:05:14 +02:00
Henri Verbeet
b7fb3a033b vkd3d-shader: Support more than 8 UAV counters.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 21:05:12 +02:00
Zebediah Figura
f9b66ac55c tests: Test using UAV counters with multiple register spaces.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 21:05:10 +02:00
Henri Verbeet
015a9aacaf vkd3d-shader: Get rid of the "use_vocp" field in the vkd3d_shader_scan_info structure.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-30 21:05:08 +02:00
Henri Verbeet
760bafd620 vkd3d-shader: Store sampler comparison mode information in the descriptor scan info.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 09:57:48 +02:00
Henri Verbeet
e560db5027 vkd3d-shader: Store UAV read information in the descriptor scan info.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 09:57:46 +02:00
Henri Verbeet
352b8118f3 vkd3d-shader: Store UAV counter information in the descriptor scan info.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 09:57:44 +02:00
Henri Verbeet
cf04ed68a7 vkd3d-shader: Report descriptor resource types in vkd3d_shader_scan_dxbc().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 09:57:42 +02:00
Henri Verbeet
25c0966b69 vkd3d-shader: Report descriptor usage information in vkd3d_shader_scan_dxbc().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-25 09:57:39 +02:00
Henri Verbeet
73145653ac include: Correct the "vkd3d_shader_binding_flag" type name in some comments.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 16:25:25 +02:00
Henri Verbeet
25ef055062 vkd3d-shader: Allow the name of the SPIR-V entry point to be specified.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 16:25:23 +02:00
Henri Verbeet
7e4fc14a31 vkd3d-shader: Rename the vkd3d_tessellator_partitioning enumeration.
To vkd3d_shader_tessellator_partitioning.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 16:25:21 +02:00
Henri Verbeet
500079a54a vkd3d-shader: Rename the vkd3d_tessellator_output_primitive enumeration.
To vkd3d_shader_tessellator_output_primitive, consistent with vkd3d-shader
naming conventions.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 16:25:18 +02:00
Henri Verbeet
95fa257a37 vkd3d-shader: Allow vkd3d_shader_compile() to handle multiple target types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-23 16:25:16 +02:00
Henri Verbeet
d6ec017077 vkd3d-shader: Allow vkd3d_shader_compile_dxbc() to handle multiple source types.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-19 16:08:31 +02:00
Henri Verbeet
b07c304440 vkd3d-shader: Pass compile options as an array instead of as flags.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-19 16:08:29 +02:00
Henri Verbeet
9312979b56 vkd3d-shader: Pass the target info as part of the vkd3d_shader_compile_info structure chain.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-19 16:08:28 +02:00
Henri Verbeet
c4e6657c11 vkd3d-shader: Pass the interface info as part of the vkd3d_shader_compile_info structure chain.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-19 16:08:26 +02:00
Henri Verbeet
8ff9610fed vkd3d-shader: Introduce struct vkd3d_shader_compile_info.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-19 16:08:24 +02:00
Henri Verbeet
13c2fbdc8d vkd3d-shader: Rename the vkd3d_shader_target_extension enumeration to vkd3d_shader_spirv_extension.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-18 21:21:49 +02:00
Henri Verbeet
425dab80b8 vkd3d-shader: Rename the vkd3d_shader_target enumeration to vkd3d_shader_spirv_environment.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-18 21:21:47 +02:00
Henri Verbeet
2ee8429c03 vkd3d-shader: Rename VKD3D_SHADER_STRUCTURE_TYPE_SHADER_INTERFACE_INFO.
To VKD3D_SHADER_STRUCTURE_TYPE_INTERFACE_INFO, consistent with the structure
name.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-18 21:21:45 +02:00
Henri Verbeet
8292efdbed vkd3d-shader: Rename the vkd3d_shader_domain_shader_compile_arguments structure.
To vkd3d_shader_spirv_domain_shader_target_info.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-18 21:21:43 +02:00
Henri Verbeet
5ee018afe9 vkd3d-shader: Rename the vkd3d_shader_compile_arguments structure to vkd3d_shader_spirv_target_info.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-18 21:21:41 +02:00
Henri Verbeet
cb5c001062 vkd3d-compiler: vkd3d_shader_compile_dxbc() returns an int.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 16:43:35 +02:00
Zebediah Figura
57973b4252 vkd3d: Also match the UAV counter register space in d3d12_command_list_update_descriptor_table().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 16:43:26 +02:00
Zebediah Figura
f0ce8aaf92 vkd3d: Store a count of used UAV counters instead of a mask.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 16:43:24 +02:00
Zebediah Figura
671ca1e721 vkd3d: Index the "vk_uav_counter_views" array to match the "uav_counters" array.
That is, index elements of vk_uav_counter_views by their index in uav_counters,
rather than by their register index. This is necessary because multiple UAVs can
share the same register index but differ in register space.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 16:43:21 +02:00
Henri Verbeet
9b03ebde85 vkd3d: Introduce our own pipeline bind point enumeration.
The VK_PIPELINE_BIND_POINT_RANGE_SIZE enumeration value was removed in
Vulkan-Headers release 1.2.140.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 16:43:18 +02:00
Henri Verbeet
3ec487d93a include: Use standard 64-bit types.
In particular, we want these to be consistent with PRIx64. On 64-bit
macOS, that's "llx".

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-01 22:08:57 +02:00
Zebediah Figura
5d5a458247 tests: Test multiple register spaces with samplers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:28 +02:00
Zebediah Figura
6ac880da10 tests: Test multiple register spaces.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:23 +02:00
Zebediah Figura
4bf22c6c27 vkd3d: Implement register spaces.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:19 +02:00
Zebediah Figura
87364057da vkd3d-shader: Also match the register space when looking up bindings.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:15 +02:00
Zebediah Figura
e53496f6fd vkd3d-shader: Do not treat descriptor registers as arrayed.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:11 +02:00
Zebediah Figura
d08107da90 vkd3d-shader: Use the size from struct vkd3d_shader_constant_buffer when declaring push constant buffers.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:08 +02:00
Zebediah Figura
4c993c672a vkd3d-shader: Read constant buffer offsets from the second index.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:05:03 +02:00
Zebediah Figura
6dace4a8be vkd3d-shader: Read the resource index from idx[1] instead of idx[0] when looking up SM5.1 bindings.
We still use the first index to uniquely identify the register in vkd3d_symbol,
only changing which field is used to declare it.

This patch does not handle descriptor arrays.

Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 22:04:57 +02:00
Zebediah Figura
2abc615419 vkd3d: Fix a spelling error in vkd3d_init_null_resources_data().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-27 16:19:03 +02:00
Conor McCarthy
7d47f2323e vkd3d: Implement support for D3D12_FEATURE_D3D12_OPTIONS5.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 22:07:37 +02:00
Conor McCarthy
d5ad90a81e vkd3d: Implement support for D3D12_FEATURE_CROSS_NODE.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 22:07:35 +02:00
Conor McCarthy
0a6415d677 vkd3d: Implement support for D3D12_FEATURE_SERIALIZATION.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 22:07:33 +02:00
Conor McCarthy
3a586c9ffc vkd3d: Implement support for D3D12_FEATURE_D3D12_OPTIONS4.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 22:07:32 +02:00
Conor McCarthy
0b622c6704 vkd3d: Implement support for D3D12_FEATURE_EXISTING_HEAPS.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 22:07:30 +02:00
Conor McCarthy
33217ebfca vkd3d: Implement support for D3D12_FEATURE_D3D12_OPTIONS3.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-25 22:07:28 +02:00
Henri Verbeet
1cee31ed7a vkd3d-shader: Handle clip and cull distance in vkd3d_siv_from_sysval_indexed().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:26 +02:00
Conor McCarthy
b1712cbd48 vkd3d: Implement support for D3D12_FEATURE_COMMAND_QUEUE_PRIORITY.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:23 +02:00
Conor McCarthy
16882d1a50 vkd3d: Implement support for D3D12_FEATURE_SHADER_CACHE.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:19 +02:00
Conor McCarthy
6e0590adf6 vkd3d: Implement support for D3D12_FEATURE_D3D12_OPTIONS2.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:16 +02:00
Conor McCarthy
fad3b12703 vkd3d: Implement support for D3D12_FEATURE_ARCHITECTURE1.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:13 +02:00
Conor McCarthy
1d46f25ea2 vkd3d: Implement support for D3D12_FEATURE_D3D12_OPTIONS1.
Signed-off-by: Conor McCarthy <conor.mccarthy.444@gmail.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:10 +02:00
Hans-Kristian Arntzen
f3bf1612c1 vkd3d-shader: Increment the token pointer before reading the register space in the dcl_resource_structured handler.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:06 +02:00
Hans-Kristian Arntzen
ea213e2b0d vkd3d-shader: Increment the token pointer before reading the register space in the dcl_uav_structured handler.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-22 14:25:03 +02:00
Chip Davis
5ad16f1458 tests: Introduce compare_uint().
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-15 22:40:37 +02:00
Chip Davis
e57ad512ff include: Use the correct type for the tessellator partitioning compile argument.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-31 19:29:54 +02:00
Conor McCarthy
a59f1982ad vkd3d: Remove redundant GetCopyableFootprints() resource size alignment checks.
The alignments are now checked in d3d12_resource_validate_desc().

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:25:50 +01:00
Henri Verbeet
d0586297c5 vkd3d-shader: Handle VKD3DSPR_GSINSTID in vkd3d_dxbc_compiler_get_register_name().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:11:22 +01:00
Henri Verbeet
ebac7ee24c vkd3d-shader: Avoid declaring outputs multiple times with incompatible types.
This would cause CoreValidation-Shader-InterfaceTypeMismatch validation
errors from Wine's test_shader_interstage_interface() d3d11 test. This
reverts parts of commits 1eb7eca411 and
04ec461fb4.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:11:20 +01:00
Henri Verbeet
61799500e2 vkd3d-shader: Handle normalised types in vkd3d_component_type_from_data_type().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:11:18 +01:00
Conor McCarthy
91555883ac vkd3d: Add stub for ID3D12GraphicsCommandList2::WriteBufferImmediate().
ID3D12GraphicsCommandList2 and WriteBufferImmediate() are used by
Hitman 2, but implementing the function on top of an AMD extension has
no effect on game behaviour. It's commonly used to write debug info.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:11:15 +01:00
Conor McCarthy
0d43c776c5 vkd3d/tests: Add tests for ID3D12GraphicsCommandList2::WriteBufferImmediate().
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:11:13 +01:00
Conor McCarthy
9c64642468 vkd3d: Add SetViewInstanceMask() to the ID3D12GraphicsCommandList1 interface.
This method was missing in version 10.0.15063.0 of the SDK, but is
present in version 10.0.18362.0, without a UUID change. Presumably that
means this was simply an omission in the older header, rather than an
API change in the newer header.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-06 20:11:10 +01:00
Conor McCarthy
a303482acc vkd3d/tests: Add and modify tests for GetResourceAllocationInfo().
Test large DepthOrArraySize for small resources, and test compressed
textures at the 64KB limit.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-27 22:08:39 +01:00
Conor McCarthy
7b88754ff2 vkd3d: Remove alignment validation from GetResourceAllocationInfo().
The right place for alignment validation is d3d12_resource_validate_desc().
The mod alignment test, which returns a size of ~0 on failure, is incorrect
on systems where Vulkan requires alignments of 0x20000 or more, and breaks
Hitman 2, which uses the returned value unchecked and allocates heaps of
0xffffffff bytes.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-27 22:08:37 +01:00
Conor McCarthy
23c4dc26e2 vkd3d/tests: Add tests for block-compressed texture dimensions.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-27 22:08:35 +01:00
Conor McCarthy
5fe91bbf02 vkd3d: Validate dimension alignments for block-compressed textures.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-27 22:08:33 +01:00
Conor McCarthy
af60bc03ba vkd3d: Validate texture resource alignments.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-27 22:08:31 +01:00
Conor McCarthy
e783784cac vkd3d: Return valid node masks in external resource heap properties.
Hitman 2 calls GetHeapProperties() for each swapchain buffer and checks if
the creation node mask is 1. If not then it fails to store the resource
pointers for later rendering.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:07:11 +01:00
Conor McCarthy
5366d405e9 vkd3d: Add tests for external resource heap properties.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:07:09 +01:00
Philip Rebohle
a204a681a1 vkd3d: Handle DXGI_FORMAT_R11G11B10_FLOAT in d3d12_command_list_ClearUnorderedAccessViewUint().
There is no bit-compatible UINT format, so we'll use DXGI_FORMAT_R32_UINT.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:07:07 +01:00
Philip Rebohle
207ca12725 vkd3d: Re-implement d3d12_command_list_ClearUnorderedAccessViewUint().
Addresses the following limitations of the previous implementation:
    - Only R32_{UINT,TYPELESS} were supported for buffers.
    - Clearing an image UAV did not behave correctly for images with non-UINT formats.
    - Due to the use of transfer operations, extra memory barriers were needed.

If necessary, this will create a temporary view with a bit-compatible
UINT format for the resource in order to perform a bit-exact clear.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:07:04 +01:00
Philip Rebohle
65ee0562f9 vkd3d: Set VK_IMAGE_MUTABLE_FORMAT_BIT for UAV images with non-UINT formats.
Needed to support ClearUnorderedAccessViewUint() for all formats.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:07:01 +01:00
Philip Rebohle
126a789019 vkd3d: Implement d3d12_command_list_ClearUnorderedAccessViewFloat().
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:06:59 +01:00
Hans-Kristian Arntzen
54d2a15aa6 vkd3d: Use size_t instead of SIZE_T for GPU VA sizes.
This also fixes a format specifier warning in an ERR for the 32-bit Linux
build.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-25 16:06:56 +01:00
Philip Rebohle
736dd8203d tests: Add a test for image UAV clears.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-19 22:04:46 +01:00
Philip Rebohle
f7f6073436 tests: Test more view formats in the UAV clear test.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-19 22:04:44 +01:00
Henri Verbeet
da68980fdc vkd3d: Properly check for program_invocation_name.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-15 17:42:03 +01:00
Philip Rebohle
72246862af vkd3d: Factor out root parameter invalidation.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-13 16:40:13 +01:00
Philip Rebohle
79da30adc7 vkd3d: Defer compute pipeline update to Dispatch time.
Needed to support compute-based clear and copy operations.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-13 16:40:09 +01:00
Philip Rebohle
1bfacf3727 vkd3d: Store view object type in vkd3d_view.
Currently, vkd3d_view_destroy_descriptor assumes image views
by default, but we need to be able to attach buffer views to
command allocators for UAV clears.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-13 16:40:04 +01:00
Philip Rebohle
4a191a27dc vkd3d: Store view properties in vkd3d_view.
The additional data is needed to implement UAV clears.

Moving this out of d3d12_desc also helps make copying and
traversing descriptor arrays more CPU cache-friendly.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-13 16:39:59 +01:00
Derek Lesho
1d955506a3 vkd3d: Implement d3d12_device_GetCustomHeapProperties().
Signed-off-by: Derek Lesho <dlesho@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-07 21:07:18 +01:00
Rémi Bernon
4576236199 vkd3d: Do not report a root signature version higher than requested.
This fixes Shadow of the Tomb Raider crashing because of NULL root
signatures being passed since c002aee119.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 19:25:07 +01:00
Hans-Kristian Arntzen
1b66138006 tests: Test ClearUnorderedAccessView() with placed resources.
Catches certain implementation issues which committed resources do not.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 19:25:04 +01:00
Philip Rebohle
6c65f1b814 vkd3d-shader: Support vicp inputs for hull shader fork/join phases.
This case needs special care since both VKD3DSPR_INPUT in the
control point phase and VKD3DSPR_INCONTROLPOINT in fork/join
phases refer to the same set of input variables, and we should
not declare input variables with the same location twice.

Encountered in Shadow of the Tomb Raider.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 19:24:33 +01:00
Philip Rebohle
1707042e62 tests: Test bindings after changing root signature.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 19:24:24 +01:00
Philip Rebohle
8cb42d6971 vkd3d: Keep active bindings after changing root signature.
Shadow of the Tomb Raider does not re-bind all descriptor tables after
setting a new root signature if tessellation is enabled, which causes
some descriptors to be left undefined.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 19:24:20 +01:00
Conor McCarthy
a38ee68f93 vkd3d/tests: Add tests for D3D12_HEAP_TYPE_CUSTOM.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:20:52 +01:00
Conor McCarthy
87cc75b7e6 vkd3d: Add support for custom heap properties.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:20:50 +01:00
Rémi Bernon
832f47edd3 vkd3d: Clamp buffer image copy size to subresource dimensions.
This fixes a vulkan validation error.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:20:27 +01:00
Philip Rebohle
1eb7eca411 vkd3d-shader: Don't redundantly override shader output info.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:18:23 +01:00
Philip Rebohle
0e00448229 vkd3d-shader: Handle tessellation factor built-ins in emit_output.
Uses the private patch constant array for tessellation factor built-ins.
Fixes two separate issues encountered in Shadow of the Tomb Raider:

- The output registers that have one component mapped to any of
  the TESS_FACTOR sysvals can have their other components mapped
  to a regular patch constant output, in which case we need to
  use a private io variable.

- The tessellation factor outputs are not necessarily dynamically
  indexed within shader code. Previously, this did not work correctly
  and lead to invalid store operations in the generated SPIR-V.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:17:34 +01:00
Philip Rebohle
306acf2193 vkd3d-shader: Compute correct output array index for line tess factors.
Line tessellation factors use two different DXBC semantics that
both map to the same SPIR-V built-in. In this case, we cannot
rely on the semantic index.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:17:32 +01:00
Philip Rebohle
7ac0873b4a vkd3d-shader: Use full write mask for variables for array built-ins.
Private variables are always vec4, so using a sparse write mask here
will lead to invalid code being generated when accessing the variable.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:17:29 +01:00
Philip Rebohle
a08ee1e2df vkd3d-shader: Use private array variable for patch constant outputs.
Fork and join phases in hull shaders allow dynamic indexing for
all output registers, not just the tessellation factor built-ins.

Moreover, the patch constant output register space is shared with
join phases, which can read back the outputs computed in the fork
phases, also allowing dynamic indexing.

In order to support this in a not overly complex way, use a private
array representing the entire patch constant space, and use epilogue
functions to assign them to the actual output variables.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:17:26 +01:00
Philip Rebohle
3fe9997010 vkd3d-shader: Add array index field to private output variable info.
Needed to support dynamically indexed output arrays.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:17:22 +01:00
Philip Rebohle
04ec461fb4 vkd3d-shader: Don't fetch output variable id before writing output info.
Otherwise, if a private variable is used for the given output,
vkd3d_dxbc_compiler_emit_store_shader_output will write to the
private variable again instead of the actual output, and some
outputs may never be emitted. This is common in hull shaders.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:17:19 +01:00
Hans-Kristian Arntzen
fd4488c3ab vkd3d: Optimise the GPU VA allocator.
The GPU VA allocator was allocating memory in a way where dereferencing
GPU VA required a lock + bsearch() to find the right VA range.

Rather than going this route, we turn the common case into O(1) and
lock-free by creating a slab allocator which allows us to lookup a
pointer directly from a GPU VA with (VA - Base) / PageSize.

The number of allocations in the fast path must be limited since we
cannot trivially grow the allocator while remaining lock-free for
dereferences.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:15:34 +01:00
Hans-Kristian Arntzen
c7916314dc vkd3d: Align allocated GPU address ranges to the requested resource alignment.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:15:31 +01:00
Conor McCarthy
2155748c41 vkd3d: Add support for multiplanar depth/stencil state transitions.
If separate transitions of the depth and stencil plane occur in the
same array of barriers, they will be consolidated into one Vulkan
layout transition. This can only be supported for combinations of
depth read and depth write states, or identical states.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-27 19:14:38 +01:00
Philip Rebohle
907d733ffe vkd3d-shader: Don't shift output array component write mask.
Fixes an assertion when compiling shaders with more than four
clip or cull distances. Output arrays are arrays of scalars,
so shifting the write mask is not very meaningful.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 16:39:04 +02:00
Hans-Kristian Arntzen
c002aee119 vkd3d: Bump RootSignature version to 1.1.
There appears to be a complete implementation of RS 1.1 already,
so enable this feature.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-22 16:38:59 +02:00
Henri Verbeet
769dd2b68c vkd3d: Introduce vkd3d_format_get_data_offset().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:06:10 +02:00
Rémi Bernon
7ec32ebfc5 vkd3d: Introduce vkd3d_format_copy_data().
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:06:08 +02:00
Henri Verbeet
65417717ac vkd3d: Introduce d3d12_box_is_empty().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:06:06 +02:00
Henri Verbeet
6259f10c4d vkd3d: Introduce d3d12_resource_get_level_box().
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-18 18:06:04 +02:00
Rémi Bernon
5553d27085 vkd3d: Implement ID3D12Resource::WriteToSubresource().
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-04 22:16:12 +02:00
Henri Verbeet
26a82afbc4 build: Enable -Wpointer-arith.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:55 +02:00
Henri Verbeet
a6f6d4fbb1 vkd3d-shader: Always emit the invocation count for geometry shaders.
Even if the shader doesn't explicitly declare it.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:48 +02:00
Hans-Kristian Arntzen
6b6bcaf1a3 vkd3d: Fix MSVC build in tests/d3d12.c.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:36 +02:00
Hans-Kristian Arntzen
f180e95e2f vkd3d: Add MSVC path for atomic_add_fetch.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:20 +02:00
Hans-Kristian Arntzen
a0ebcce398 vkd3d: Do not use RESET_COMMAND_BUFFERS_BIT.
By setting this flag, command pools cannot efficiently pool allocations.
This flag should be set to 0 so only the VkCommandPool may be reset.
This matches D3D12 API.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:16 +02:00
Hans-Kristian Arntzen
3c86b2341c vkd3d: Do not release resources in vkResetCommandPool.
D3D12 command allocators are intended to recycle memory across resets,
so we should do the same thing in vkd3d.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:12 +02:00
Hans-Kristian Arntzen
3f1a1ffc4d vkd3d: Add test case for undisclosed CPU VA in Map.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:08 +02:00
Hans-Kristian Arntzen
19b673923b vkd3d: Deal with Map out parameter being NULL.
It is possible to map a resource, but not disclose the VA to caller.
This is used for WriteToSubresource.

Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:16:04 +02:00
Hans-Kristian Arntzen
0282b2643c vkd3d: Fix MSVC build of state.c.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:15:56 +02:00
Hans-Kristian Arntzen
25c11733ed vkd3d: Fix non-standard pointer arithmetic on void-pointer.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:15:53 +02:00
Hans-Kristian Arntzen
50bd2db618 vkd3d: Fix use of non-standard vararg macros.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:15:39 +02:00
Hans-Kristian Arntzen
aa007299c4 vkd3d: Fix stray semicolon in vulkan_procs.h.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:15:29 +02:00
Hans-Kristian Arntzen
7a7ed132ec vkd3d-shader: Fix MSVC build.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:15:16 +02:00
Hans-Kristian Arntzen
69660ca5c9 vkd3d: Add MSVC path for vkd3d_log2i.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:14:59 +02:00
Hans-Kristian Arntzen
1e5ebae339 vkd3d: Add MSVC path for popcount.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:14:20 +02:00
Jactry Zeng
c3b78286d7 tests: Add tests for sample_l instruction.
Signed-off-by: Jactry Zeng <jzeng@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:14:08 +02:00
Jactry Zeng
4feb40b6b3 tests: Add tests for bufinfo instructions.
Signed-off-by: Jactry Zeng <jzeng@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-01 19:14:06 +02:00
Conor McCarthy
8e6f5ddd24 vkd3d: Make all descriptor reads and writes atomic.
Shadow of the Tomb Raider overwrites descriptors while they are being
copied in another thread. This patch makes reads and writes atomic for
CBV, SRV, UAV, and sampler descriptors, but not RTV and DSV, for which
copying is not implemented.

Benchmark total frames vs mutex count (the single mutex was locked
only once for copying):

1 mutex:    6480 6489 6503
8 mutexes:  6691 6693 6661
16 mutexes: 6665 6682 6703

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-24 17:48:42 +02:00
Philip Rebohle
ae44e06deb vkd3d-shader: Enable DemoteToHelperInvocation capability.
Fixes validation errors complaining about invalid shader modules.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-13 19:31:16 +02:00
JĂłzef Kucia
619bc19bdd tests: Move invalid BC1_UNORM buffer view tests to d3d12_invalid_usage.
Device is removed after CreateUnorderedAccessView().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-12 09:31:19 +02:00
JĂłzef Kucia
d1492e3465 vkd3d: Validate src_box in ReadFromSubresource().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-12 09:31:18 +02:00
Conor McCarthy
f2753dd618 tests: Add more tests for ReadFromSubresource().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-12 09:31:16 +02:00
Conor McCarthy
d5a8fbe9f5 vkd3d: Implement ID3D12Resource::ReadFromSubresource().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-12 09:31:14 +02:00
Conor McCarthy
686eb92252 vkd3d: Use linear tiling for CPU readable textures.
Enables ReadFromSubresource() to succeed in cases where it would have
failed otherwise.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-12 09:31:11 +02:00
JĂłzef Kucia
865fbea532 vkd3d: Remove unused d3d12_root_signature_init_descriptor_pool_size().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-06 17:05:12 +02:00
JĂłzef Kucia
9e997c6db6 vkd3d: Remove old entries in GPU VA allocator.
The "allocations" array is filled with unused entries when D3D12 buffers
are destroyed. The majority of entries might be unused after running for
a while. Remove the entry when VA is freed in order to prevent
accumulation of unused entries. This makes destroying D3D12 buffers more
expensive.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-06 17:05:10 +02:00
JĂłzef Kucia
8df3bfc5c2 vkd3d: Prepend pNext chain structures.
Order of structures doesn't matter so we can simply prepend instead of
apending.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-06 17:05:07 +02:00
JĂłzef Kucia
8b49b6e057 build: Enable -Wimplicit-fallthrough.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-06 17:05:04 +02:00
JĂłzef Kucia
0184917520 vkd3d: Add support for VK_KHR_image_format_list.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-06 17:04:54 +02:00
JĂłzef Kucia
740db732fc tests: Add test case for UAV format compatibility.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-06 17:04:52 +02:00
JĂłzef Kucia
332b250e82 include: Move debug interfaces to vkd3d_d3d12sdklayers.h.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-02 16:57:30 +02:00
JĂłzef Kucia
55f64cef2f tests: Add option to enable GPU-based validation.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-02 16:57:28 +02:00
Jactry Zeng
aecf2ecfbe tests: Add tests for sample_b and sample_d instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-02 16:57:26 +02:00
JĂłzef Kucia
8bb34406e2 demos: Use 3 swapchain images.
Mesa drivers increased minImageCount to 3.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 09:38:25 +02:00
JĂłzef Kucia
548437ce22 tests: Do not use TRUE and FALSE constants.
Use true and false instead.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 09:38:09 +02:00
JĂłzef Kucia
9b0aafb948 tests: Prefer C99 bool.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 09:38:05 +02:00
JĂłzef Kucia
b71120d78d tests: Introduce VKD3D_TEST_FILTER.
Useful for running a subset of tests.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 09:37:57 +02:00
JĂłzef Kucia
0d851513dc vkd3d: Get rid of dxgi_format_is_typeless().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:31:56 +02:00
Jactry Zeng
9d138ee135 vkd3d: Handle SINT and UINT formats in ClearRenderTargetView().
Signed-off-by: Jactry Zeng <jzeng@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:31:53 +02:00
JĂłzef Kucia
d9da1c904e vkd3d: Store vkd3d_format in {dsv,rtv}_desc.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:31:50 +02:00
Jactry Zeng
49391ecf2d tests: Test ClearRenderTargetView() with R16G16B16A16 formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:31:47 +02:00
Jactry Zeng
5b8c4e57f1 tests: Test ClearRenderTargetView() with R8G8B8A8_{SINT, UINT} formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:31:44 +02:00
JĂłzef Kucia
b1c417a578 configure: Check if SPIR-V headers are recent enough.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:24:52 +02:00
JĂłzef Kucia
56d260b40e vkd3d: Use vk_append_struct() in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:24:42 +02:00
JĂłzef Kucia
8ba2b2baec vkd3d: Use macros to define optional extensions tables.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:24:40 +02:00
JĂłzef Kucia
ee7d24a213 vkd3d: Add support for VK_EXT_shader_demote_to_helper_invocation.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:24:38 +02:00
JĂłzef Kucia
077e8b1459 vkd3d-shader: Add support for SPV_EXT_demote_to_helper_invocation.
Requires SPIRV-Headers commit dcce859e34cf0c23625ec75ac44df750aa2f4d70.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-31 08:24:34 +02:00
JĂłzef Kucia
46ff2c2764 vkd3d: Add support for VK_EXT_texel_buffer_alignment.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-05 17:52:13 +02:00
JĂłzef Kucia
eb340126b6 vkd3d-common: Move vkd3d_write_mask_is_contiguous() from vkd3d-shader.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-05 17:52:04 +02:00
JĂłzef Kucia
8589935420 vkd3d: Set VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT for upload buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-05 17:52:01 +02:00
JĂłzef Kucia
acd5417f8b tests: Add test for Map() on reserved resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-05 17:51:58 +02:00
JĂłzef Kucia
c648ea85aa tests: Destroy placed resources after destroying heap.
In order to exercise that the destroyed heap isn't accessed.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-07-05 17:51:51 +02:00
JĂłzef Kucia
5243b8c3f6 tests: Add bug_if() for VK_EXT_conditional_rendering radv bugs.
Radv executes vkCmdResolveImage() and clears conditionally.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:11:02 +02:00
JĂłzef Kucia
aa341b42d7 tests: Add more tests for predicated rendering.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:11:00 +02:00
JĂłzef Kucia
807315c20f tests: Remove tests for DXGI_FORMAT_B8G8R8A8_UNORM UAV support.
UAV support for B8G8R8A8_UNORM appears to be present even on feature
level 11_0 on newer Windows versions.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:10:57 +02:00
JĂłzef Kucia
579abe987d tests: Add more tests for D3D12_FEATURE_FORMAT_INFO.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:10:55 +02:00
JĂłzef Kucia
69e73a6a8f vkd3d: Implement D3D12_FEATURE_FORMAT_INFO.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:10:53 +02:00
JĂłzef Kucia
3d8b68e611 vkd3d: Add DXGI_FORMAT_R32G32B32_TYPELESS.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:10:51 +02:00
JĂłzef Kucia
6c40e2e26e tests: Add bug_if() in test_tessellation_primitive_id().
The test is affected by bugs mentioned in
18442763f1.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-28 08:10:44 +02:00
JĂłzef Kucia
678658086d tests: Print adapter name on Windows.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-25 19:23:10 +02:00
JĂłzef Kucia
3172faf612 vkd3d-shader: Avoid multiple PrimitiveId declarations in hull shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-25 19:23:08 +02:00
JĂłzef Kucia
dc074af2a0 vkd3d: Make resource mapping thread-safe.
VkDeviceMemory must be externally synchronized.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 08:09:21 +02:00
JĂłzef Kucia
fb8f0dc5b3 vkd3d: Create private heap objects for committed resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 08:09:20 +02:00
JĂłzef Kucia
dc2ae75461 vkd3d: Return more information from device memory allocation functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 08:09:18 +02:00
JĂłzef Kucia
110830aca0 vkd3d: Introduce d3d12_resource_is_cpu_accessible() helper.
The condition in d3d12_resource_is_cpu_accessible() is going to be
changed in the following commits.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 08:09:16 +02:00
JĂłzef Kucia
8d242b32ac vkd3d: Move resource memory allocation functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 08:09:14 +02:00
Alexandre Julliard
443b6618e3 tests: Add new vkd3d_common test to .gitignore.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-21 08:09:03 +02:00
JĂłzef Kucia
b59b6b87f0 tests: Add test to confirm predicate must not be read before every rendering command.
In Vulkan both behaviors are allowed.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:41:14 +02:00
JĂłzef Kucia
ed8bd8cd59 vkd3d: Implement D3D12_RESOURCE_STATE_PREDICATION resource barriers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:41:11 +02:00
JĂłzef Kucia
7f963c124d vkd3d: Set VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT for buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:41:09 +02:00
JĂłzef Kucia
16c62ded81 vkd3d: End conditional rendering before ending command buffer.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:41:07 +02:00
JĂłzef Kucia
9939712560 vkd3d: Begin and end conditional rendering outside render passes.
The Vulkan spec says:

  "Conditional rendering must also either begin and end inside the same
  subpass of a render pass instance, or must both begin and end outside
  of a render pass instance (i.e. contain entire render pass instances)."

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:41:04 +02:00
JĂłzef Kucia
18991337b7 tests: Fix test failures in conditional rendering tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:41:02 +02:00
JĂłzef Kucia
8d03148e11 tests: Fix test_conditional_rendering().
Fixes crashes, Vulkan and Direct3D validation errors.

* Fix state transitions.
* Use a multisample texture with ResolveSubresource().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:58 +02:00
JĂłzef Kucia
7240534abc include/vkd3d_utils: Declare all exported functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:48 +02:00
JĂłzef Kucia
f723a791d5 tests: Add test for parsing version.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:46 +02:00
JĂłzef Kucia
096dfde280 include: Document API versions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:45 +02:00
JĂłzef Kucia
1a42564eb9 vkd3d: Use vkd3d_waiting_fence structure in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:43 +02:00
JĂłzef Kucia
3d681737c9 vkd3d: Try to guess application name.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:41 +02:00
JĂłzef Kucia
0bde4c7dca vkd3d-shader: Fix component decoration for shader IO variables.
This fixes a regression introduced by commit
91820630cb.

We need to take into account the combined write mask returned from
needs_private_io_variable().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:38 +02:00
JĂłzef Kucia
09c1601b86 tests: Add test for SV_PrimitiveID in hull shader.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:35 +02:00
JĂłzef Kucia
e912a2c329 vkd3d: Validate resource pointer for transition barriers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-18 16:40:33 +02:00
Conor McCarthy
b6e35378fc vkd3d/tests: Add tests for predicated rendering.
Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-17 20:53:41 +02:00
Conor McCarthy
901fb7e798 vkd3d: Implement d3d12_command_list_SetPredication().
Predicate arguments which are only non-zero in bit 32 or higher are not
supported. Predicates will not be applied to clear and copy commands because
Vulkan does not support predication of these command classes.

Signed-off-by: Conor McCarthy <cmccarthy@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-17 20:53:39 +02:00
JĂłzef Kucia
a8c0fbaa6d vkd3d: Use FIXME_ONCE() for AntialiasedLineEnable.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-13 20:56:40 +02:00
JĂłzef Kucia
206fd23afe vkd3d: Avoid busy-waiting in fence worker thread.
This might delay updating a d3d12_fence when a fence enqueued later than
other fences is signaled before them. On the other hand, it
significantly reduces CPU usage. I haven't found a program negatively
impacted by this change so far.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-13 20:56:38 +02:00
JĂłzef Kucia
0baf0302d1 vkd3d: Avoid holding mutex while waiting for fences.
We maintain separate arrays for enqueued fences and fences owned by the
fence worker thread.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-13 20:56:35 +02:00
JĂłzef Kucia
18442763f1 tests: Add bug_if() for Nvidia tessellation shader bugs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-13 20:56:32 +02:00
JĂłzef Kucia
0529fa4b01 tests: Add test for line tessellation.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-12 22:37:50 +02:00
JĂłzef Kucia
ecdcb5c1b1 vkd3d-shader: Make sure that InvocationId is emitted once in hull shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-12 22:37:48 +02:00
JĂłzef Kucia
a81729cf88 vkd3d-shader: Assign unique locations for patch constants.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-12 22:37:46 +02:00
JĂłzef Kucia
285a19408f vkd3d: Introduce FIXME_ONCE().
The debug log level is demoted to WARN after the FIXME is printed once.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-12 22:37:44 +02:00
JĂłzef Kucia
4a0b62084a vkd3d-shader: Forbid mixing samplers with CBVs/SRVs/UAVs in root signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-12 22:37:40 +02:00
JĂłzef Kucia
895aaa461b vkd3d: Clarify DSV attachment mask handling.
It isn't immediately obvious what "1u << graphics->rt_count" means.
Use dsv_attachment_mask() helper instead.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-12 22:37:37 +02:00
JĂłzef Kucia
7ecd67aaa0 vkd3d: Factor out vkd3d_join_thread().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:51 +02:00
JĂłzef Kucia
bc5e8a9cc2 vkd3d: Factor out vkd3d_create_thread().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:49 +02:00
JĂłzef Kucia
843349c5e0 tests: Prefer uint64_t to UINT64.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:46 +02:00
JĂłzef Kucia
826190fc0e vkd3d: Prefer uint64_t to UINT64.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:44 +02:00
JĂłzef Kucia
28f99600a5 vkd3d: Avoid allocating memory in d3d12_command_list_update_uav_counter_descriptors().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:42 +02:00
JĂłzef Kucia
6862f34004 vkd3d: Avoid allocating memory in d3d12_command_list_RSSetScissorRects().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:39 +02:00
JĂłzef Kucia
be23a8fc90 vkd3d: Allocate device memory when heap offset is misaligned.
On radv with AMD Polaris GPUs, the alignment may be as high as 0x20000
or 0x40000. World of Warcraft seems to ignore the alignment returned
from GetResourceAllocationInfo(), and simply aligns to 0x10000
(D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT).

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:37 +02:00
JĂłzef Kucia
a4c18e83e3 tests: Add test for early depth-stencil test.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:32 +02:00
JĂłzef Kucia
812878fa87 vkd3d: Emit barriers in ClearUnorderedAccessViewUint().
We use transfer operations instead of unordered access.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:30 +02:00
JĂłzef Kucia
1966a32ac1 tests: Add more tests for UNKNOWN format DSV.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:28 +02:00
JĂłzef Kucia
3abfb840fd vkd3d: Invalidate current pipeline when DSV format is changed.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:26 +02:00
JĂłzef Kucia
bc8c07ffcc vkd3d: Fix unbinding depth-stencil views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-11 23:25:19 +02:00
JĂłzef Kucia
cd059215bf tests: Add tests for loading stencil values from textures.
With plane slice and component mapping.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:24:44 +02:00
JĂłzef Kucia
5f4b2266b9 vkd3d: Fix debug_d3d12_shader_component_mapping().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:24:42 +02:00
JĂłzef Kucia
afe7259242 vkd3d: Introduce helper functions to call ID3D12Device methods.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:24:40 +02:00
JĂłzef Kucia
e9b1393666 include: Add ID3D12Device1.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:24:38 +02:00
JĂłzef Kucia
c756008f6e vkd3d: Introduce vkd3d_physical_device_info.
Simplifies passing around Vulkan physical device properties and features.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-10 12:24:36 +02:00
JĂłzef Kucia
068851b159 vkd3d: Add initial checks for feature levels 12_0+.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-05 16:46:39 +02:00
JĂłzef Kucia
9f49174f40 vkd3d: Use sparse resources for emulating NULL UAVs.
If residencyNonResidentStrict is supported.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-05 16:46:37 +02:00
JĂłzef Kucia
80b749e703 tests: Add test for creating reserved resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-05 16:46:36 +02:00
JĂłzef Kucia
71ad883672 vkd3d: Implement d3d12_device_CreateReservedResource().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-05 16:46:34 +02:00
JĂłzef Kucia
c6406cb043 tests: Add basic test for NULL UAVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:58:02 +02:00
JĂłzef Kucia
fe33ddcb9e tests: Add test for buffer NULL SRV.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:58:00 +02:00
JĂłzef Kucia
991e9b5fad vkd3d: Add partial support for 2D NULL UAV.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:57:59 +02:00
JĂłzef Kucia
44bbd84360 vkd3d: Add partial support for buffer NULL UAVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:57:57 +02:00
JĂłzef Kucia
8bc8d19c90 vkd3d: Add partial support for buffer NULL SRVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:57:55 +02:00
JĂłzef Kucia
c065f87381 vkd3d: Introduce vkd3d_create_buffer_view_for_resource().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:57:53 +02:00
JĂłzef Kucia
396a8d4fe7 vkd3d: Check texel buffer view alignment requirements.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-04 17:57:49 +02:00
JĂłzef Kucia
3e99853297 vkd3d: Always return render pass from d3d12_pipeline_state_get_or_create_pipeline().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-21 16:25:09 +02:00
JĂłzef Kucia
725c4eb809 tests: Test RTVFormat equal to DXGI_FORMAT_UNKNOWN with depth-stencil.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-21 16:25:07 +02:00
JĂłzef Kucia
ad97f39d9a tests: Actually test count buffers with indirect draws.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-21 16:25:05 +02:00
JĂłzef Kucia
faeb03c1a3 vkd3d-shader: Add enum for minimum-precision data types.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-21 16:25:02 +02:00
Philip Rebohle
c6685f9fd2 tests: Add test for indirect draws with count buffer.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-20 20:33:37 +02:00
Philip Rebohle
f1076bb153 vkd3d: Support count buffer for indirect draws.
Used by Resident Evil 2.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-20 20:33:34 +02:00
Philip Rebohle
ca744ae579 vkd3d: Enable VK_KHR_draw_indirect_count.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-20 20:33:33 +02:00
Philip Rebohle
578ce3653d vkd3d-shader: Parse ISG1, PSG1 and OSG1 signatures.
These signatures extend the OSG5 format by a minimum
precision hint, which gets ignored for now but could
be implemented using 16-bit floats in the future.

Fixes some shader parsing errors in Resident Evil 2.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-20 20:33:27 +02:00
JĂłzef Kucia
e7e0f4180d vkd3d: Simplify checking for render pass compatibility.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:15 +02:00
JĂłzef Kucia
1930e60ab3 readme: Document build macros.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:13 +02:00
JĂłzef Kucia
33ba9b27ed readme: Document environment variables.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:11 +02:00
JĂłzef Kucia
51b930192a vkd3d: Handle lists in debug env vars consistently.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:09 +02:00
JĂłzef Kucia
ee1b8cc511 vkd3d: Defer creating render pass only when depth-stencil tests are enabled.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:06 +02:00
JĂłzef Kucia
f629cdecc1 vkd3d: Disable unncessary depth tests.
Allows us to create the render pass while creating the pipeline state.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:04 +02:00
JĂłzef Kucia
26e6957875 vkd3d: Refactor render pass attachments.
Use the last attachment for depth-stencil instead of the first.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:41:02 +02:00
JĂłzef Kucia
92d88e2903 vkd3d: Fix draw calls without depth-stencil view.
Fixes a regression introduced by
9eba55403d.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 20:40:56 +02:00
JĂłzef Kucia
8782764434 vkd3d: Return S_OK from memory residency functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:29:06 +02:00
JĂłzef Kucia
74f068f869 vkd3d: Add warning for unbinding transform feedback buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:29:04 +02:00
JĂłzef Kucia
e4f78a2433 tests: Add test for NULL VBV.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:29:02 +02:00
JĂłzef Kucia
9bbd520e89 vkd3d: Implement NULL vertex buffer views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:29:00 +02:00
JĂłzef Kucia
2482af566d tests: Add test for DSVFormat equal to DXGI_FORMAT_UNKNOWN.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:28:58 +02:00
JĂłzef Kucia
9eba55403d vkd3d: Do not disable depth-stencil tests for PSOs with invalid DSV format.
This is invalid usage according to the D3D12 validation layer. However,
Shadow of the Tomb Raider uses PSOs with DSVFormat equal to
DXGI_FORMAT_UNKNOWN and enabled depth-stencil tests. Moreover, the test
in the next commit passes on Windows with AMD, Intel and Nvidia GPUs.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:28:56 +02:00
JĂłzef Kucia
99c3e383dd vkd3d: Introduce helper to create render pass for pipeline state.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:28:54 +02:00
JĂłzef Kucia
54dcb2901b vkd3d: Update current framebuffer before pipeline.
Framebuffers are created with a render pass from the graphics pipeline.
In the next commits, we defer the creation of render passes for graphics
pipelines with invalid DSV formats.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-16 20:28:51 +02:00
JĂłzef Kucia
49ba93066e tests: Test eval attribute instructions with packed inputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:13:14 +02:00
JĂłzef Kucia
91820630cb vkd3d-shader: Try to avoid private IO variables even harder.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:13:11 +02:00
JĂłzef Kucia
267f10df8b vkd3d-shader: Handle interpolation mode in vkd3d_dxbc_compiler_emit_input().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:13:09 +02:00
JĂłzef Kucia
f0530d92b8 vkd3d-shader: Clear output register status while leaving control point phase.
We need to clear output register status when epilogue function isn't
used.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:13:06 +02:00
JĂłzef Kucia
68a4b89d61 vkd3d-shader: Do not assume destination is 4 component vector in vkd3d_dxbc_compiler_emit_store().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:13:03 +02:00
JĂłzef Kucia
f650b2f6ac vkd3d-shader: Try harder to avoid private variables for shader outputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:13:00 +02:00
JĂłzef Kucia
1f8cde763a vkd3d-shader: Avoid generating debug names for hull shader SPIR-V built-ins.
SPIRV Tools disassembler generates pretty names for SPIR-V built-ins.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:12:57 +02:00
JĂłzef Kucia
3b6a63425a vkd3d-shader: Allow vPrim in hull shader phases.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:12:54 +02:00
JĂłzef Kucia
206d370be4 tests: Remove test_incompletely_initialized_shader_outputs().
The test checks the content of uninitialized pixel shader outputs and it
fails on Windows with Intel GPUs.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 20:12:51 +02:00
JĂłzef Kucia
0e93657b4b vkd3d: Trace queue in vkd3d_queue_update_sequence_number().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 12:47:49 +02:00
JĂłzef Kucia
08e2e583b5 vkd3d: Introduce vkd3d_application_info.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 12:47:44 +02:00
JĂłzef Kucia
58e0a89d76 vkd3d: Remember the last fence we waited for.
An application uses the following pattern:

Wait(queue, fence, value);
ExecuteCommandLists(queue, count, lists);
Wait(queue, fence, value);
ExecuteCommandLists(queue, count2, lists2);

In this case, we don't need to wait for the fence again.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 12:47:41 +02:00
JĂłzef Kucia
56cd52dad1 tests: Add test for UNKNOWN RTV formats in pipeline state desc.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 12:47:39 +02:00
JĂłzef Kucia
8e16831549 vkd3d: Accept DXGI_FORMAT_UNKNOWN for pipeline RTV formats.
A NULL RTV is expected to be used when RTVFormat is DXGI_FORMAT_UNKNOWN.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-13 12:47:37 +02:00
JĂłzef Kucia
6f960f2096 tests: Add VKD3D_TEST_BUG env var to control bug_if() conditions.
Run tests with VKD3D_TEST_BUG=0 to disable bug_if() conditions.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-09 08:21:08 -05:00
JĂłzef Kucia
e01eae5b8a vkd3d: Use D32_SFLOAT_S8_UINT when D24_UNORM_S8_UINT is not supported.
Fixes rendering in UE4 Infiltrator Demo on AMD.

Adjustments for depth bias aren't implemented yet.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-09 08:21:04 -05:00
JĂłzef Kucia
9536f10383 vkd3d: Pass device to vkd3d_get_format().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-09 08:21:02 -05:00
JĂłzef Kucia
7c8ce3c51c vkd3d: Pass device to vkd3d_format_from_d3d12_resource_desc().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-09 08:20:59 -05:00
JĂłzef Kucia
9babc0fb44 include: Define TRACE_ON() for VKD3D_NO_TRACE_MESSAGES.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:54 -05:00
JĂłzef Kucia
8a23ff1376 vkd3d: Allow 0 vertex stride.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:50 -05:00
JĂłzef Kucia
890a77559f tests: Introduce queue_{signal,wait}() helpers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:47 -05:00
JĂłzef Kucia
0f5868cc4e vkd3d: Reuse Vulkan semaphores.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:43 -05:00
JĂłzef Kucia
bce64bf67b vkd3d: Handle integer overflow of sequence numbers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:40 -05:00
JĂłzef Kucia
a2f7ae0d32 vkd3d: Validate resource flags.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:36 -05:00
JĂłzef Kucia
5259a89138 vkd3d: Use VK_SHARING_MODE_CONCURRENT only when queue family count > 1.
The Vulkan spec states:

  If sharingMode is VK_SHARING_MODE_CONCURRENT, queueFamilyIndexCount
  must be greater than 1.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-06 15:29:32 -05:00
JĂłzef Kucia
1bfe8a2c54 tests: Add simple test for graphics and compute queue synchronization.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:35:12 +02:00
JĂłzef Kucia
124e6aad48 vkd3d: Implement d3d12_command_queue_Wait().
Waiting before the signal is not supported yet.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:35:10 +02:00
JĂłzef Kucia
205a41aaaa vkd3d: Introduce queue sequence numbers to track unused Vulkan semaphores.
In preparation for the following commmit.

Sequence numbers allows us to more easily track progress on queues in
comparison to tracking each VkFence individually.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:35:06 +02:00
JĂłzef Kucia
134f4d0081 vkd3d: Use list to store Vulkan semaphores.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:35:04 +02:00
JĂłzef Kucia
6801c15330 vkd3d: Forbid D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS for buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:35:02 +02:00
JĂłzef Kucia
756931f849 vkd3d: Translate D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS to VK_SHARING_MODE_CONCURRENT.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:35:00 +02:00
JĂłzef Kucia
2126614a03 vkd3d: Allow simultaneous buffer access from multiple queues.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:34:58 +02:00
JĂłzef Kucia
9e2ecaf7f4 readme: Update build requirements.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-03 16:34:56 +02:00
JĂłzef Kucia
e7b94e0337 vkd3d: Enable Vulkan debug extensions independently of debug log level.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-01 22:54:23 +02:00
JĂłzef Kucia
df72746729 vkd3d-shader: Use locale-insensitive string comparison.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-01 22:54:20 +02:00
JĂłzef Kucia
de3423e98e vkd3d-shader: Improve asserts for write mask component count.
Helps Clang Static Analyzer.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-01 22:54:16 +02:00
JĂłzef Kucia
2faae71f5a vkd3d-shader: Use more appropriate variables for descriptor range count.
Helps Clang Static Analyzer.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-01 22:54:13 +02:00
JĂłzef Kucia
ef71edcb32 vkd3d-shader: Remove dead assignment.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-01 22:54:10 +02:00
JĂłzef Kucia
081239fd90 vkd3d: Trace returned features.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-01 22:54:07 +02:00
JĂłzef Kucia
5ed83a251d vkd3d: Pass d3d12_resource to vk_barrier_parameters_from_d3d12_resource_state().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:47 +02:00
JĂłzef Kucia
3963316c50 vkd3d-shader: Translate lod shader instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:45 +02:00
JĂłzef Kucia
ee3994a1cd vkd3d-shader: Simplify resource declaration handling in SPIR-V generator.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:42 +02:00
JĂłzef Kucia
c77f02ca01 vkd3d-shader: Add support for parsing Shader Model 5.1 bytecode.
Translation to SPIR-V isn't implemented yet.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:40 +02:00
JĂłzef Kucia
242e52ac59 vkd3d: Simplify d3d12_pipeline_state_is_render_pass_compatible().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:37 +02:00
JĂłzef Kucia
5da59641b0 vkd3d: Share Vulkan render pass objects between D3D12 pipeline states.
For example, World of Warcraft creates 28 render passes for pipeline
state objects instead of 600+ render passes. Other games appears to use
similarly low number of render passes, e.g. 8, 17, 26, 60.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:34 +02:00
JĂłzef Kucia
9046233492 vkd3d-shader: Improve ID assignment for specialization constants.
Allows using 0 as SpecId.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:32 +02:00
JĂłzef Kucia
698e0d086d tests: Add test for sample positions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:30 +02:00
JĂłzef Kucia
3393719692 vkd3d-shader: Translate samplepos instructions.
This returns standard sample locations. DXC and glslang do the same thing.

d4d0b29752

In the long term, we could also add a shader parameter to pass sample
positions to the shader compiler.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-30 09:25:25 +02:00
JĂłzef Kucia
853e6b9726 tests: Add test for GetRenderTargetSampleCount().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:27 +02:00
JĂłzef Kucia
90bd84bf83 vkd3d: Pass sample count to shader compiler.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:25 +02:00
JĂłzef Kucia
def3a71513 vkd3d-shader: Make sure that specialization constants are emitted once.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:23 +02:00
JĂłzef Kucia
004f33432a vkd3d-shader: Use specialization constants by default for shader parameters.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:22 +02:00
JĂłzef Kucia
63d12751bb vkd3d-shader: Add support for specialization constants.
Allows reusing the same SPIR-V binary with different shader parameters.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:20 +02:00
JĂłzef Kucia
f510e93948 vkd3d-shader: Implement sampleinfo for rasterizer.
Also adds initial infrastructure for more flexible shader parameters.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:18 +02:00
JĂłzef Kucia
ac7b007fc7 tests: Add more tests for shader input components.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:16 +02:00
JĂłzef Kucia
2bdc63d682 vkd3d-shader: Fix write mask for shader inputs.
Shader inputs with non-contiguous write masks (e.g. xyw) were not
handled properly in rare cases.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:13 +02:00
JĂłzef Kucia
1172e66f6d include: Use "do { } while (0)" when VKD3D_NO_{TRACE, DEBUG}_MESSAGES is defined.
In order to handle the following construct correctly:

  if (...) TRACE(...);

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-26 16:37:10 +02:00
JĂłzef Kucia
d5d1ee4031 vkd3d-shader: Do not export vkd3d_shader_free_root_signature_v_1_0().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:20:25 +02:00
JĂłzef Kucia
aa2d00929e vkd3d: Prefer versioned root signature structures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:20:21 +02:00
JĂłzef Kucia
374bcd276e vkd3d-shader: Remove versioned_ prefix from root signature functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:20:18 +02:00
JĂłzef Kucia
070de4dfbb vkd3d-shader: Add FIXME() for unknown root signature descriptor flags.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:20:15 +02:00
JĂłzef Kucia
eef0651548 tests: Add tests for root signature 1.1 descriptor flags.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:20:11 +02:00
JĂłzef Kucia
cbab2362ce tests: Add tests for root signature 1.1 bytecode.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-25 17:20:08 +02:00
JĂłzef Kucia
14f9f03fd6 vkd3d: Rename d3d12_fence_destroy_vk_semaphores_locked().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-24 10:48:27 +02:00
JĂłzef Kucia
21ab63c4d6 vkd3d-shader: Remove vkd3d_shader_serialize_root_signature().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-24 10:48:24 +02:00
JĂłzef Kucia
534f30b30a vkd3d: Implement vkd3d_serialize_versioned_root_signature().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-24 10:48:20 +02:00
JĂłzef Kucia
a9ad6f637d vkd3d-shader: Implement serialization for versioned root signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-24 10:48:17 +02:00
JĂłzef Kucia
0cca14a206 vkd3d: Implement d3d12_versioned_root_signature_deserializer_GetRootSignatureDescAtVersion().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-24 10:48:12 +02:00
JĂłzef Kucia
16f36b0c9b vkd3d-shader: Remove vkd3d_shader_parse_root_signature().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-19 16:24:09 +02:00
JĂłzef Kucia
f300781c79 vkd3d: Prefer vkd3d_shader_parse_versioned_root_signature().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-19 16:24:07 +02:00
JĂłzef Kucia
ac8ffc3cd0 vkd3d: Reimplement ID3D12RootSignatureDeserializer on top of vkd3d_shader_parse_versioned_root_signature().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-19 16:24:06 +02:00
JĂłzef Kucia
fbeabe0849 vkd3d-shader: Implement conversion between root signature 1.0 and 1.1.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-19 16:24:04 +02:00
JĂłzef Kucia
cb895ff646 vkd3d: Implement vkd3d_create_versioned_root_signature_deserializer().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-19 16:23:57 +02:00
JĂłzef Kucia
f9b9ae8cc7 vkd3d-shader: Implement parsing of root signature 1.1.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-19 16:23:53 +02:00
JĂłzef Kucia
8df50592f6 vkd3d: Reject D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:49:06 +02:00
JĂłzef Kucia
a00ae0025f tests: Add test for ID3D12CommandQueue_Wait().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:49:03 +02:00
JĂłzef Kucia
f886aecdc0 vkd3d: Return S_OK from d3d12_command_queue_Wait().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:49:01 +02:00
JĂłzef Kucia
fd53b967fc tests: Add simple test for fence values.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:48:58 +02:00
JĂłzef Kucia
a81f21004f tests: Introduce universal create_command_queue() helper.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:48:55 +02:00
JĂłzef Kucia
3c44195206 vkd3d: Reuse Vulkan fences.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:48:50 +02:00
JĂłzef Kucia
cf1faaf873 vkd3d: Signal Vulkan semaphore in d3d12_command_queue_Signal().
For d3d12_command_queue_Wait().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:48:47 +02:00
JĂłzef Kucia
81b33e7129 vkd3d: Differentiate GPU and CPU fence signal operations.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-18 18:48:43 +02:00
JĂłzef Kucia
393f1d858d build: Print widl in configuration summary.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-15 21:02:20 +02:00
JĂłzef Kucia
68945ffcf3 build: Redirect stderr to /dev/null in VKD3D_PROG_WIDL.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-15 21:02:14 +02:00
JĂłzef Kucia
6b1fa56924 build: Add linker scripts to EXTRA_*_DEPENDENCIES.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-15 21:02:03 +02:00
JĂłzef Kucia
3b83ccc67e vkd3d: Add stubs for versioned root signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-10 18:56:55 +02:00
JĂłzef Kucia
799434fc8f include: Add definitions for versioned root signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-10 18:56:53 +02:00
JĂłzef Kucia
ec458df6ff vkd3d: Fix device features structure chain.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-10 18:56:50 +02:00
JĂłzef Kucia
233caa2fb0 build: Drop hack for stripping RPC includes from widl-generated headers.
This requires widl from Wine >= 3.20:

  commit b7402ddbbecdfaa81daa657fbb5d37661f401434
  Author: JĂłzef Kucia <jkucia@codeweavers.com>
  Date:   Mon Nov 19 15:07:02 2018 +0100

      widl: Guard RPC includes with #ifdef _WIN32.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-10 18:56:41 +02:00
JĂłzef Kucia
f7fa7a3fb8 vkd3d-shader: Assert that write masks are valid.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-08 19:39:41 +02:00
JĂłzef Kucia
de0d7a837b tests: Use uint64_t for width and row_pitch (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-08 19:39:38 +02:00
JĂłzef Kucia
a46a2fb21b vkd3d-shader: Avoid mixing enum types (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-08 19:39:36 +02:00
JĂłzef Kucia
18f8019fd9 vkd3d-common: Explicitly limit value to UINT_MAX in vkd3d_env_var_as_uint().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-08 19:39:34 +02:00
JĂłzef Kucia
abdaa20376 vkd3d: Fix memory leak in vkd3d_init_device_caps() (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-08 19:39:32 +02:00
JĂłzef Kucia
0abbf5ed76 include: Introduce VKD3D_NO_TRACE_MESSAGES and VKD3D_NO_DEBUG_MESSAGES.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-04 17:25:34 +02:00
JĂłzef Kucia
a95c9f8ad8 vkd3d: Add support for VK_EXT_depth_clip_enable.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-04 17:25:31 +02:00
JĂłzef Kucia
32aa45a86d vkd3d: Simplify d3d12_command_list_update_descriptor_table().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-04 17:25:25 +02:00
JĂłzef Kucia
41274e6285 vkd3d: Drop support for dummy sampler.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-04 17:25:23 +02:00
JĂłzef Kucia
5842898cc7 vkd3d-shader: Drop support for dummy samplers.
This shouldn't be needed by any Vulkan driver anymore.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-04 17:25:21 +02:00
Zhiyi Zhang
32a15c089a vkd3d: Improve UMA memory detection.
Some vulkan implementation report 2 memory types with the same
VkMemoryPropertyFlags for a device. So check property flags
to determine if UMA and CacheCoherentUMA are actually supported
by the device.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-04 17:25:15 +02:00
Zhiyi Zhang
0ac694e7cc tests: Add tests for subresource read write.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-03 20:36:38 +02:00
Zhiyi Zhang
c726a1df0a tests: Add more tests for mapping texture on custom heaps.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-03 20:36:36 +02:00
JĂłzef Kucia
a1ec97ca2a vkd3d: Enable VK_EXT_descriptor_indexing.
This extension brings dynamic indexing for all descriptor types and the
update after bind feature.

VK_KHR_maintenance3 is required by VK_EXT_descriptor_indexing.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-02 19:34:01 +02:00
JĂłzef Kucia
0eb2817c22 tests: Use vkd3d_optional_device_extensions_info.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-02 19:33:59 +02:00
JĂłzef Kucia
e88d6f4f2a test: Test root CBV descriptor with big buffer.
This test is for commit 22330b5414.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-02 19:33:57 +02:00
JĂłzef Kucia
ba1766fe30 tests: Add test for updating descriptor tables after changing root signature.
This test is for commit 74fbfee611.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-02 19:33:54 +02:00
JĂłzef Kucia
91e88a820e vkd3d: Avoid copying empty ranges in d3d12_device_CopyDescriptors().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-02 19:33:51 +02:00
JĂłzef Kucia
4408816e24 vkd3d: Add helpers for getting root signature parameters.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-01 21:42:50 +02:00
JĂłzef Kucia
74fbfee611 vkd3d: Clear descriptor dirty masks when setting root signature.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-01 21:42:47 +02:00
JĂłzef Kucia
a6e482aa88 tests: Skip some tests when VKD3D_VULKAN_DEVICE is set.
Allows running tests with VKD3D_VULKAN_DEVICE.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-01 21:42:44 +02:00
JĂłzef Kucia
09bffa48c6 tests: Add test for depth clip.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-01 21:42:41 +02:00
JĂłzef Kucia
8350ba3fd2 tests: Add test for fragment w coordinate.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-01 21:42:38 +02:00
JĂłzef Kucia
acc9430abe vkd3d-shader: Fix SV_Position.w in pixel shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-01 21:42:35 +02:00
JĂłzef Kucia
b3066e6ba8 tests: Add simple test for 2D NULL SRVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:21:11 +01:00
JĂłzef Kucia
c95a51ecd0 vkd3d: Add partial support for 2D NULL SRVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:21:10 +01:00
JĂłzef Kucia
ab3fab2953 vkd3d: Initialize NULL CBV buffer.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:21:08 +01:00
JĂłzef Kucia
ee673a9db5 vkd3d: Use dedicated allocation for committed resources.
Dedicated allocations may improve the performance.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:21:06 +01:00
JĂłzef Kucia
3d3f640590 vkd3d: Add more Vulkan feature checks.
Sort the list alphabetically.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:21:02 +01:00
JĂłzef Kucia
6ee8529390 vkd3d: Add support for optional device extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:21:00 +01:00
JĂłzef Kucia
053a2b0f52 vkd3d: Trace device properties for selected device.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 00:20:58 +01:00
JĂłzef Kucia
7175a82821 tests: Add test for SRV component mapping.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-22 20:33:11 +01:00
JĂłzef Kucia
eb741c9ecd vkd3d: Implement component mapping for SRVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-22 20:33:09 +01:00
JĂłzef Kucia
574cacdf15 build: Simplify DL_LIBS handling.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:42:32 +01:00
JĂłzef Kucia
fa5a15c961 build: Fix pthread tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:42:03 +01:00
JĂłzef Kucia
4cdbcbd85f vkd3d: Do not require dlfcn.
For Windows builds.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:41:42 +01:00
JĂłzef Kucia
143f25b12e tests: Add tests for copying block-compressed texture regions of smallest miplevels.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:41:31 +01:00
JĂłzef Kucia
bcd60c21ca vkd3d-shader: Do not enable SpvCapabilityUniformBufferArrayDynamicIndexing.
This capability is for dynamic indexing *arrays* of uniform buffers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:41:28 +01:00
JĂłzef Kucia
27b4779930 vkd3d-shader: Check shader visibility for combined samplers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:41:25 +01:00
JĂłzef Kucia
3a3bc772b1 vkd3d: Ignore redundant SetPipelineState() calls.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:41:23 +01:00
JĂłzef Kucia
f3c9229cc3 vkd3d: Ignore redundant IASetPrimitiveTopology() calls.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-19 18:41:20 +01:00
Henri Verbeet
449d36a7e7 build: Depend on the Makefile for .pc files.
Since we substitute PACKAGE_VERSION in particular.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:54:05 +01:00
JĂłzef Kucia
b30437d239 tests: Add test for copying misaligned texture regions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:54:02 +01:00
JĂłzef Kucia
25b5bf86a1 tests: Map readback buffers with correct read range.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:54:00 +01:00
JĂłzef Kucia
5cec1f65c2 tests: Add test for copying texture regions from and to BC textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:53:58 +01:00
JĂłzef Kucia
e9574e1f39 vkd3d: Validate box in d3d12_command_list_CopyTextureRegion().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:53:56 +01:00
JĂłzef Kucia
c960e10ea5 tests: Add more tests for copying data from textures to buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:53:54 +01:00
JĂłzef Kucia
a4d02360ed vkd3d: Fix copying texture regions from textures to buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:53:52 +01:00
JĂłzef Kucia
35366b0d99 tests: Add more tests for copying data from buffers to textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:53:50 +01:00
JĂłzef Kucia
cd6ddd2418 vkd3d: Do not ignore "src_box" in d3d12_command_list_CopyTextureRegion().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 16:53:48 +01:00
JĂłzef Kucia
fb0fa9d2ab tests: Fix Vulkan validation error in test_copy_descriptors().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-14 23:53:42 +01:00
JĂłzef Kucia
f523c642a4 vkd3d: Remove FIXME() from vkd3d_get_format().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-14 23:53:40 +01:00
JĂłzef Kucia
05666d3385 vkd3d: Add VKD3D_VULKAN_DEVICE debug environment variable.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-14 23:53:34 +01:00
JĂłzef Kucia
3629bc1ca9 tests: Add test for eval attribute shader instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-14 23:53:31 +01:00
JĂłzef Kucia
c6477964a3 vkd3d-shader: Translate eval_centroid shader instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-14 23:53:29 +01:00
JĂłzef Kucia
38f5081496 vkd3d-shader: Translate eval_sample_index shader instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-14 23:53:27 +01:00
JĂłzef Kucia
6c141d7457 tests: Introduce assert_that().
This allows us to put a bug_if() or todo_if() in the front of functions
that check other conditions not directly related to the actual test.

assert_that() is similar to ok(). The main difference is that it ignores
bug_if() and todo_if().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-11 19:17:29 +01:00
JĂłzef Kucia
b0c8561cff vkd3d: Fix feature queries for depth/stencil formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-11 19:17:27 +01:00
JĂłzef Kucia
f1bfb1305e vkd3d: Update command list to ID3D12GraphicsCommandList1.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-07 19:01:14 +01:00
JĂłzef Kucia
d0f8443ac5 vkd3d: Do not crash on NULL views in IASetIndexBuffers().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-07 19:01:12 +01:00
JĂłzef Kucia
a844d8f0a8 vkd3d: Validate image views before creating framebuffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-07 19:01:10 +01:00
JĂłzef Kucia
fd48757d25 vkd3d: Allow more memory types for custom heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-07 19:01:08 +01:00
JĂłzef Kucia
3629787aad vkd3d: Add more formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-07 19:01:06 +01:00
JĂłzef Kucia
cb2a9b2611 tests: Use vkd3d_test_set_context() in test_null_cbv().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:42 +01:00
JĂłzef Kucia
1941491823 tests: Add test for hull shader fork phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:41 +01:00
JĂłzef Kucia
19f9745adf vkd3d-shader: Use epilogue functions for fork and join phases.
In order to handle packed outputs properly.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:39 +01:00
JĂłzef Kucia
74c8ca0f64 vkd3d-shader: Add basic support for vocp registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:37 +01:00
JĂłzef Kucia
7fc98ade64 vkd3d-shader: Use SPIR-V built-ins for hull shader inputs.
I missed this case before because apps don't seem to use SV_Position
for hull shader inputs. vkd3d_siv_from_sysval() needs to be restored
for hull shaders.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:34 +01:00
JĂłzef Kucia
67a160683d vkd3d-shader: Take into account dst write mask for scalar stores.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:32 +01:00
JĂłzef Kucia
702cdccf53 tests: Get rid of vk_driver_id static variable.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:31 +01:00
JĂłzef Kucia
68222e458d tests: Implement --adapter option for Vulkan tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:29 +01:00
JĂłzef Kucia
f640602ce8 vkd3d: Add feature level 11_1.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:27 +01:00
JĂłzef Kucia
38e3c5d2d3 vkd3d: Rework Vulkan queues initialisation.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-06 16:00:25 +01:00
JĂłzef Kucia
f4ba057279 tests: Skip DXGI_FORMAT_R24G8_TYPELESS tests on radv.
Allows running all tests cleanly on radv. We have to implement formats
emulation in vkd3d to fix the test.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:35 +01:00
JĂłzef Kucia
af50b9d2a0 tests: Mark driver-specific test failures as bugs.
Allows running all tests cleanly on Intel and Nvidia.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:31 +01:00
JĂłzef Kucia
e36024c87d tests: Print driver info from VK_KHR_driver_properties.
In preparation for the next commit.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:24 +01:00
JĂłzef Kucia
085456005c vkd3d: Set Vulkan object names for NULL CBV resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:20 +01:00
JĂłzef Kucia
f91422eb40 tests: Accumulate coverage mask from all fragments.
Clipping may divide the triangle and produce multiple fragments per
pixel.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:16 +01:00
JĂłzef Kucia
7858eb6a83 vkd3d: Prefer cached memory for readback heaps.
Reading uncached memory is slow.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:12 +01:00
JĂłzef Kucia
e20ddc48a6 tests: Add basic test for NULL CBV descriptors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:09 +01:00
JĂłzef Kucia
401739a387 vkd3d: Emulate NULL CBV descriptors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-04 19:46:05 +01:00
JĂłzef Kucia
02ca005ada vkd3d: Use vkCmdResolveImage() to resolve typeless resources if possible.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-28 16:37:52 +01:00
JĂłzef Kucia
98d89c09fe tests: Fix domain shader code in test_tessellation_dcl_index_range().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:23 +01:00
JĂłzef Kucia
5bfd2b8ed4 tests: Add test for hull shader control point phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:21 +01:00
JĂłzef Kucia
0ffaf4a2b7 vkd3d-shader: Introduce is_control_point_phase() helper.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:19 +01:00
JĂłzef Kucia
ff132543c1 vkd3d-shader: Index control point phase outputs by InvocationId.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:16 +01:00
JĂłzef Kucia
0328118947 vkd3d-shader: Handle partial shader output updates in epilogue functions.
Fork and join phases quite often write only a few components of an
output variable.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:14 +01:00
JĂłzef Kucia
bc441fd6c6 vkd3d-shader: Add more advanced helper for vector shuffle.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:10 +01:00
JĂłzef Kucia
6c70edf511 vkd3d-shader: Remove output register symbols while leaving control point phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:08 +01:00
JĂłzef Kucia
9eebb38e56 tests: Add test for SV_RenderTargetArrayIndex in pixel shader.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-26 22:08:01 +01:00
JĂłzef Kucia
b277b12f5f tests: Add test for vkd3d shader function pointers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:08:08 +01:00
JĂłzef Kucia
d96076a919 include: Add typedefs for vkd3d-shader function pointers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:08:06 +01:00
JĂłzef Kucia
02cbc53b96 vkd3d-shader: Get rid of vkd3d_dxbc_compiler_emit_swizzle_ext().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:08:05 +01:00
JĂłzef Kucia
cb24be8e83 vkd3d-shader: Do not assume float type for arrayed shader outputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:08:03 +01:00
JĂłzef Kucia
04e2091afa vkd3d-shader: Do not assume vec4 destination in vkd3d_dxbc_compiler_emit_store().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:08:01 +01:00
JĂłzef Kucia
95b6d5222d vkd3d-shader: Call vkd3d_dxbc_compiler_leave_shader_phase() also for last phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:07:59 +01:00
JĂłzef Kucia
38f75846b4 vkd3d-shader: Emit epilogue functions while leaving shader phases.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:07:57 +01:00
JĂłzef Kucia
61aeaae0c2 vkd3d-shader: Factor out vkd3d_dxbc_compiler_emit_store().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:07:55 +01:00
JĂłzef Kucia
64f7ff3898 vkd3d-shader: Merge ifs in vkd3d_dxbc_compiler_emit_swizzle_ext().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:07:52 +01:00
Philip Rebohle
c560fdfa26 vkd3d-shader: Decorate integer fragment shader builtins as flat.
From the Vulkan spec, 8.13 "Interpolation Decorations":

    Fragment shader inputs that are signed or unsigned integers,
    integer vectors, or any double-precision floating-point type
    must be decorated with Flat.

This also matches glslang behaviour.

Specifically, this fixes tone-mapping in Unreal Engine 4 on RADV
and AMDGPU-PRO, where gl_Layer is used as a fragment shader input.

Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 19:07:50 +01:00
JĂłzef Kucia
d1e0ac115c vkd3d-shader: Avoid generating unique array types for immediate constant buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:44 +01:00
JĂłzef Kucia
992dfb1a55 tests: Add more tessellation tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:42 +01:00
JĂłzef Kucia
a0069d9fb7 vkd3d-shader: Use correct base index for relative addressing of aggregates.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:39 +01:00
JĂłzef Kucia
d300e6f84c vkd3d-shader: Remove v{Fork, Join}InstanceID from symbol table when leaving shader phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:37 +01:00
JĂłzef Kucia
9c46011b43 vkd3d-shader: Simplify vkd3d_dxbc_compiler_get_register_id().
Special casing is not needed.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:35 +01:00
JĂłzef Kucia
3cbdad5f29 vkd3d-shader: Translate vPrim register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:33 +01:00
JĂłzef Kucia
7466758f08 vkd3d-shader: Fix swizzle for scalars.
In rare cases, OpCompositeExtract was generated for scalars.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:30 +01:00
JĂłzef Kucia
a6bf217af8 build: Fix 'make dist'.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-22 12:30:27 +01:00
JĂłzef Kucia
197c1d9612 vkd3d-shader: Handle VKD3DSPR_INCONTROLPOINT in vkd3d_dxbc_compiler_get_register_id().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:14 +01:00
JĂłzef Kucia
d3622628bf tests: Add another hull shader to NOP tessellation shaders test.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:12 +01:00
JĂłzef Kucia
b6de566e3a vkd3d-shader: Add basic support for dcl_index_range.
We can address SPIR-V arrays dynamically.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:10 +01:00
JĂłzef Kucia
a248aced81 tests: Add test for quad tessellation.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:08 +01:00
JĂłzef Kucia
d274318fe2 vkd3d-shader: Avoid using SPIR-V built-ins for shader interface between tessellation stages.
We can do this because both tessellation shaders are required in
Direct3D.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:04 +01:00
JĂłzef Kucia
2ce7b2305a vkd3d: Implement SO statistics queries.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:03 +01:00
JĂłzef Kucia
7b84adec32 vkd3d-shader: Set xxxx swizzle for scalar registers.
Mainly for vOutputControlPointID.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:15:00 +01:00
JĂłzef Kucia
3fbbc68160 vkd3d-shader: Replace VKD3DSIH_TABLE_SIZE with VKD3DSIH_INVALID.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-20 19:14:58 +01:00
JĂłzef Kucia
70822141b7 vkd3d: Avoid passing invalid viewport to Vulkan.
Needs more tests.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:16 +01:00
JĂłzef Kucia
c333fddaf9 vkd3d-shader: Add support for OpenGL tessellation shaders.
In DXBC tessellator parameters are specified in hull shaders. In OpenGL,
even in SPIR-V, tessellator parameters must be specified in the
tessellation evaluation shader.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:14 +01:00
JĂłzef Kucia
22330b5414 vkd3d: Avoid using VK_WHOLE_SIZE for uniform buffer descriptors.
It is invalid to use VK_WHOLE_SIZE when a buffer is larger than
maxUniformBufferRange.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:12 +01:00
JĂłzef Kucia
f98866f7d8 vkd3d: Return the same value for MaxGPUVirtualAddressBitsPerResource.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:09 +01:00
JĂłzef Kucia
552f7b8eeb vkd3d: Ignore barriers with unexpected sub-resource index.
For planar formats.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:07 +01:00
JĂłzef Kucia
7829461d6d tests: Add test for D3D12_FEATURE_FORMAT_INFO.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:05 +01:00
JĂłzef Kucia
a2f38f88e2 vkd3d: Do not advertise tiled resource support.
Tiled resources are not implemented yet.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:03 +01:00
JĂłzef Kucia
52e44b5533 vkd3d: Trace decoded driver versions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-14 16:01:01 +01:00
JĂłzef Kucia
b186645ccb tests: Test GPU virtual address with readback buffer.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:57 +01:00
JĂłzef Kucia
48ed937de3 tests: Get rid of ID3D12Object_SetName(object, NULL).
It crashes on Windows.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:52 +01:00
JĂłzef Kucia
b1b3405bcf vkd3d-shader: Implement user patch constants for hull shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:50 +01:00
JĂłzef Kucia
7fde0ac78f vkd3d-shader: Implement relative addressing for arrayed registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:48 +01:00
JĂłzef Kucia
d30afc37c4 vkd3d-shader: Implement input registers for control point phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:46 +01:00
JĂłzef Kucia
efe68b00bb vkd3d-shader: Add basic support for vpc registers in domain shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:44 +01:00
JĂłzef Kucia
1a5f058f4a vkd3d-shader: Translate vOutputControlPointID register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:42 +01:00
JĂłzef Kucia
269bb649d7 vkd3d: Improve heuristic for selecting physical device.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-13 17:21:39 +01:00
JĂłzef Kucia
92185ce594 vkd3d: Fix formatting in is_dual_source_blending().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:38 +01:00
JĂłzef Kucia
1164de705e vkd3d: Do not enable depth bias unconditionally.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:36 +01:00
JĂłzef Kucia
b2f286834a tests: Add NOP test for tessellation shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:33 +01:00
JĂłzef Kucia
09dea5f4d9 vkd3d-shader: Implement default control point phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:31 +01:00
JĂłzef Kucia
c9fb9c7a7d vkd3d-shader: Simplify vkd3d_dxbc_compiler_emit_mov().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:29 +01:00
JĂłzef Kucia
bdae9e30b4 vkd3d-shader: Ignore dcl_hs_max_tessfactor.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:26 +01:00
JĂłzef Kucia
0498fafbb0 vkd3d-shader: Try to use SpvOpCopyMemory for mov instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-11 18:33:24 +01:00
JĂłzef Kucia
a81a7f837e vkd3d-shader: Add initial support for built-in patch constants.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 17:20:39 +01:00
JĂłzef Kucia
4ad4cbb7df vkd3d-shader: Factor out vkd3d_symbol_set_register_info().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 17:20:37 +01:00
JĂłzef Kucia
df654aa327 vkd3d-shader: Factor out vkd3d_dxbc_compiler_emit_builtin().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 17:20:35 +01:00
JĂłzef Kucia
c314b5b01c vkd3d-shader: Get sysval semantic from shader signature for inputs.
In domain shaders, inputs are declared with dcl_input without semantic.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 17:20:33 +01:00
JĂłzef Kucia
ba7807b456 vkd3d-shader: Rename scan instruction function to vkd3d_shader_scan_instruction().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-08 17:20:17 +01:00
JĂłzef Kucia
fd3d661bf0 vkd3d-shader: Unset r# registers state while leaving current shader phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 17:01:59 +01:00
JĂłzef Kucia
59d97b07fe vkd3d-shader: Implement hull shader barriers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 17:01:57 +01:00
JĂłzef Kucia
0397808f81 vkd3d-shader: Add support for instanced join phases.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 17:01:56 +01:00
JĂłzef Kucia
18784e6500 vkd3d-shader: Translate vForkInstanceId registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 17:01:53 +01:00
JĂłzef Kucia
ea4dd22309 vkd3d-shader: Add support for instanced fork phases.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 17:01:51 +01:00
JĂłzef Kucia
e88b73797b vkd3d-shader: Delay generating functions for shader phases.
Mainly in order to wait for dcl_hs_{fork,join}_phase_instance_count.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-07 17:01:49 +01:00
Zhiyi Zhang
f5fd7ce046 tests: Add SetName() tests.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 19:46:14 +01:00
JĂłzef Kucia
97f0e778af vkd3d-shader: Allocate temporary registers per shader phase.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:54 +01:00
JĂłzef Kucia
b8b09e58fa vkd3d-shader: Do not generate shader epilogue for fork and join shader phases.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:52 +01:00
JĂłzef Kucia
904ab0ead5 vkd3d-shader: Generate functions for hull shader phases.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:50 +01:00
JĂłzef Kucia
82d56f4872 vkd3d-shader: Introduce vkd3d_spirv_get_op_type_function().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:44 +01:00
JĂłzef Kucia
82fb2797ca vkd3d-shader: Add FIXME about error messages from vkd3d_shader_serialize_root_signature().
We need to fix this before finalizing vkd3d-shader API.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:41 +01:00
JĂłzef Kucia
ffbe7e7191 vkd3d: Avoid printing FIXME() about error blobs unnecessarily.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:39 +01:00
JĂłzef Kucia
0641229e0e vkd3d: Set object names for Vulkan command pools.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-06 15:38:37 +01:00
JĂłzef Kucia
257ac5c3a1 vkd3d: Set object names for Vulkan compute pipelines.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:48 +01:00
JĂłzef Kucia
0055aa67f1 vkd3d-common: Fix vkd3d_strdup_{w16, w32}_utf8() functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:46 +01:00
JĂłzef Kucia
6a3c75d0d1 vkd3d: Compile pipelines with tessellation state create info.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:44 +01:00
JĂłzef Kucia
c36688f1a3 vkd3d: Add support for patch list primitive topology.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:42 +01:00
JĂłzef Kucia
363beefa9b vkd3d-shader: Introduce vkd3d_spirv_build_op_access_chain1().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:40 +01:00
Zhiyi Zhang
de88b33e4d vkd3d: Implement d3d12_command_queue_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:28 +01:00
Zhiyi Zhang
3e955da668 vkd3d: Implement d3d12_command_allocator_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:26 +01:00
Zhiyi Zhang
be6ffa6b79 vkd3d: Implement d3d12_command_list_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:24 +01:00
Zhiyi Zhang
bff7218091 vkd3d: Implement d3d12_device_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-05 19:26:22 +01:00
JĂłzef Kucia
c8e05a93b4 include: Avoid redefining ARRAY_SIZE().
winnt.h from Wine defines ARRAY_SIZE() when __WINESRC__ is defined.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:06:27 +01:00
JĂłzef Kucia
b402ae96a6 include: Include stdlib.h for malloc().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:06:24 +01:00
JĂłzef Kucia
4992947661 include: Define __C89_NAMELESS early.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:06:21 +01:00
JĂłzef Kucia
0bbf92404d build: Add option to disable tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:06:07 +01:00
JĂłzef Kucia
50fe2b7638 build: Build DLLs for Windows.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:06:01 +01:00
JĂłzef Kucia
97c3aa0cdc vkd3d-shader: Use VKD3D_SHADER_DEBUG instead of VKD3D_DEBUG.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:55 +01:00
JĂłzef Kucia
52015b30b3 vkd3d-common: Add support for naming debug environment variable.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:53 +01:00
JĂłzef Kucia
1ae1f831f6 vkd3d-shader: Move VKD3D_SHADER_DUMP_PATH implementation from libvkd3d.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:51 +01:00
JĂłzef Kucia
ad29886691 tests: Add tests for image memory allocation info with various miplevels.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:49 +01:00
Zhiyi Zhang
f181334c54 vkd3d: Implement d3d12_fence_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:47 +01:00
Zhiyi Zhang
21b71be40e vkd3d: Implement d3d12_command_signature_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:45 +01:00
Zhiyi Zhang
252af95ba0 vkd3d: Implement d3d12_root_signature_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:43 +01:00
Zhiyi Zhang
225242c0b1 vkd3d: Implement d3d12_pipeline_state_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:41 +01:00
Zhiyi Zhang
3718e47133 vkd3d: Implement d3d12_descriptor_heap_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-31 18:05:39 +01:00
Zhiyi Zhang
1372bebc86 vkd3d: Implement d3d12_heap_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-30 18:35:42 +01:00
Zhiyi Zhang
875577bb89 vkd3d: Implement d3d12_resource_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-30 18:35:40 +01:00
Zhiyi Zhang
d0e2802a35 vkd3d: Implement d3d12_query_heap_SetName().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-30 18:35:38 +01:00
Andrew Eikum
3b1af3c85d readme: Expand on building and using vkd3d.
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 19:12:07 +01:00
JĂłzef Kucia
2aa7c6b753 vkd3d: Avoid passing 0 miplevels to Vulkan.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:40 +01:00
JĂłzef Kucia
fd4f0b0024 tests: Add test for D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:37 +01:00
JĂłzef Kucia
9370929ac1 vkd3d: Implement D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:35 +01:00
JĂłzef Kucia
766361f9c3 vkd3d: Return hardcoded GPU virtual address support.
The hardcoded value makes a real app happy and it is close to values
returned by various Windows drivers (AMD, Intel, Nvidia). In the long
term, we might try to derive the values from maxResourceSize and/or
sparseAddressSpaceSize.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:32 +01:00
JĂłzef Kucia
bcd91910e4 vkd3d-shader: Use proper vkd3d_spirv_builtin for PS fragment coordinates.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:23 +01:00
JĂłzef Kucia
495d4b9474 vkd3d-shader: Add more general support for SPIR-V aggregates.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:21 +01:00
JĂłzef Kucia
2838ee5833 vkd3d-shader: Translate dcl_tessellator_output_primitive instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:17 +01:00
JĂłzef Kucia
d74133fda5 vkd3d: Fix assert() condition for sample mask array size.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-25 18:59:14 +01:00
JĂłzef Kucia
c8ec3be716 tests: Add test for sample_c_lz instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-24 17:04:06 +01:00
JĂłzef Kucia
abe857d2de tests: Add test for vCoverage shader register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-24 17:04:04 +01:00
JĂłzef Kucia
639693de86 vkd3d: Do not ignore SampleMask in D3D12_GRAPHICS_PIPELINE_STATE_DESC.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-24 17:04:02 +01:00
JĂłzef Kucia
559c0191c8 vkd3d-shader: Implement vCoverage shader register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-24 17:03:59 +01:00
JĂłzef Kucia
4f55d990b9 vkd3d-shader: Mark hs_decls as declaration instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-24 17:03:57 +01:00
JĂłzef Kucia
b59ddfaec3 tests: Add test for oMask shader register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-23 17:43:03 +01:00
JĂłzef Kucia
54d9714fcd vkd3d-shader: Implement oMask shader register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-23 17:43:01 +01:00
JĂłzef Kucia
fd0844e420 vkd3d-shader: Avoid using private variables for depth output registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-23 17:42:58 +01:00
JĂłzef Kucia
de3022478b tests: Add test for resinfo shader instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-23 17:42:56 +01:00
JĂłzef Kucia
35e062b0a4 vkd3d-shader: Fix resinfo for cube textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-23 17:42:54 +01:00
JĂłzef Kucia
49a02a41f3 tests: Add more tests for texture allocation info.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:36:04 +01:00
JĂłzef Kucia
ec49d3ebd2 vkd3d: Allow D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT only when explicitly requested.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:36:02 +01:00
JĂłzef Kucia
8f3db5ecef vkd3d: Simplify d3d12_device_GetResourceAllocationInfo().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:36:01 +01:00
JĂłzef Kucia
39eb9fe5d8 vkd3d: Allow D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT only for small textures.
Use a simple heuristic to decide if a resource is "small". The heuristic
is based on theoretical constraints for the most detailed mip level of
small resources. Those constraints are mentioned in D3D12 validation
layer errors and in the DirectX 12 Graphics samples.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:35:59 +01:00
JĂłzef Kucia
1561c8a9c2 tests: Test GetCopyableFootprints() with base offset.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:35:57 +01:00
JĂłzef Kucia
aff7ff4fcf vkd3d: Handle base offset in GetCopyableFootprints().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:35:55 +01:00
JĂłzef Kucia
e37cb78a22 vkd3d: Skip uninitialized descriptors in OMSetRenderTargets().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-22 16:35:53 +01:00
JĂłzef Kucia
4c0692b2ef vkd3d-shader: Rename vkd3d_shader_interface to vkd3d_shader_interface_info.
For consistency with other vkd3d and vkd3d-shader structures.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-17 19:44:05 +01:00
JĂłzef Kucia
1a05563fc7 vkd3d: Require D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT for input layout.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-17 19:44:03 +01:00
JĂłzef Kucia
15713840b4 vkd3d: Require D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT for stream output.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-17 19:44:01 +01:00
JĂłzef Kucia
bb7d1046da vkd3d-shader: Use result type for bitfield instructions source parameters.
Fixes SPIR-V validation errors:

  Expected Base Type to be equal to Result Type: BitFieldSExtract

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-15 15:26:04 +01:00
JĂłzef Kucia
84759c40fe vkd3d-shader: Use vkd3d_dxbc_compiler_emit_load_src() in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-15 15:26:02 +01:00
JĂłzef Kucia
ff7df2cdf9 vkd3d-shader: Use result type for atomic instructions source parameters.
Fixes SPIR-V validation errors:

  AtomicIAdd: expected Value to be of type Result Type

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-15 15:25:57 +01:00
JĂłzef Kucia
9f0c428874 tests: Add test for SV_VertexID with indirect draws.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-15 15:25:56 +01:00
JĂłzef Kucia
5fcefdd39e tests: Add test for SV_VertexID.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-15 15:25:53 +01:00
JĂłzef Kucia
da3e283717 vkd3d-shader: Fix SV_VertexID.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-15 15:25:51 +01:00
JĂłzef Kucia
b452ff0b0a tests: Add test for stream output without geometry shader.
The test is skipped when transform feedback is not supported by Vulkan
implementation.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:22 +01:00
JĂłzef Kucia
d9f8e6dd70 vkd3d: Implement stream output resource barriers naively.
With some tracking we could do better.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:19 +01:00
JĂłzef Kucia
1e4f8e39c9 vkd3d: Enable transform feedback for pipeline states with stream output.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:17 +01:00
JĂłzef Kucia
1aae46fb2f vkd3d: Pass transform feedback info to vkd3d-shader.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:15 +01:00
JĂłzef Kucia
3d80b3f4bd vkd3d-shader: Add basic support for transform feedback.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:13 +01:00
JĂłzef Kucia
731e11902a vkd3d-shader: Introduce vkd3d_dxbc_compiler_emit_initial_declarations().
To emit more declarations immediately after creating a new SPIR-V builder.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:10 +01:00
JĂłzef Kucia
61dd136cab vkd3d: Implement RasterizedStream.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:08 +01:00
JĂłzef Kucia
e73fe9cc41 vkd3d: Implement d3d12_command_list_SOSetTargets().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:05 +01:00
JĂłzef Kucia
799a8b41ce vkd3d: Set transform feedback buffer usage flags.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:03 +01:00
JĂłzef Kucia
5759cb52e0 vkd3d: Enable VK_EXT_transform_feedback.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-14 20:31:01 +01:00
JĂłzef Kucia
bf4619115d include: Add stream output constants.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-11 19:31:39 +01:00
JĂłzef Kucia
c509e6e83f vkd3d: Add FIXME() for sample mask.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-11 19:31:37 +01:00
JĂłzef Kucia
fbcc78d2f2 include: Include stdbool.h in vkd3d_shader.h.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-11 19:31:34 +01:00
JĂłzef Kucia
dadf2eda08 vkd3d-shader: Declare OriginUpperLeft execution mode for fragment shaders.
Required by the Vulkan spec:

  "fragment entry points must declare OriginUpperLeft."

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-11 19:31:31 +01:00
JĂłzef Kucia
e84472d026 Update copyright info for 2019.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-10 10:03:58 -06:00
JĂłzef Kucia
9a083f9c31 tests: Add multithreaded private data test.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-10 10:03:55 -06:00
JĂłzef Kucia
2629d9703f vkd3d: Protect private data with mutex.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-10 10:03:53 -06:00
JĂłzef Kucia
5a1408c78d vkd3d: Handle NULL pointers in vkd3d_private_store_set_private_data().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-10 10:03:47 -06:00
JĂłzef Kucia
e13fb138cd vkd3d: Implement private data for query heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:43 +01:00
JĂłzef Kucia
c9bd123bd0 vkd3d: Implement private data for descriptor heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:41 +01:00
JĂłzef Kucia
781d856ce3 vkd3d: Implement private data for resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:39 +01:00
JĂłzef Kucia
e9520af19f vkd3d: Implement private data for heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:35 +01:00
JĂłzef Kucia
b8fce1ac36 vkd3d: Implement private data for pipeline states.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:33 +01:00
JĂłzef Kucia
751d79a68f vkd3d: Implement private data for root signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:28 +01:00
JĂłzef Kucia
223e89a6e5 vkd3d: Implement private data for command signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-04 17:05:23 +01:00
JĂłzef Kucia
1b07aae974 tests: Modify ps_movc shader to avoid crashes on Windows.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 17:19:06 +01:00
JĂłzef Kucia
567000cab3 vkd3d: Implement private data for ID3D12Device.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 17:19:04 +01:00
JĂłzef Kucia
ec13f36681 vkd3d: Implement private data for command lists.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 17:19:02 +01:00
JĂłzef Kucia
f92abd7147 vkd3d: Implement private data for command allocators.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 17:19:00 +01:00
JĂłzef Kucia
0ddd6dbbb6 vkd3d: Implement private data for fences.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 17:18:58 +01:00
JĂłzef Kucia
d18360a8b7 vkd3d: Implement private data for command queues.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-01-03 17:18:56 +01:00
JĂłzef Kucia
49e55dd639 vkd3d-shader: Implement DXBC checksum for root signatures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-20 19:41:44 +01:00
JĂłzef Kucia
3795add878 vkd3d-shader: Import MD5 implementation from Wine.
With style changes.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-20 19:41:41 +01:00
JĂłzef Kucia
128dadaac1 tests: Skip stencil shader resource view tests on Windows AMD drivers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:18 +01:00
JĂłzef Kucia
6cd06fa874 tests: Detect device vendor only on Windows.
For running cross-compiled tests in Wine.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:17 +01:00
JĂłzef Kucia
ce39464192 tests: Use vkd3d_test_set_context() in more tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:16 +01:00
JĂłzef Kucia
5bb045c8f9 vkd3d: Validate RTV format for inactive render targets in pipeline state desc.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:14 +01:00
JĂłzef Kucia
46034d4069 tests: Add test for dual source blending.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:13 +01:00
JĂłzef Kucia
c93d9bc714 vkd3d: Implement dual source blending.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:11 +01:00
JĂłzef Kucia
5b0ed414a1 vkd3d-shader: Add support for dual source blending.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-17 19:17:10 +01:00
JĂłzef Kucia
4e66897a1e vkd3d-shader: Avoid BYTE.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:28:16 +01:00
JĂłzef Kucia
a7aaa09eb3 vkd3d-shader: Avoid BOOL.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:28:16 +01:00
JĂłzef Kucia
6bcee19960 vkd3d: Return E_FAIL for invalid shader bytecode.
On Windows invalid shader bytecode leads to a crash, E_FAIL or
E_OUTOFMEMORY error.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:28:16 +01:00
JĂłzef Kucia
e9b33183cf tests: Add test for invalid shader bytecode.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:28:16 +01:00
JĂłzef Kucia
56f79913f6 tests: Skip "ps_movc" on Windows AMD drivers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:08:54 +01:00
JĂłzef Kucia
0be448b4fd tests: Fix --warp command line option.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:08:52 +01:00
JĂłzef Kucia
f359108658 tests: Detect when WARP is used.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:08:50 +01:00
JĂłzef Kucia
c090602e0a tests: Add names for shader instruction tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:08:49 +01:00
JĂłzef Kucia
d0f6d8131a tests: Introduce vkd3d_test_set_context().
Useful for table-based tests.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:08:47 +01:00
JĂłzef Kucia
b868b5a258 vkd3d: Avoid out-of-bounds array access in d3d12_device_CopyDescriptors().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-12 17:08:42 +01:00
JĂłzef Kucia
e62e1dadb5 tests: Introduce enable_d3d12_debug_layer() helper function.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:31 +01:00
JĂłzef Kucia
96f9b1b771 tests: Introduce parse_args() helper function.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:30 +01:00
JĂłzef Kucia
03eba4b0ad tests: Move invalid usage tests to separate unit.
Ideally, tests should not produce Vulkan validation errors. Move tests
which explicitly test invalid usage of D3D12 and are expected to produce
validation errors to a separate file.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:28 +01:00
JĂłzef Kucia
55587f30b7 tests: Move some helpers to d3d12_crosstest.h.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:27 +01:00
JĂłzef Kucia
8477606e1c tests: Move more helpers to d3d12_test_utils.h.
We should move the implementation to a C file.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:25 +01:00
JĂłzef Kucia
fa997de83d tests: Introduce common header for d3d12 crosstests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:24 +01:00
JĂłzef Kucia
599ff571f9 tests: Add test for indirect indexed draw commands.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:22 +01:00
JĂłzef Kucia
9eaa641376 vkd3d: Validate that command signature contains exactly one dispatch/draw command.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:20 +01:00
JĂłzef Kucia
c15ab6a51c vkd3d: Add asserts for indirect draw arguments.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:19 +01:00
JĂłzef Kucia
3e8d0e7a6a vkd3d: Get rid of asserts from d3d12_device_CopyDescriptors().
Do not require that source range sizes match destination range sizes.
It works on Windows even though D3D12 validation layers throw errors
about size mismatches.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-04 18:50:16 +01:00
JĂłzef Kucia
6851bc6667 vkd3d: Implement D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-03 22:22:49 +01:00
JĂłzef Kucia
a1ad45be69 vkd3d: Add FIXME() for unsupported strip cut values.
In Vulkan, the strip cut value is derived from the current index buffer
format. We could recompile the pipeline to handle more cases.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-03 22:22:48 +01:00
JĂłzef Kucia
c74074d93f tests: Add test for primitive restart.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-03 22:22:47 +01:00
JĂłzef Kucia
afb648d19d vkd3d: Implement primitive restart.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-03 22:22:45 +01:00
JĂłzef Kucia
8553696c2d tests: Add more flexible todo() implementation.
Based on wine/test.h.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-03 22:22:44 +01:00
JĂłzef Kucia
b4d2306b9b tests: Print adapter info on Windows.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-12-03 22:22:42 +01:00
JĂłzef Kucia
09f667ce4e vkd3d: Add FIXME() for invalid depth/stencil formats.
Needs more tests.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-29 22:05:24 +01:00
JĂłzef Kucia
1822de82c1 tests: Rename vkd3d_d3d12_test.h to d3d12_test_utils.h.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-29 22:05:21 +01:00
JĂłzef Kucia
93d2bb2d5d tests: Insert UAV barrier between ClearUAV() commands.
Fixes a bunch of test failures on RADV.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-29 22:05:19 +01:00
JĂłzef Kucia
e91bfb882d vkd3d: Disable depth/stencil tests for DXGI_FORMAT_UNKNOWN.
Needs more tests.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-29 22:05:17 +01:00
JĂłzef Kucia
1e2070837b vkd3d: Skip uninitialized DSV and RTV descriptors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-27 21:23:46 +01:00
JĂłzef Kucia
4486736e87 vkd3d: Improve invalid format messages.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-27 21:23:45 +01:00
JĂłzef Kucia
4a796a5644 vkd3d: Disallow creating shader visible RTV/DSV descriptor heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-27 21:23:41 +01:00
JĂłzef Kucia
fedefca2ab tests: Implement readback for multisample textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-27 21:23:26 +01:00
JĂłzef Kucia
404a459139 tests: Add more test for clearing array textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-27 21:23:24 +01:00
JĂłzef Kucia
ed4f8749f2 tests: Add test for multisample array textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-26 20:25:36 +01:00
JĂłzef Kucia
2c5a8cda7a vkd3d-shader: Translate sample_info instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-26 20:25:34 +01:00
JĂłzef Kucia
46c6bc6171 vkd3d: Add support for multisample texture views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-26 20:25:33 +01:00
JĂłzef Kucia
23361bbcb2 vkd3d-shader: Add support for 2D MS arrays.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-26 20:25:31 +01:00
JĂłzef Kucia
00afe75457 vkd3d: Do not set VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT for multisample textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-26 20:25:30 +01:00
JĂłzef Kucia
a5646b3aff vkd3d: Use at least D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT for textures.
It's the smallest alignment for textures supported by D3D12. Vulkan
implementations may return lower values.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-16 18:41:45 +01:00
JĂłzef Kucia
06c3d1779e vkd3d: Use VkDeviceSize for buffer view offset and range (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-15 18:33:39 +01:00
JĂłzef Kucia
7decb65f54 vkd3d-shader: Implement shader visibility for UAV counters.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-15 18:33:37 +01:00
JĂłzef Kucia
08ff23a0b1 tests: Add test for depth rendering without pixel shader.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-15 18:33:36 +01:00
JĂłzef Kucia
a39d2aa3a8 vkd3d: Allow depth rendering without pixel shader.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-15 18:33:34 +01:00
JĂłzef Kucia
fa0f6f584a vkd3d: Enable rasterization discard if possible.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-15 18:33:33 +01:00
JĂłzef Kucia
8ac9b120fe vkd3d-shader: Avoid SIZE_T.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:43 +01:00
JĂłzef Kucia
9058193365 tests: Add test for trying to map external vkd3d resource.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:42 +01:00
JĂłzef Kucia
11a1a9289e vkd3d: Initialize all members of d3d12_resource for external vkd3d resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:41 +01:00
JĂłzef Kucia
b4c36e389a vkd3d: Do not modify pointer on mapping failures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:40 +01:00
JĂłzef Kucia
bebda782c8 tests: Add more tests for mapping resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:39 +01:00
JĂłzef Kucia
361e5f6274 vkd3d: Validate sub-resource index in d3d12_resource_Unmap().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:37 +01:00
JĂłzef Kucia
91c11eed03 vkd3d: Validate sub-resource index in d3d12_resource_Map().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:36 +01:00
JĂłzef Kucia
dc36ab41e3 vkd3d: Assign "heap" and "heap_offset" in more appropriate places.
Initializes all fields of struct d3d12_resource in
d3d12_resource_init().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-13 20:49:34 +01:00
JĂłzef Kucia
b8a665e229 vkd3d: Validate heap type for render target and unordered access buffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-12 10:31:27 +01:00
JĂłzef Kucia
d539adaff8 vkd3d: Translate pthread error numbers to HRESULTs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-12 10:31:25 +01:00
JĂłzef Kucia
f3ddbe0342 tests: Add test for mapping placed resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-12 10:31:24 +01:00
JĂłzef Kucia
374d56fc8e tests: Use create_pipeline_state() in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-12 10:31:23 +01:00
JĂłzef Kucia
4ff26ef3c4 vkd3d: Implement Map() for placed resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-12 10:31:21 +01:00
JĂłzef Kucia
bf227d4a28 include: Avoid bitfields in public structures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 19:07:39 +01:00
JĂłzef Kucia
41ca2469b2 include: Add STATIC_ASSERT() macro.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 19:07:37 +01:00
JĂłzef Kucia
be462a932f include: Use angle-bracket includes consistently.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 19:07:36 +01:00
JĂłzef Kucia
f732501a14 include: Move vkd3d_result to common header.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 19:07:34 +01:00
JĂłzef Kucia
4d149b6f89 vkd3d: Handle VKD3D_ERROR_INVALID_SHADER in hresult_from_vkd3d_result().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-08 19:07:32 +01:00
JĂłzef Kucia
c2e0bf1244 build: Build libvkd3d-shader as public library.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-02 11:19:00 +01:00
JĂłzef Kucia
00a0958526 vkd3d-shader: Fix swizzling for scalars.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-02 11:18:58 +01:00
JĂłzef Kucia
24320fa04f tests: Add test for shader input/output components.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-02 11:18:57 +01:00
JĂłzef Kucia
887401ed27 tests: Introduce check_sub_resource_uvec4().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-02 11:18:52 +01:00
JĂłzef Kucia
7338ba0337 vkd3d-shader: Try harder to avoid using private variables for inputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-31 19:15:19 +01:00
JĂłzef Kucia
2ace6f204d vkd3d-shader: Use vkd3d_dxbc_compiler_emit_swizzle_ext() in vkd3d_dxbc_compiler_emit_input().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-31 19:15:17 +01:00
JĂłzef Kucia
11a65da62a vkd3d-shader: Check more accurately if swizzle is required.
Eliminates redundant OpVectorShuffle instructions.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-31 19:15:15 +01:00
JĂłzef Kucia
f97b745ae7 vkd3d-shader: Add structure type fields to public API structures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:59 +01:00
JĂłzef Kucia
2f15b30e30 vkd3d-shader: Require shader signature elements for shader inputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:57 +01:00
JĂłzef Kucia
6b9c589795 vkd3d-shader: Implement vkd3d_write_mask_component_count() on top of vkd3d_popcount().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:55 +01:00
JĂłzef Kucia
78a09d37d2 vkd3d-shader: Add support for stores to scalar variables.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:54 +01:00
JĂłzef Kucia
ebf09feb82 vkd3d-shader: Simplify vkd3d_dxbc_compiler_emit_load_scalar().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:52 +01:00
JĂłzef Kucia
d2e5ced1ac vkd3d-shader: Use typed shader outputs directly.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:50 +01:00
JĂłzef Kucia
7b58e7cb23 vkd3d-shader: Rename "output setup" function to "shader epilogue".
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:21:48 +01:00
JĂłzef Kucia
34f61154f7 vkd3d-shader: Avoid uint32_t in public interface.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 17:08:47 +01:00
JĂłzef Kucia
0f0af935a6 vkd3d-shader: Introduce VKD3D_SHADER_VISIBILITY_COMPUTE.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 17:08:45 +01:00
JĂłzef Kucia
ae84b5210e vkd3d-shader: Introduce vkd3d_shader_binding_flags.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 17:08:43 +01:00
JĂłzef Kucia
feeb2b49df vkd3d-shader: Use typed shader inputs directly.
... instead of copying them to a private floating-point variable.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 17:08:40 +01:00
JĂłzef Kucia
93676365b7 build: Check VK_HEADER_VERSION.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 17:08:38 +01:00
JĂłzef Kucia
a08dadde32 vkd3d: Avoid division by zero in GetResourceAllocationInfo() (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-29 17:08:30 +01:00
JĂłzef Kucia
090177b95f vkd3d: Accept 0xffffffff as cube count for SRVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 19:47:16 +02:00
JĂłzef Kucia
bec3430d88 vkd3d-shader: Propagate errors from vkd3d_dxbc_compiler_emit_control_flow_instruction().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 19:47:14 +02:00
JĂłzef Kucia
b909a5fe04 vkd3d-shader: Add asserts() to vkd3d_dxbc_compiler_emit_control_flow_instruction().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 19:47:13 +02:00
JĂłzef Kucia
85521c2f82 tests: Annotate another fall-through switch case (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-26 19:47:10 +02:00
JĂłzef Kucia
0cab9e8c9f tests: Add test for instance data step rate.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 14:54:54 +02:00
JĂłzef Kucia
ebde6bd229 vkd3d: Implement instance data step rate.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 14:54:52 +02:00
JĂłzef Kucia
b2dc48c611 vkd3d: Trace VK_EXT_vertex_attribute_divisor properties.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 14:54:50 +02:00
JĂłzef Kucia
db27883740 vkd3d: Trace VK_EXT_vertex_attribute_divisor features.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 14:54:48 +02:00
JĂłzef Kucia
2e8b3863f3 vkd3d: Do not trace features for all available physical devices.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 14:54:45 +02:00
JĂłzef Kucia
5e6b35af8e vkd3d: Enable VK_EXT_vertex_attribute_divisor.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 14:53:26 +02:00
JĂłzef Kucia
154c48000d tests: Add test for multisample rendering.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 13:58:38 +02:00
JĂłzef Kucia
6d4e661336 vkd3d: Implement d3d12_command_list_ResolveSubresource().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 13:58:36 +02:00
JĂłzef Kucia
5e0094f617 vkd3d: Set the numer of samples for clears.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 13:58:34 +02:00
JĂłzef Kucia
5d28817164 vkd3d: Set the numer of samples for graphics pipelines.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-25 13:58:32 +02:00
JĂłzef Kucia
8f07e14711 vkd3d: Store compiled Vulkan pipelines in d3d12_graphics_pipeline_state.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-24 17:00:51 +02:00
JĂłzef Kucia
cfef906696 vkd3d: Make pipeline state responsible for creating Vulkan pipelines.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-24 17:00:50 +02:00
JĂłzef Kucia
fb7b1c9880 tests: Add option to select adapter.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-24 17:00:49 +02:00
JĂłzef Kucia
12707ff160 tests: Annotate fall-through switch case (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-24 17:00:48 +02:00
JĂłzef Kucia
a96cfa32a1 demos: Check return value of ID3D12Fence_SetEventOnCompletion() (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-24 17:00:47 +02:00
JĂłzef Kucia
049d21ad7a vkd3d-shader: Fix typo in vkd3d_dxbc_compiler_have_combined_sampler().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-24 17:00:45 +02:00
JĂłzef Kucia
94497f31a0 vkd3d-shader: Implement SV_ViewportArrayIndex.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:29 +02:00
JĂłzef Kucia
2f5b718205 vkd3d-shader: Try to always use combined samplers for t# registers.
For bufinfo and resinfo.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:27 +02:00
JĂłzef Kucia
11de335abd vkd3d-shader: Add support for combined samplers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:25 +02:00
JĂłzef Kucia
063f0f057a vkd3d-shader: Scan sampler comparison mode.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:22 +02:00
JĂłzef Kucia
781c5ed7c9 vkd3d-shader: Merge prepare_image() functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:21 +02:00
JĂłzef Kucia
f242922587 vkd3d-shader: Generalize helper for emitting descriptor binding decorations.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:19 +02:00
JĂłzef Kucia
3efa365b5e vkd3d-shader: Remove sampler_id from struct vkd3d_shader_image.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-22 10:57:15 +02:00
JĂłzef Kucia
299f126f7a vkd3d-shader: Simplify DepthReplacing execution mode handling.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-19 21:43:04 +02:00
JĂłzef Kucia
c81e28c03a vkd3d-shader: Implement conservative depth output.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-19 21:43:02 +02:00
JĂłzef Kucia
dac94fb58e vkd3d-shader: Translate bufinfo instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-19 21:43:00 +02:00
JĂłzef Kucia
dd26e59043 vkd3d: Avoid heap memory allocations while updating descriptor tables.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-19 21:42:58 +02:00
Henri Verbeet
78c203b395 include: Avoid _t-suffixes.
The _t-suffix is reserved by POSIX.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:25 +02:00
JĂłzef Kucia
6639f618af vkd3d-shader: Implement early depth/stencil tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:22 +02:00
JĂłzef Kucia
3957242ea7 vkd3d-shader: Translate ld2dms instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:20 +02:00
JĂłzef Kucia
123f3ed387 vkd3d-shader: Fix resinfo for multisample textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:20 +02:00
JĂłzef Kucia
55abf3d6d4 vkd3d-shader: Fix f32tof16 instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:20 +02:00
JĂłzef Kucia
dc9fdf5d31 vkd3d-shader: Fix f16tof32 instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:06 +02:00
JĂłzef Kucia
acf8ae9673 vkd3d-shader: Fix bitfield instructions.
Avoid overwriting registers before all results are computed.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 19:49:03 +02:00
JĂłzef Kucia
170bb60baa vkd3d-shader: Add support for OpenGL atomic counters.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:44 +02:00
JĂłzef Kucia
08183841eb vkd3d-shader: Translate sample_b instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:43 +02:00
JĂłzef Kucia
907d137a4b vkd3d-shader: Translate sample_d instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:41 +02:00
JĂłzef Kucia
5a2dc97a5a vkd3d: Add asserts() for root descriptor indices.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:40 +02:00
JĂłzef Kucia
35ead5825d vkd3d: Use vk_write_descriptor_set_from_root_descriptor() in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:39 +02:00
JĂłzef Kucia
86b4c8c9de vkd3d-shader: Constify vkd3d_dxbc_compiler pointers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:38 +02:00
JĂłzef Kucia
8e46f5ebf6 vkd3d: Remove "unhandled next" warnings.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-18 00:59:36 +02:00
JĂłzef Kucia
2f43965c2c vkd3d-shader: Add OpenGL SPIR-V target environment.
More changes are needed for full support.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:36 +02:00
JĂłzef Kucia
970aafaf55 vkd3d-shader: Recognize enableMinimumPrecision global flag.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:34 +02:00
JĂłzef Kucia
869602cbea vkd3d: Avoid using VkCopyDescriptorSet.
VkCopyDescriptorSet may result in the CPU reading GPU memory then
writing GPU memory.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:32 +02:00
JĂłzef Kucia
cf23d71d5d vkd3d: Avoid copying root descriptors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:31 +02:00
JĂłzef Kucia
604fd99637 vkd3d: Prepare descriptors once for all descriptor tables.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:29 +02:00
JĂłzef Kucia
3b0d20c474 vkd3d: Simplify d3d12_command_list_set_root_descriptor().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:27 +02:00
JĂłzef Kucia
7652a6e62c vkd3d: Simplify d3d12_command_list_set_root_cbv().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-11 18:37:25 +02:00
JĂłzef Kucia
e47a1320ca tests: Add test for creating tons of command queues.
Mainly to show that those are not strictly linked to HW queues.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
07d115b1d4 vkd3d: Fix race condition while dumping DXBC shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
c296cbe30b vkd3d: Implement D3D12_FEATURE_SHADER_MODEL.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
74dfb3fcc2 tests: Clear RTV outside pipeline statistics query.
On RADV additional vertices generated by clears are also counted.

The Vulkan spec allows this behavior:

"Rendering operations such as clears, MSAA resolves, attachment
load/store operations, and blits may count towards the results of
queries."

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
fa6304ee04 vkd3d: Ignore D3D_PRIMITIVE_TOPOLOGY_UNDEFINED.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
39886b2386 vkd3d: Downgrade FIXME() in d3d12_command_list_IASetIndexBuffer().
An app calls IASetIndexBuffer() with DXGI_FORMAT_UNKNOWN.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
1f4e6dc603 vkd3d-shader: Implement SV_SampleIndex.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-08 22:25:04 +02:00
JĂłzef Kucia
ecda316ef5 Release 1.1.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-05 13:48:18 -05:00
JĂłzef Kucia
44fb80f84c build: Bump libtool version numbers for shared libraries.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-02 19:36:37 -07:00
JĂłzef Kucia
4068243279 vkd3d-shader: Bump SPIR-V generator version.
In preparation for the next release.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-02 19:36:32 -07:00
JĂłzef Kucia
f7bb28dc2b vkd3d: Do not enable shaderTessellationAndGeometryPointSize feature.
We don't want to write PointSize in tessellation and geometry shaders.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-01 18:36:43 -07:00
JĂłzef Kucia
8995c681d5 tests: Fix unsupported formats tests on WARP.
A recent version of WARP supports B8G8R8A8 UAVs even on
D3D_FEATURE_LEVEL_11_0.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-01 18:36:40 -07:00
JĂłzef Kucia
4595f71afd tests: Add simple test for creating placed resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-01 18:36:37 -07:00
JĂłzef Kucia
0463588591 vkd3d: Allocate memory for resource if heap memory cannot be used.
Anvil has additional restrictions for index and vertex buffers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-01 18:36:34 -07:00
JĂłzef Kucia
296833e5ab tests: Add tests for atomic_iadd on TGSM.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-01 18:36:30 -07:00
JĂłzef Kucia
f1c967ab38 vkd3d: Fix potential memory leak in vkd3d_create_vk_device().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:57:34 +02:00
JĂłzef Kucia
6f73364634 vkd3d: Add requirements for maxPerStageDescriptorUniformBuffers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:33:07 +02:00
JĂłzef Kucia
1cf49c2e0e include: Synchronize d3d12.idl with Wine.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:33:05 +02:00
JĂłzef Kucia
d18d700750 tests: Add test for blend factor.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:33:04 +02:00
JĂłzef Kucia
03b9f4ff5a vkd3d: Implement d3d12_command_list_OMSetBlendFactor().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:33:03 +02:00
JĂłzef Kucia
3b9657cd6a tests: Add test for clearing 2D array DSVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:33:01 +02:00
JĂłzef Kucia
fe3ad21949 vkd3d: Fix 2D array depth stencil views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:33:00 +02:00
JĂłzef Kucia
d11b9618e0 vkd3d-shader: Use TRACE() for skipped DXBC chunks.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 20:32:58 +02:00
JĂłzef Kucia
34ceaecb50 tests: Add test for initial pipeline state.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:47 +02:00
JĂłzef Kucia
42b01a7189 tests: Add test for gather4_c shader instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:46 +02:00
JĂłzef Kucia
a4cd1b255f vkd3d-shader: Translate gather4_po_c instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:44 +02:00
JĂłzef Kucia
b66d4ed521 vkd3d-shader: Translate retc instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:43 +02:00
JĂłzef Kucia
99939f626b vkd3d-shader: Use vkd3d_dxbc_compiler_emit_conditional_branch() in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:41 +02:00
JĂłzef Kucia
2e65b78102 vkd3d: Fix shader stage bits for pipeline barriers.
The Vulkan spec says:

"Any pipeline stage included in srcStageMask or dstStageMask must be
supported by the capabilities of the queue family..."

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:39 +02:00
JĂłzef Kucia
82fdd800e2 vkd3d: Pass VkQueueFamilyProperties to vkd3d_queue_create().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:37 +02:00
JĂłzef Kucia
873a26a061 vkd3d: Simplify error handling in vkd3d_create_vk_device().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-28 01:12:35 +02:00
JĂłzef Kucia
8378ec758d tests: Add test for GetResourceAllocationInfo().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:27:32 +02:00
JĂłzef Kucia
957e76dddc tests: Add test for suballocation of small textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:27:31 +02:00
JĂłzef Kucia
b7ed0df1f4 vkd3d: Add WARN() for "out of device memory" errors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:27:29 +02:00
JĂłzef Kucia
413c8562b9 vkd3d: Use heap memory for placed resources.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:27:22 +02:00
JĂłzef Kucia
bd0ce54f79 vkd3d: Allocate device memory for heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:26:33 +02:00
JĂłzef Kucia
0014c4fbf9 vkd3d: Implement d3d12_device_GetResourceAllocationInfo() for textures.
In Vulkan, we have to create an image to get its memory requirements.
It would be very helpful if we could get the memory requirements without
creating a resource.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:26:24 +02:00
JĂłzef Kucia
ded908c515 vkd3d: Pass D3D12_RESOURCE_DESC and VkImage to vkd3d_create_image().
For consistency with vkd3d_create_buffer().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:26:21 +02:00
JĂłzef Kucia
99e239ad50 vkd3d: Implement d3d12_device_GetResourceAllocationInfo() for buffers.
In Direct3D12, D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT is always used
for buffers. We could try to use a lower alignment when supported by
the Vulkan implementation, but there is no way to get buffer memory
requirements without creating a buffer in Vulkan.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:26:18 +02:00
JĂłzef Kucia
e93fed2c93 vkd3d: Add support for fake placed resources.
Placed resources are not allocated from a given heap yet.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-26 19:26:15 +02:00
JĂłzef Kucia
5319cc2420 vkd3d-shader: Translate gather4_po instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:35 +02:00
JĂłzef Kucia
a553eb1afe vkd3d-shader: Translate gather4_c instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:31 +02:00
JĂłzef Kucia
01ef2ceced vkd3d-shader: Find innermost loops for breakc instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:26 +02:00
JĂłzef Kucia
c547521022 tests: Add tests for continue shader instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:22 +02:00
JĂłzef Kucia
9781b15531 vkd3d-shader: Translate continuec instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:16 +02:00
JĂłzef Kucia
79339d153a vkd3d-shader: Translate continue instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:12 +02:00
JĂłzef Kucia
a970f71581 vkd3d-shader: Translate ineg instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:10 +02:00
JĂłzef Kucia
62628dd90d vkd3d-shader: Promote immediate scalar constants to vectors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-24 19:20:07 +02:00
Henri Verbeet
5c9fa15d4d build: Fix the "missing widl" message.
I.e., print the name of the target instead of the prerequisite.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-14 19:17:53 +02:00
JĂłzef Kucia
be4a775c07 vkd3d: Do not hardcode aspect mask in d3d12_command_list_ClearUnorderedAccessViewUint().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-14 19:17:50 +02:00
JĂłzef Kucia
865430d2b1 tests: Clear command list before uint tests in test_shader_instructions().
Avoids referencing a destroyed render target in the command list.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:27 +02:00
JĂłzef Kucia
ee0c715e7d tests: Add missing resource barrier to test_texture().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:25 +02:00
JĂłzef Kucia
b9d7569b8c vkd3d: Partially implement clears for texture UAVs.
In the long term, we may want to use shaders to clear UAVs.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:23 +02:00
JĂłzef Kucia
0e8fc6e957 vkd3d: Fix leaks if d3d12_device_init_pipeline_cache() fails.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:22 +02:00
JĂłzef Kucia
abd775fb83 tests: Add test for ld instruction with texel offsets.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:20 +02:00
JĂłzef Kucia
ae5471b978 vkd3d-shader: Implement texel offset for sample instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:18 +02:00
JĂłzef Kucia
0b278a7773 vkd3d-shader: Implement texel offsets for ld instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:17 +02:00
JĂłzef Kucia
6296758849 vkd3d-shader: Add support for more interpolation modifiers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-13 19:26:15 +02:00
JĂłzef Kucia
11c00a157c vkd3d: Implement simple pipeline cache.
Ideally, we would like to introduce a Vulkan extension to make vertex
buffer strides and primitive topology dynamic in Vulkan.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:21 +02:00
JĂłzef Kucia
e7eb9ca936 vkd3d: Simplify d3d12_device_init().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:19 +02:00
JĂłzef Kucia
f3e48a9192 vkd3d: Reset command list state in d3d12_command_list_Reset().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:16 +02:00
JĂłzef Kucia
9fe06825f8 vkd3d: Fix initial pipeline state.
d3d12_command_list_begin_command_buffer() was using the previous initial
pipeline state when called from d3d12_command_list_Reset().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:14 +02:00
JĂłzef Kucia
605cb12eca vkd3d: Set pointer to NULL if heap creation fails.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:12 +02:00
JĂłzef Kucia
150d1f0eb8 vkd3d: Set pointer to NULL if committed resource creation fails.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:08 +02:00
JĂłzef Kucia
cb24709980 vkd3d: Factor out d3d12_command_list_create_graphics_pipeline().
In preparation for pipeline cache.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:04 +02:00
JĂłzef Kucia
b0bfe90c9e vkd3d: Reuse descriptor pools.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:16:02 +02:00
JĂłzef Kucia
7482794b0f vkd3d: Use bigger descriptor pools.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:15:55 +02:00
JĂłzef Kucia
8ce0d2e72e vkd3d: Factor out d3d12_resource_init().
In preparation for placed resources.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:15:52 +02:00
JĂłzef Kucia
3dd8683ec5 vkd3d: Pass VkImage to vkd3d_allocate_image_memory().
For consistency with vkd3d_allocate_buffer_memory().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-12 23:15:48 +02:00
JĂłzef Kucia
0a499012ad tests: Add test for combined clip and cull distances.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-05 17:18:28 +02:00
JĂłzef Kucia
ee6fcba034 tests: Add test for clip distance.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-05 17:18:27 +02:00
JĂłzef Kucia
5398d65d3e vkd3d-shader: Correctly handle multiple clip/cull distance output registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-05 17:18:25 +02:00
JĂłzef Kucia
e425b86610 vkd3d-shader: Implement cull distances.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-05 17:18:24 +02:00
JĂłzef Kucia
814cd31522 vkd3d-shader: Implement clip distances.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-05 17:18:22 +02:00
JĂłzef Kucia
060968fad2 vkd3d-shader: Add get_type_id() helper functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-09-05 17:18:20 +02:00
JĂłzef Kucia
1c7df3f50a vkd3d: Return bool from vkd3d_create_texture_view().
For consistency with vkd3d_create_buffer_view().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-30 20:34:49 +02:00
JĂłzef Kucia
d58c65aeeb vkd3d: Create vkd3d_views in vkd3d_create_buffer_view().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-30 20:34:47 +02:00
JĂłzef Kucia
3e33fb3212 vkd3d: Use vkd3d_create_vk_buffer_view() to create counter resource views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-30 20:34:45 +02:00
JĂłzef Kucia
c75f9ee39d vkd3d: Export vkd3d_get_dxgi_format() function.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:48:45 +02:00
JĂłzef Kucia
20c153875c vkd3d: Add few more formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:48:43 +02:00
JĂłzef Kucia
3b68c87bd0 vkd3d: Create vkd3d_views in vkd3d_create_texture_view().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:48:42 +02:00
JĂłzef Kucia
a0d0607cd0 tests: Add test for clearing 3D textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:48:39 +02:00
JĂłzef Kucia
6408094e7c vkd3d: Add support for 2D array texture views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:48:39 +02:00
JĂłzef Kucia
ae8c344fa4 vkd3d: Add support for 3D texture views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:47:37 +02:00
JĂłzef Kucia
4a49be6c63 vkd3d: Add support for default 3D texture views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:47:35 +02:00
JĂłzef Kucia
c5e129cf67 vkd3d: Add support for default 1D texture views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:47:33 +02:00
JĂłzef Kucia
72f6e85946 vkd3d: Introduce vkd3d_texture_view_desc structure.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-29 14:47:31 +02:00
JĂłzef Kucia
bca28c79ec vkd3d-shader: Downgrade FIXME() about unhandled instruction modifiers to WARN().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-27 23:17:42 +02:00
JĂłzef Kucia
b9d42358a4 tests: Implement readback for 3D textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-27 23:17:39 +02:00
JĂłzef Kucia
c4c3634bc4 vkd3d: Rename vkd3d_queue_gpu_fence() to vkd3d_enqueue_gpu_fence().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-27 23:17:37 +02:00
JĂłzef Kucia
e43141b68e vkd3d: Add FIXME() for ignored SampleDesc.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-27 23:17:34 +02:00
JĂłzef Kucia
98b3487b3c tests: Use single ResolveQueryData() call for multiple queries.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:33:01 +02:00
JĂłzef Kucia
bdc848b27a vkd3d: Validate D3D12_BLEND_DESC.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:56 +02:00
JĂłzef Kucia
6e029296ec tests: Add test for creating graphics pipelines.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:54 +02:00
JĂłzef Kucia
d26300edd9 vkd3d: Do not store VkPipelineInputAssemblyStateCreateInfo in d3d12_command_list.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:52 +02:00
JĂłzef Kucia
acc658a912 vkd3d: Avoid passing vkd3d_vk_device_procs to helper functions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:50 +02:00
JĂłzef Kucia
4cfd3a425f vkd3d: Try to call vkCmdCopyQueryPoolResults() for multiple queries.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:48 +02:00
JĂłzef Kucia
71e633cb1b vkd3d: Simplify d3d12_command_list_IASetVertexBuffers().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:46 +02:00
JĂłzef Kucia
80dbf329ca vkd3d: Try to not invalidate current pipeline in IASetVertexBuffers().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:43 +02:00
JĂłzef Kucia
ca91aaf9b9 vkd3d: Add support for DXGI_FORMAT_R8G8_SNORM.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-23 20:32:40 +02:00
JĂłzef Kucia
ccdb692741 vkd3d-utils: Detect surface extensions at runtime.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:05:35 +02:00
Chip Davis
dc2dbffc2c build: Add support for MoltenVK.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:05:33 +02:00
Chip Davis
61697e092a build: Detect soname of libvulkan at configure time.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:04:48 +02:00
JĂłzef Kucia
94f85114c5 build: Make libxcb optional.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:04:34 +02:00
JĂłzef Kucia
98f8e12ae6 tests: Add test for CPU descriptors lifetime.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:04:00 +02:00
JĂłzef Kucia
d074fab10b vkd3d: Reference count CPU descriptors.
We have to keep all image views referenced by all used VkFramebuffers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:03:56 +02:00
JĂłzef Kucia
3bf9d1bc67 tests: Test vertex buffer views with NULL buffer location.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:03:46 +02:00
JĂłzef Kucia
90617d967d vkd3d: Allow IASetVertexBuffers() with NULL buffer locations.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-21 19:03:40 +02:00
JĂłzef Kucia
99a2daedb1 vkd3d-shader: Strip debug info after generating all code.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-20 09:54:41 +02:00
JĂłzef Kucia
82e2e4d1a6 tests: Fix mixed enums.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-20 09:54:37 +02:00
JĂłzef Kucia
d175afad78 vkd3d: Add support for optional instance extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-20 09:54:32 +02:00
JĂłzef Kucia
8b61583011 tests: Do not require libxcb and libx11 headers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-20 09:54:19 +02:00
JĂłzef Kucia
b5d2374ff3 build: Add a line about demos to the configure summary.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-20 09:54:09 +02:00
JĂłzef Kucia
d9858b63b9 build: Check how many arguments pthread_setname_np() takes.
Based on a patch by Chip Davis.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:03:44 +02:00
JĂłzef Kucia
aa12c0a751 build: Disable demos by default.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:43 +02:00
JĂłzef Kucia
c9380f8f7f vkd3d: Try to keep current render pass as long as possible.
A lot of Vulkan commands must be recorded outside a render pass.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:33 +02:00
JĂłzef Kucia
ffebe4524d vkd3d: Avoid invalidating current framebuffer needlessly.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:30 +02:00
JĂłzef Kucia
35748f9228 vkd3d: Avoid invalidating graphics pipeline and framebuffer.
Do not invalidate the current graphics pipeline and the current
framebuffer when a compute pipeline is bound.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:28 +02:00
JĂłzef Kucia
b500207b79 vkd3d: Initialize all fields before calling d3d12_command_allocator_allocate_command_buffer().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:25 +02:00
JĂłzef Kucia
8b846b07e7 tests: Add test for draw with no descriptor bindings.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:23 +02:00
JĂłzef Kucia
ef999e1e2b vkd3d: Call vkCmdBindDescriptorSets() only with valid descriptor set.
If the current pipeline state doesn't need any descriptors it is
perfectly valid to not have a descriptor set.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:20 +02:00
JĂłzef Kucia
0488b24c99 vkd3d: Add few more formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:18 +02:00
JĂłzef Kucia
76f64b86de libs/vkd3d-shader: Require shader signature elements for shader outputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:15 +02:00
JĂłzef Kucia
f7a21ad982 vkd3d-compiler: Do not overallocate memory for shader code.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:12 +02:00
JĂłzef Kucia
98689bf33c libs/vkd3d: Add fall-through comment to vkd3d_select_memory_type().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:09 +02:00
JĂłzef Kucia
29f954be0a libs/vkd3d: Assert that queue is valid in vkd3d_queue_acquire().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:06 +02:00
JĂłzef Kucia
f0c27af357 libs/vkd3d: Fix return type of d3d12_root_signature_info_count_descriptors() (Coverity).
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:02:03 +02:00
Chip Davis
da615f05ba build: Use XCB_CFLAGS on libvkd3d-utils.
We need this to pull in <xcb/xcb.h>.

Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:01:33 +02:00
Chip Davis
09bf24d910 build: Make the output a little less verbose when V=0.
Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:01:29 +02:00
Chip Davis
923ec78c01 build: Make the sed(1) command more portable.
BSD sed(1) requires an argument after -i giving the suffix to put on the
backup it makes. Also, the regular expression given doesn't seem to work
for me. This command should work everywhere.

Signed-off-by: Chip Davis <cdavis@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-16 11:01:25 +02:00
JĂłzef Kucia
185c0b412d tests: Add test for incompletely initialized pixel shader outputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:31:15 +02:00
JĂłzef Kucia
da8eb496cf libs/vkd3d-shader: Zero-initialize unused shader output components.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:31:13 +02:00
JĂłzef Kucia
bde5dafe5b libs/vkd3d-shader: Factor out vkd3d_dxbc_compiler_emit_vector_shuffle().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:31:10 +02:00
JĂłzef Kucia
410e105ac5 libs/vkd3d-shader: Determine shader output component count based on shader signature.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:31:08 +02:00
JĂłzef Kucia
07ffccd186 libs/vkd3d-shader: Fix vkd3d_find_signature_element_for_reg().
The exact match of write masks between a shader signature and
dcl_input/dcl_output instructions isn't required.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:31:05 +02:00
JĂłzef Kucia
1bb21f0ea0 tests: Add tests for indexable temporary registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:31:01 +02:00
JĂłzef Kucia
c54b148a2c libs/vkd3d-shader: Add support for indexable temporary registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:59 +02:00
JĂłzef Kucia
b707e36d56 libs/vkd3d-shader: Translate partial derivative instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:57 +02:00
JĂłzef Kucia
b3f28cbfde tests: Add test for sincos instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:51 +02:00
JĂłzef Kucia
b14bb73c5b libs/vkd3d-shader: Translate sincos instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:51 +02:00
JĂłzef Kucia
ae1f96cc1f tests: Add test for round_ne instruction.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:31 +02:00
JĂłzef Kucia
92f3d33e15 libs/vkd3d-shader: Translate round_ne instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:27 +02:00
JĂłzef Kucia
f883c26524 libs/vkd3d: Add support for more formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:23 +02:00
JĂłzef Kucia
2f0d43a75a tests: Add test for creating heaps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 12:30:15 +02:00
JĂłzef Kucia
d9d37d1563 libs/vkd3d: Implement d3d12_device_CreateHeap().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:47 +02:00
JĂłzef Kucia
cc47b37c1d libs/vkd3d: Factor out debug_ignored_node_mask().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:46 +02:00
JĂłzef Kucia
add556f0ee include: Add ID3D12Heap.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:44 +02:00
JĂłzef Kucia
a32648ade9 include: Add more alignment constants.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:42 +02:00
JĂłzef Kucia
a5a17c22f1 libs/vkd3d: Introduce d3d12_resource_validate_desc().
Share D3D12_RESOURCE_DESC validation code between
CreateCommittedResource() and GetCopyableFootprints().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:39 +02:00
JĂłzef Kucia
21f1489b88 tests: Add more tests for D3D12CreateDevice() with device set to NULL.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:37 +02:00
JĂłzef Kucia
8400832eea libs/vkd3d: Change return_interface() iface parameter type to void pointer.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-20 18:19:35 +02:00
JĂłzef Kucia
9ce53b74df libs/vkd3d: Return S_FALSE from D3D12CreateDevice() when device is NULL.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-19 16:51:08 +02:00
JĂłzef Kucia
72859f8898 libs/vkd3d: Support D3D12_SRV_DIMENSION_TEXTURE2D in d3d12_device_CreateShaderResourceView().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-19 16:51:06 +02:00
JĂłzef Kucia
b9a0907691 libs/vkd3d: Support D3D12_FEATURE_ROOT_SIGNATURE.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-19 16:51:04 +02:00
JĂłzef Kucia
6b4b2a35cc include: Add more definitions for D3D12 features.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-19 16:51:02 +02:00
JĂłzef Kucia
8d9d910374 include: Add missing D3D_PRIMITIVE_TOPOLOGY enum values.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:40 +02:00
JĂłzef Kucia
b7d2278f57 libs/vkd3d: Validate PrimitiveTopologyType for PSO with tessellation shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:39 +02:00
JĂłzef Kucia
7892a1e938 libs/vkd3d: Return E_INVALIDARG for invalid pipeline state desc.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:37 +02:00
JĂłzef Kucia
d266a5f7d0 libs/vkd3d: Process shader stages according to pipeline order.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:35 +02:00
JĂłzef Kucia
6e8dae9d62 libs/vkd3d-shader: Add debug name for vDomainLocation register.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:33 +02:00
JĂłzef Kucia
054b1e41dd libs/vkd3d-shader: Treat vicp register as regular shader input.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:31 +02:00
JĂłzef Kucia
faa1118202 libs/vkd3d-shader: Enable arrayed inputs for all shader types.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 17:52:29 +02:00
JĂłzef Kucia
a0800de4ed tests: Get rid of create_texture().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-03 22:02:28 +02:00
JĂłzef Kucia
404e988ecd libs/vkd3d: Trace build version.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-27 22:43:49 +02:00
JĂłzef Kucia
89a2dc46dd libs/vkd3d: Set names for internal threads.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-27 22:43:48 +02:00
JĂłzef Kucia
cc8c0135a1 tests: Add test for cube maps.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-27 22:43:41 +02:00
JĂłzef Kucia
9b214c9ea7 libs/vkd3d: Implement cube shader resource views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-27 22:43:38 +02:00
JĂłzef Kucia
d15c9f79b5 libs/vkd3d-shader: Fix returning multiple components from dot product instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:58 +02:00
JĂłzef Kucia
0b9477493d tests: Add simple test for layered rendering.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:56 +02:00
JĂłzef Kucia
6df54305e6 libs/vkd3d: Add support for 2D array render target views.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:54 +02:00
JĂłzef Kucia
d14f9196f9 libs/vkd3d-shader: Do not emit output setup for ret in geometry shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:53 +02:00
JĂłzef Kucia
c21a8b56a0 libs/vkd3d-shader: Generate correct SPIR-V code for arrayed shader inputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:51 +02:00
JĂłzef Kucia
62b6d01c84 libs/vkd3d-shader: Pass register index to vkd3d_find_signature_element_for_reg().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:49 +02:00
JĂłzef Kucia
ab6b24ff65 libs/vkd3d-shader: Simplify vkd3d_dxbc_compiler_emit_input().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:47 +02:00
JĂłzef Kucia
5fe02889b1 libs/vkd3d-shader: Enable "geometry" capability for SpvBuiltInLayer.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:46 +02:00
JĂłzef Kucia
d74992a119 libs/vkd3d-shader: Do not force input register type to float4.
Produces slightly smaller and cleaner SPIR-V code.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:44 +02:00
JĂłzef Kucia
7dce007c53 libs/vkd3d-shader: Add initial support for typed registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:42 +02:00
JĂłzef Kucia
270c212265 libs/vkd3d-shader: Do not generate code in vkd3d_dxbc_compiler_get_register_info().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:40 +02:00
JĂłzef Kucia
6cdf3a9fa5 libs/vkd3d-shader: Split SPIR-V built-ins table into two tables.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:38 +02:00
JĂłzef Kucia
04b9d192df build: Remove portable/ directory.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-11 16:46:11 +02:00
JĂłzef Kucia
746d3d4e7e libs/vkd3d: Use VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT only if array size is >= 6.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-11 16:46:03 +02:00
JĂłzef Kucia
b084a4a153 demos: Get rid of code for compiling shaders using d3dcompiler.
It's unused.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-06 00:04:36 +02:00
JĂłzef Kucia
3d74e65a1f libs/vkd3d-shader: Factor out shader_dump_instruction().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-06 00:04:34 +02:00
JĂłzef Kucia
49e936ae2a libs/vkd3d-shader: Factor out shader_dump_instruction_flags().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-06 00:04:32 +02:00
JĂłzef Kucia
988cf2154b libs/vkd3d-shader: Factor out shader_dump_version().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-06 00:04:31 +02:00
JĂłzef Kucia
265ce37014 libs/vkd3d: Use VK_COMPONENT_SWIZZLE_IDENTITY in vkd3d_set_view_swizzle_for_format().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 19:33:08 +02:00
JĂłzef Kucia
a5808cfdd7 libs/vkd3d-shader: Import shader tracing from wined3d.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 19:33:04 +02:00
JĂłzef Kucia
2fa29dd823 libs/vkd3d-shader: Recognize more shader registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 19:32:52 +02:00
JĂłzef Kucia
3ddb29c16a libs/vkd3d-shader: Parse precise flags.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 19:32:48 +02:00
JĂłzef Kucia
b59ad01dd2 libs/vkd3d-shader: Implement SV_RenderTargetArrayIndex.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 19:32:41 +02:00
JĂłzef Kucia
9974237f35 build: Do not drop AM_CFLAGS when adding per-target CFLAGS.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-29 19:32:35 +02:00
JĂłzef Kucia
b5d1dbd182 libs/vkd3d: Rename default sampler to dummy sampler.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:36 +02:00
JĂłzef Kucia
a87b3f3fb2 libs/vkd3d-shader: Rename default sampler to dummy sampler.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:32 +02:00
JĂłzef Kucia
78c952ee5f libs/vkd3d: Fix rendering to DXGI_FORMAT_A8_UNORM.
In Direct3D alpha is taken from the .r component.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:28 +02:00
JĂłzef Kucia
40ee9fa0e9 libs/vkd3d-shader: Implement swizzling for shader outputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:24 +02:00
JĂłzef Kucia
926f844ead libs/vkd3d-shader: Rework swizzle macros.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:20 +02:00
JĂłzef Kucia
3198cab3ed libs/vkd3d: Process render target formats before shaders.
We may need to swizzle components in pixel shader based on render target
formats because Vulkan doesn't support swizzles for framebuffer
attachment image views.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:13 +02:00
JĂłzef Kucia
5423de8267 Update AUTHORS.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-24 23:29:10 +02:00
Alexandre Julliard
020c119e2d Release 1.0.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-23 19:19:15 +02:00
JĂłzef Kucia
d3c59c1a01 include: Force stack alignment on i386.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-23 19:03:29 +02:00
JĂłzef Kucia
f2697b0eba Update copyright info.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-26 20:30:43 +02:00
JĂłzef Kucia
0ae0e431b1 libs/vkd3d-utils: Prefix defines with VKD3D_.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-25 15:50:04 +02:00
JĂłzef Kucia
6988513d7b include: Move vkd3d_shader.h to private headers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-25 15:50:02 +02:00
JĂłzef Kucia
c197b9c9a1 include: Remove stdbool.h include from vkd3d_utils.h.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-25 15:49:59 +02:00
JĂłzef Kucia
0ece81eca8 build: Set libtool version numbers for shared libraries.
Generates the following sonames: libvkd3d.so.1 and libvkd3d-utils.so.1

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-19 23:31:12 +02:00
JĂłzef Kucia
b901d72877 build: Improve SPIR-V headers detection.
Allows building with Vulkan SDK.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-16 22:00:10 +02:00
JĂłzef Kucia
ccc49fe00d libs/vkd3d-shader: Use unified SPIR-V headers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-16 22:00:04 +02:00
JĂłzef Kucia
f0a1e14113 libs/vkd3d: Mark device as removed when command list in recording state is executed.
Fixes a GPU hang in test_device_removed_reason() on RADV.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-16 21:59:57 +02:00
JĂłzef Kucia
ce9ec9a44a build: Remove rpc.h and rpcndr.h includes from generated headers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-16 21:59:53 +02:00
JĂłzef Kucia
ab15973e6b build: Do not try to rebuild headers when widl is not found.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:22 +02:00
JĂłzef Kucia
2a430ae991 libs/vkd3d: Return early if there are no descriptors to update.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:12 +02:00
JĂłzef Kucia
8b8128b055 libs/vkd3d: Fix memory leak in d3d12_pipeline_state_init_compute_uav_counters().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:10 +02:00
JĂłzef Kucia
277cdd4e95 libs/vkd3d: Fix memory leak in d3d12_command_queue_ExecuteCommandLists().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:09 +02:00
JĂłzef Kucia
736d3c23fd libs/vkd3d-shader: Get rid of redundant assignment from vkd3d_shader_find_signature_element().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:07 +02:00
JĂłzef Kucia
83ce4553ea libs/vkd3d-shader: Introduce VKD3DSPR_INVALID.
Fixes clang warnings.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:05 +02:00
JĂłzef Kucia
7dd9420877 libs/vkd3d-shader: Fix error code variable type in vkd3d_shader_compile_dxbc().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:03 +02:00
JĂłzef Kucia
830f7c1e49 libs/vkd3d: Propagate error code in vkd3d_fence_worker_stop().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:01 +02:00
JĂłzef Kucia
0e86a6b353 libs/vkd3d: Use HRESULT as preferred error code.
For consistency.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-11 18:56:25 +02:00
JĂłzef Kucia
e6e62e8a8e libs/vkd3d: Add support for VK_EXT_debug_report.
For debug messages from Vulkan drivers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-11 18:56:10 +02:00
JĂłzef Kucia
6a1b3a3fb5 libs/vkd3d-shader: Validate DXBC data size.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-11 18:56:08 +02:00
JĂłzef Kucia
69e6382880 tests: Add additional test for copying descriptors with NULL range sizes.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-11 18:56:06 +02:00
JĂłzef Kucia
28e0ab6481 libs/vkd3d: Fix copying descriptors with NULL destination range sizes.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-11 18:56:03 +02:00
JĂłzef Kucia
3ebe7d5b9b include: Add emulation of __uuidof().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-03 21:59:38 +02:00
JĂłzef Kucia
f5b532921a libs/vkd3d: Add structure type fields to public API structures.
Adds flexibility for future API extensions.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-03 21:59:35 +02:00
JĂłzef Kucia
c7d7c58451 tests: Add test for custom PRESENT state transitions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-30 14:11:00 +02:00
JĂłzef Kucia
aafbaddb2c tests: Allow sharing common code between D3D12 tests.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-30 14:10:57 +02:00
JĂłzef Kucia
bfd20ef1c8 libs/vkd3d: Add support for custom PRESENT state transitions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-30 14:10:55 +02:00
JĂłzef Kucia
fd36cefbe2 demos: Do not force sRGB formats for Vulkan swapchains.
Fixes the following validation error:

IMAGE(ERROR): object: 0x0 type: 0 location: 3302 msgCode: 180357110:
vkCreateImageView() format VK_FORMAT_B8G8R8A8_UNORM differs from image 6
format VK_FORMAT_B8G8R8A8_SRGB. Formats MUST be IDENTICAL unless
VK_IMAGE_CREATE_MUTABLE_FORMAT BIT was set on image creation. The spec
valid usage text states 'If image was not created with the
VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, format must be identical to the
format used to create image'

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:27 +02:00
JĂłzef Kucia
dd461ca6b8 libs/vkd3d: Handle VK_ERROR_EXTENSION_NOT_PRESENT in hresult_from_vk_result().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:25 +02:00
JĂłzef Kucia
26cbfbe647 libs/vkd3d: Implement d3d12_command_list_CopyResource() for textures.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:23 +02:00
JĂłzef Kucia
953a924ca0 libs/vkd3d: Fix copying descriptors with NULL source range sizes.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:21 +02:00
JĂłzef Kucia
4dc706733e libs/vkd3d: Avoid passing invalid miplevel count to Vulkan.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:20 +02:00
JĂłzef Kucia
3f235f9787 libs/vkd3d: Fix error message in vkd3d_check_extensions().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:17 +02:00
JĂłzef Kucia
1fe6270307 libs/vkd3d-shader: Translate control point count declarations.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-15 20:00:39 +01:00
JĂłzef Kucia
5ea8cad967 libs/vkd3d-shader: Avoid UINT.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-15 20:00:37 +01:00
JĂłzef Kucia
844c83a837 libs/vkd3d-shader: Avoid Windows data types in public API.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-15 20:00:35 +01:00
JĂłzef Kucia
fddf86e6ea libs/vkd3d-shader: Remove dependency on D3D12 headers.
We would like to allow building libvkd3d-shader as a standalone library
without our Direct3D translation layers.

In the long term, it should be possible to build and use libvkd3d-shader
without Win32 data types, Vulkan headers and libs.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-15 20:00:31 +01:00
JĂłzef Kucia
4c35737940 include: Move D3D_PRIMITIVE_TOPOLOGY to d3dcommon.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-15 20:00:23 +01:00
JĂłzef Kucia
fb034dd325 tests: Add test for rendering to DXGI_FORMAT_A8_UNORM.
Rendering to A8_UNORM doesn't work yet, because we cannot easily swizzle
components for render target image views.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:40:05 +01:00
JĂłzef Kucia
2d3a291b01 tests: Add test for sampling from DXGI_FORMAT_A8_UNORM.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:40:03 +01:00
JĂłzef Kucia
3bf017b331 libs/vkd3d: Disallow image view swizzles on framebuffer attachments and storage images.
The Vulkan spec says that image views must be created with the identity
swizzle for attachments and storage images.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:40:00 +01:00
JĂłzef Kucia
850f09e703 libs/vkd3d: Implement DXGI_FORMAT_A8_UNORM.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:39:51 +01:00
JĂłzef Kucia
d1e62117ea tests: Add test for OMSetRenderTargets().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:39:49 +01:00
JĂłzef Kucia
abcd0348a0 libs/vkd3d: Fix single descriptor handles in d3d12_command_list_OMSetRenderTargets().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:39:47 +01:00
JĂłzef Kucia
389c18272f build: Use shared SPIRV-Tools library.
SPIRV-Tools are now also built as a shared library.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-09 21:46:19 +01:00
JĂłzef Kucia
70493640e3 include: Cleanup d3d12 header files.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-09 20:09:05 +01:00
JĂłzef Kucia
dd6dedd9d1 libs/vkd3d: Add remaining helper functions for CPU descriptor handles.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-08 21:59:04 +01:00
JĂłzef Kucia
65aab7b47b libs/vkd3d: Use PFN prefix for function pointer typedefs.
A more common convention, e.g. Vulkan uses it.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 21:35:33 +01:00
JĂłzef Kucia
23b33e7b24 include: Add typedefs for vkd3d function pointers.
It makes easier to load vkd3d dynamically.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 21:35:31 +01:00
JĂłzef Kucia
26c5a1ef73 libs/vkd3d-shader: Implement vDomain.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 21:35:30 +01:00
JĂłzef Kucia
2759ea7857 libs/vkd3d-shader: Translate dcl_tessellator_partitioning instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 21:35:27 +01:00
JĂłzef Kucia
f1de58c58e libs/vkd3d-shader: Translate dcl_tessellator_domain instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-06 21:35:24 +01:00
JĂłzef Kucia
8d2c59dd35 libs/vkd3d-shader: Use vkd3d_dxbc_compiler_get_constant_float_vector() in more places.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:57:12 +01:00
JĂłzef Kucia
c634e8f56a tests: Add test for geometry shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:57:09 +01:00
JĂłzef Kucia
6f2ca74904 libs/vkd3d-shader: Add initial support for arrayed shader inputs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:57:07 +01:00
JĂłzef Kucia
0ecbdbe823 libs/vkd3d-shader: Emit InvocationId for geometry and tessellation shaders.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:57:05 +01:00
JĂłzef Kucia
f7cace8216 libs/vkd3d-shader: Translate dcl_gs_instances instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:57:02 +01:00
JĂłzef Kucia
f6c708a3cc libs/vkd3d-shader: Translate geometry shader "cut" instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:57:00 +01:00
JĂłzef Kucia
d97e32d035 libs/vkd3d-shader: Translate dcl_input_siv instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-05 18:56:58 +01:00
JĂłzef Kucia
367e55cd59 libs/vkd3d-shader: Force public enums to 32-bit values.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-02 18:49:57 +01:00
JĂłzef Kucia
be8e10e12e libs/vkd3d-shader: Use our own SPIR-V generator ID.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-02 18:49:55 +01:00
JĂłzef Kucia
372bd56ade libs/vkd3d: Add support for device parent.
In order to hold a reference to IDXGIAdapter.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-02 18:49:52 +01:00
JĂłzef Kucia
b1fc5039c8 libs/vkd3d-shader: Use GLSL.std450 NMin, NMax and NClamp opcodes.
This reverts commit 70f5b24f92.

The bug is fixed in Nvidia drivers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-26 00:24:57 +01:00
JĂłzef Kucia
daebeb3e11 libs/vkd3d-shader: Adjust barrier emission.
Aligns with glsang changes which are based on Khronos recommendations.

8297936dd6
838d7afc61
2505057af8

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-26 00:24:53 +01:00
JĂłzef Kucia
9075722128 libs/vkd3d: Implement internal reference counting for resources.
For swapchain back buffers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-24 22:32:22 +01:00
JĂłzef Kucia
a25a2086a5 libs/vkd3d: Do not enable swapchain extensions by default.
libvkd3d doesn't use them.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-24 22:32:20 +01:00
JĂłzef Kucia
e9f826bd08 libs/vkd3d-utils: Enable swapchain extensions in D3D12CreateDevice().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-24 22:32:18 +01:00
JĂłzef Kucia
7c60685396 tests: Add test for additional device extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-24 22:32:16 +01:00
JĂłzef Kucia
fc31637040 libs/vkd3d: Allow library user to enable additional device extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-24 22:32:14 +01:00
JĂłzef Kucia
12aa2cb74c tests: Add test for additional instance extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-23 21:42:10 +01:00
JĂłzef Kucia
4cd36fc553 libs/vkd3d: Implement d3d12_device_GetAdapterLuid().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-23 21:42:08 +01:00
JĂłzef Kucia
c9c6caae98 libs/vkd3d: Allow library user to enable additional instance extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-23 21:42:06 +01:00
JĂłzef Kucia
16723f9d71 tests: Add test for required device extensions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-19 18:50:02 +01:00
JĂłzef Kucia
0fe7efdd73 tests: Add test for creating instance with vkGetInstanceProcAddr() pointer.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-19 18:50:00 +01:00
JĂłzef Kucia
ebca1d3396 libs/vkd3d: Validate signal_event_pfn.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-19 18:49:58 +01:00
JĂłzef Kucia
6a32ad8913 libs/vkd3d: Rename vkd3d_get_vk_instance() to vkd3d_instance_get_vk_instance().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-19 18:49:56 +01:00
JĂłzef Kucia
c64181345b libs/vkd3d: Simplify vkd3d_restrict_format_support_for_feature_level().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-19 18:49:53 +01:00
JĂłzef Kucia
783a2c2cdf libs/vkd3d: Use vkGetInstanceProcAddr() to load global Vulkan functions.
It's enough to load vkGetInstanceProcAddr() in a platform-specific way.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:22:01 +01:00
JĂłzef Kucia
10b04414e8 libs/vkd3d: Load libvulkan dynamically.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:51 +01:00
JĂłzef Kucia
fcc6846559 libs/vkd3d: Allow library user to load libvulkan.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:44 +01:00
JĂłzef Kucia
4ee7b3428d tests: Fix clang warning.
include/private/vkd3d_test.h:276:22: warning: format string is not a string literal (potentially insecure)
      [-Wformat-security]
    vkd3d_test_debug(name);

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:38 +01:00
JĂłzef Kucia
05cb9de9a3 tests: Fix and simplify checks for error codes.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:36 +01:00
JĂłzef Kucia
cd2c636bf5 tests: Add tests for selecting physical devices.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:34 +01:00
JĂłzef Kucia
8883502121 libs/vkd3d: Introduce function to get Vulkan instance from vkd3d instance.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:32 +01:00
JĂłzef Kucia
b0aa4ed434 libs/vkd3d: Add simple format support restrictions.
In the long term, we may need more complex format support filtering.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-18 16:21:29 +01:00
JĂłzef Kucia
ae014a29c4 libs/vkd3d: Allow library user to select Vulkan physical device.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:23 +01:00
JĂłzef Kucia
473ab501ef build: Fix distcheck.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:21 +01:00
JĂłzef Kucia
a64dd8be5f build: Add version name for symbols.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:19 +01:00
JĂłzef Kucia
44aad2a938 tests: Fix copy-paste mistakes.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:18 +01:00
JĂłzef Kucia
1fbacd5a09 include: Allow using libvkd3d with custom Vulkan headers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:14 +01:00
JĂłzef Kucia
55025f7bec libs/vkd3d: Get rid of vkd3d_get_vk_queue().
Replaced by vkd3d_acquire_vk_queue().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:12 +01:00
JĂłzef Kucia
9e8dc13ba3 libs/vkd3d-shader: Fix uninitialized error code in vkd3d_shader_parser_init().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:08 +01:00
Henri Verbeet
2d8e2fbe86 libs/vkd3d-shader: Validate the DXBC version.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:44 +01:00
JĂłzef Kucia
12ca2bbcf6 libs/vkd3d: Add thread-safe API for accessing Vulkan command queues.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:39 +01:00
JĂłzef Kucia
8357908bc2 tests: Add test for executing command lists from multiple threads.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:37 +01:00
JĂłzef Kucia
d18e986b27 libs/vkd3d: Make GPU VA allocator thread-safe.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:35 +01:00
JĂłzef Kucia
db2e1d402e libs/vkd3d: Synchronize access to Vulkan queues.
Access to VkQueue must be externally synchronized.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:32 +01:00
JĂłzef Kucia
15b918acd5 build: Do not install vkd3d-compiler.
At this stage, vkd3d-compiler is useful only as an internal tool
for testing.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:30 +01:00
JĂłzef Kucia
d51946d612 build: Do not build libvkd3d-shader as public library.
libvkd3d-shader interface is expected to be extended significantly.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:28 +01:00
JĂłzef Kucia
41715a2f33 build: Use linker version scripts to control visibility.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:25 +01:00
JĂłzef Kucia
4605d1275c libs/vkd3d: Validate WCHAR size.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-12 19:27:06 +01:00
JĂłzef Kucia
709b866001 tests: Add test for vkd3d_create_device().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-12 19:27:04 +01:00
JĂłzef Kucia
0aef5f927e tests: Add test for creating vkd3d instances.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-12 19:27:02 +01:00
JĂłzef Kucia
0f46ae3e55 libs/vkd3d: Add API for creating vkd3d instances.
Makes possible to share a Vulkan instance between multiple devices.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-12 19:27:01 +01:00
JĂłzef Kucia
604056daf4 libs/vkd3d: Allow library user to create internal threads.
We want to create Win32 threads when running under Wine.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-12 19:26:58 +01:00
JĂłzef Kucia
38f2d893b1 libs/vkd3d-shader: Translate dcl_input_primitive instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:52 +01:00
JĂłzef Kucia
31ec7b9160 libs/vkd3d-shader: Translate dcl_output_topology instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:50 +01:00
JĂłzef Kucia
fb67ccd159 libs/vkd3d-shader: Translate geometry shader emit instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:48 +01:00
JĂłzef Kucia
374a23bdd8 libs/vkd3d-shader: Introduce separate stream for execution mode declarations.
Tessellation and geometry shaders generate a lot of execution mode
declarations.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:47 +01:00
JĂłzef Kucia
4ad1f9683e libs/vkd3d-shader: Translate dcl_maxout instructions.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:45 +01:00
JĂłzef Kucia
54dd321729 build: Add VKD3D_CHECK_FUNC() macro.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:40 +01:00
JĂłzef Kucia
ee8eb9b4e4 libs/vkd3d: Validate miplevel count while creating resources.
vkd3d_log2i() is imported from wined3d.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-11 22:31:33 +01:00
JĂłzef Kucia
5d85da0d84 libs/vkd3d: Release current command allocator in d3d12_command_list_Close().
d3d12_command_allocator_free_command_buffer() is not a very accurate name.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:12 +01:00
JĂłzef Kucia
e061e9f3cb libs/vkd3d: Add more formats.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:10 +01:00
JĂłzef Kucia
5123feb750 libs/vkd3d: Remove unused prototype for vkEnumerateInstanceLayerProperties().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:08 +01:00
JĂłzef Kucia
1c74a30e9f tests: Add basic test for NULL descriptors.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:06 +01:00
JĂłzef Kucia
8e3302d532 libs/vkd3d: Fix crash when creating NULL CBVs.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:04 +01:00
JĂłzef Kucia
f0bc873e7a libs/vkd3d-shader: Generate valid SPIR-V for unimplemented registers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:02 +01:00
JĂłzef Kucia
219b537209 libs/vkd3d-shader: Handle unimplemented registers more gracefully.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:36:59 +01:00
JĂłzef Kucia
6671e79082 include: Avoid including vkd3d_windows.h when real windows.h is included.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-15 16:27:36 +01:00
JĂłzef Kucia
abff3ca469 include: Prefix public header file names with vkd3d.
Prevents possible clashes when using vkd3d with external Win32 headers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-15 16:27:34 +01:00
JĂłzef Kucia
f8c20beede include: Do not use vkd3d Win32 headers when VKD3D_NO_WIN32_TYPES is defined.
Allows using vkd3d with other Win32 headers.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-15 16:27:31 +01:00
JĂłzef Kucia
4ae6285c8e libs/vkd3d-shader: Fix result type for OpImageSampleDref instructions.
Per the SPIR-V spec:

  "Result Type must be a scalar of integer type or floating-point type."

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-15 16:27:27 +01:00
JĂłzef Kucia
7ee3a02f92 libs/vkd3d-shader: Avoid theoretical crash in vkd3d_dxbc_compiler_emit_dot().
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 13:40:26 +01:00
JĂłzef Kucia
a285b4c842 tests: Explicitly detect if tests are run under Wine.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 13:40:25 +01:00
JĂłzef Kucia
3956eaf6d0 tests: Detect test platform dynamically.
In order to run cross-compiled tests under Wine.

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 13:40:22 +01:00
JĂłzef Kucia
006f36c2ac libs/vkd3d-shader: Introduce vkd3d_dxbc_compiler_get_constant_uint_vector() helper.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 13:40:20 +01:00
JĂłzef Kucia
ad8e27166a build: Use AC_USE_SYSTEM_EXTENSIONS instead of ugly AC_EGREP_CPP test.
In order to use C functions which are not part of C99, e.g. strdup()
and strncmp().

Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 13:38:49 +01:00
JĂłzef Kucia
d100804e91 tests: Make sure that config.h is included before other headers.
Signed-off-by: JĂłzef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-12-14 13:13:03 +01:00
JĂłzef Kucia
995e3a2359 libs/vkd3d-utils: Use proper name in libvkd3d-utils.pc. 2017-12-12 13:12:47 +01:00
JĂłzef Kucia
879c9e43d1 libs/vkd3d: Do not export D3D12* functions.
Move them to libvkd3d-utils.
2017-12-12 13:12:47 +01:00
JĂłzef Kucia
a1819eb3ca tests: Add test for discard instruction. 2017-12-11 13:22:03 +01:00
JĂłzef Kucia
e0cb3776c1 libs/vkd3d-shader: Fix discard_z instruction. 2017-12-11 12:55:55 +01:00
JĂłzef Kucia
d37bfd9d3e tests: Get rid of unnamed struct in test_instance_id(). 2017-11-01 21:17:46 +01:00
JĂłzef Kucia
2a420cb8c5 tests: Add test for face culling. 2017-10-31 15:44:44 +01:00
JĂłzef Kucia
4e121f8b5d libs/vkd3d-shader: Implement SV_IsFrontFace. 2017-10-31 15:44:44 +01:00
JĂłzef Kucia
79f80df1ee libs/vkd3d-shader: Translate dcl_input_ps_sgv instructions. 2017-10-31 15:44:44 +01:00
JĂłzef Kucia
201782ed7c tests: Test copying data from texture in generic read state. 2017-10-31 10:55:13 +01:00
JĂłzef Kucia
63d5fa5d9c tests: Check depth texture content in test_depth_read_only_view(). 2017-10-30 14:22:11 +01:00
JĂłzef Kucia
8a7faf7913 tests: Add test for read-only depth stencil views. 2017-10-30 14:04:53 +01:00
JĂłzef Kucia
7e5dd39f5f libs/vkd3d: Prefer VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
Use VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL if depth/stencil
writes are disabled.
2017-10-30 14:04:53 +01:00
JĂłzef Kucia
b109a1fc73 tests: Add additional test for resolving query data in different command list. 2017-10-26 12:51:11 +02:00
JĂłzef Kucia
c4e92f91f3 tests: Add test for resolving query data in different command list. 2017-10-26 12:51:11 +02:00
JĂłzef Kucia
3340cafdc4 libs/vkd3d-shader: Avoid potential stack smashing. 2017-10-25 22:55:39 +02:00
JĂłzef Kucia
7b5d745ef5 tests: Fix compilation with -O0. 2017-10-25 22:55:39 +02:00
JĂłzef Kucia
f04389d90b libs/vkd3d-shader: Use more sensible default descriptor binding assignment. 2017-10-25 14:34:44 +02:00
JĂłzef Kucia
e959686f12 libs/vkd3d-shader: Make sure that OpVariables are first instructions in main function.
The SPIR-V spec says:

  "All OpVariable instructions in a function must be in the first block
  in the function. These instructions, together with any immediately
  preceding OpLine instructions, must be the first instructions in that
  block."
2017-10-25 09:58:14 +02:00
JĂłzef Kucia
b65c42e6f9 libs/vkd3d-shader: Avoid OpVectorShuffle on scalars.
The SPIR-V spec states:

  "Vector 1 and Vector 2 must both have vector types, with the same
  Component Type as Result Type."
2017-10-24 21:26:48 +02:00
JĂłzef Kucia
2b21fbf6b8 libs/vkd3d: Add VKD3D_SHADER_DUMP_PATH environment variable for dumping shaders.
A similar functionality was helpful numerous number of times when
developing libvkd3d-shader.
2017-10-24 15:22:01 +02:00
JĂłzef Kucia
f270e36c78 tests: Unify ok() messages. 2017-10-24 12:10:48 +02:00
JĂłzef Kucia
49c3eb69d9 tests: Add helper functions for creating descriptor heaps. 2017-10-24 12:10:48 +02:00
JĂłzef Kucia
e3dfbab2fa tests: Do not re-create buffer in test_tgsm(). 2017-10-24 12:10:48 +02:00
JĂłzef Kucia
f2b37c732a libs/vkd3d: Use if-else in d3d12_command_list_get_fb_extent(). 2017-10-24 12:10:48 +02:00
JĂłzef Kucia
c70a023aeb libs/vkd3d: Remove FIXME comment from vk_barrier_parameters_from_d3d12_resource_state(). 2017-10-24 12:10:48 +02:00
JĂłzef Kucia
56391f471c tests: Add test for copying from depth texture to color texture. 2017-10-20 18:27:17 +02:00
JĂłzef Kucia
b211df683e libs/vkd3d: Implement copying between depth/stencil and color textures.
This could be implemented more efficiently, but ideally we would get
a Vulkan extension for copying between depth/stencil and color textures.
2017-10-20 18:27:17 +02:00
JĂłzef Kucia
a4bd0c1c90 libs/vkd3d: Allocate GPU virtual addresses in d3d12_committed_resource_init(). 2017-10-20 18:27:17 +02:00
JĂłzef Kucia
b0979b27f6 tests: Fix shader code in test_depth_load(). 2017-10-20 18:27:17 +02:00
JĂłzef Kucia
a63b81858c libs/vkd3d: Limit buffer usage flags based on heap type. 2017-10-20 18:27:17 +02:00
JĂłzef Kucia
310335f748 libs/vkd3d-shader: Branch directly to merge block when switch default block is absent. 2017-10-20 18:27:17 +02:00
JĂłzef Kucia
137b5d694b libs/vkd3d-shader: Move inside_block field to vkd3d_control_flow_info. 2017-10-18 19:02:46 +02:00
JĂłzef Kucia
c112f2ed46 libs/vkd3d-shader: Get rid of VKD3D_BLOCK_ELSE. 2017-10-18 19:02:46 +02:00
JĂłzef Kucia
9f831b938a libs/vkd3d-shader: Avoid emitting empty else branches.
We have to patch SpvOpBranchConditional instruction when emitting the
else block because we do not know if an else block is present in
advance.
2017-10-18 19:02:46 +02:00
JĂłzef Kucia
646385e871 libs/vkd3d-shader: Get rid of VKD3D_BLOCK_MAIN. 2017-10-18 19:02:46 +02:00
JĂłzef Kucia
8a047a8eb7 libs/vkd3d-shader: Rename control flow union member for if instructions. 2017-10-18 19:02:46 +02:00
JĂłzef Kucia
8f3e071868 tests: Add additional test for rcp instruction. 2017-10-18 12:27:41 +02:00
JĂłzef Kucia
0369f39a47 libs/vkd3d-shader: Generate correct SPIR-V for rcp with multiple components. 2017-10-18 12:21:24 +02:00
JĂłzef Kucia
7fa3f2ed1a libs/vkd3d: Add FIXME comment for GPU VA allocator. 2017-10-18 11:54:56 +02:00
JĂłzef Kucia
c5e400fa30 libs/vkd3d-shader: Document hacks introduced for Nvidia driver.
See 70f5b24f92.
2017-10-12 17:47:53 +02:00
JĂłzef Kucia
62b6530af3 libs/vkd3d-shader: Check return values of imm_atomic_consume in test_decrement_uav_counter(). 2017-10-12 13:10:26 +02:00
JĂłzef Kucia
a7bd28ffac tests: Use better variable names in test_uav_counters(). 2017-10-12 13:10:26 +02:00
JĂłzef Kucia
eecd16f1cd tests: Fix test_uav_counters().
Results were read from the wrong buffer.
2017-10-12 13:10:26 +02:00
JĂłzef Kucia
2171ba6d32 libs/vkd3d-shader: Decrement OpAtomicIDecrement result. 2017-10-12 13:10:26 +02:00
JĂłzef Kucia
94a33020d3 libs/vkd3d-shader: Use switch statement in shader_parse_root_parameters(). 2017-10-10 16:57:36 +02:00
JĂłzef Kucia
4522a80de8 libs/vkd3d-shader: Use switch statement in shader_write_root_parameters(). 2017-10-10 16:57:36 +02:00
JĂłzef Kucia
18b285328e libs/vkd3d-shader: Add version argument to vkd3d_shader_serialize_root_signature(). 2017-10-10 16:57:36 +02:00
JĂłzef Kucia
f4cfebcd7e libs/vkd3d: Remove hack for creating root signatures from description. 2017-10-10 16:02:09 +02:00
JĂłzef Kucia
7129e23aef demos: Remove hack for creating root signatures. 2017-10-10 16:02:09 +02:00
JĂłzef Kucia
cb417ef46b tests: Remove hack for creating root signatures. 2017-10-10 16:02:09 +02:00
JĂłzef Kucia
5b5cffcf84 libs/vkd3d: Implement creating root signature from bytecode. 2017-10-10 16:02:09 +02:00
JĂłzef Kucia
6b9c3b8971 tests: Add test for root signature serialization. 2017-10-10 16:02:09 +02:00
JĂłzef Kucia
4629cbdf8a libs/vkd3d: Implement D3D12SerializeRootSignature(). 2017-10-10 16:02:09 +02:00
JĂłzef Kucia
6b43a5fe38 libs/vkd3d-shader: Implement root signature serialization. 2017-10-10 16:02:09 +02:00
Henri Verbeet
53654baab9 libs/vkd3d: Support D3D12_FEATURE_FORMAT_SUPPORT in d3d12_device_CheckFeatureSupport(). 2017-10-10 13:09:32 +02:00
JĂłzef Kucia
4504aa65ef tests: Add test for constant buffer relative addressing. 2017-10-06 17:06:31 +02:00
JĂłzef Kucia
586e1cc532 libs/vkd3d-shader: Implement relative addressing for constant buffers. 2017-10-06 17:06:31 +02:00
JĂłzef Kucia
853068c84d libs/vkd3d: Get rid of host writes memory dependency for intial state transitions. 2017-10-06 17:06:31 +02:00
JĂłzef Kucia
97bfba1167 libs/vkd3d: Avoid read access bits in source access masks.
A memory dependency is used to make memory writes available
and visible.
2017-10-06 17:06:31 +02:00
JĂłzef Kucia
05f52dc079 tests: Add test for switch without default case. 2017-10-05 15:58:51 +02:00
JĂłzef Kucia
5479ac7011 libs/vkd3d-shader: Always emit default block for OpSwitch.
The default block is required in SPIR-V.
2017-10-05 15:58:51 +02:00
JĂłzef Kucia
9feb7a3956 libs/vkd3d-shader: Recognize nop instruction. 2017-10-05 15:58:51 +02:00
JĂłzef Kucia
50df52427f tests: Add test for clearing buffer unordered access views. 2017-10-04 13:55:33 +02:00
JĂłzef Kucia
67aed755ab libs/vkd3d: Implement d3d12_command_list_ClearUnorderedAccessViewUint() for R32_UINT buffer views.
Ideally, we would store additional informations only in CPU descriptors.
2017-10-04 13:55:33 +02:00
JĂłzef Kucia
fecc94cebc libs/vkd3d: Add helpers for dereferencing descriptor handles. 2017-10-04 13:55:33 +02:00
JĂłzef Kucia
b002cc4cae libs/vkd3d: Use BC1 formats with alpha. 2017-09-26 11:48:03 +02:00
JĂłzef Kucia
128ff2fa32 tests: Add test for typed UAV writes. 2017-09-26 10:37:41 +02:00
JĂłzef Kucia
3015a4c12b tests: Add test for loading texels from depth textures. 2017-09-26 10:37:41 +02:00
JĂłzef Kucia
e7aa2a7bcf libs/vkd3d-shader: Emit NonReadable decoration for image variables.
Fixes image writes for UNORM formats on Anv. Anv uses special surface
state for write-only storage image descriptors.

The SPIR-V spec doesn't state that the NonReadable decoration is
required for images used with StorageImageWriteWithoutFormat. On the
other hand, glslang requires the 'writeonly' keyword for images without
format, and it emits the NonReadable decoration.
2017-09-26 10:37:41 +02:00
JĂłzef Kucia
2323c36fbd tests: Add test for descriptors visibility. 2017-09-22 16:42:07 +02:00
JĂłzef Kucia
5a020d6673 libs/vkd3d-shader: Implement shader visibility for descriptors. 2017-09-22 16:42:07 +02:00
JĂłzef Kucia
14d975da8d libs/vkd3d: Unroll descriptor copies for SRVs and UAVs.
Consecutive binding updates need to have the same descriptor type
according to validation layers.
2017-09-22 16:42:07 +02:00
JĂłzef Kucia
9d2730d98a demos: Prefer VK_COLOR_SPACE_SRGB_NONLINEAR_KHR.
The VK_COLORSPACE_SRGB_NONLINEAR_KHR is inconsistent with Vulkan naming
rules and provided for backwards compatibility.
2017-09-21 15:12:13 +02:00
JĂłzef Kucia
6ef1961ed0 libs/vkd3d: Avoid recording invalid vkCmdCopyImage() commands. 2017-09-21 15:12:13 +02:00
JĂłzef Kucia
c88b7872d3 tests: Add test for creating resource with unsupported resource flags. 2017-09-21 15:12:13 +02:00
JĂłzef Kucia
9e9af5625b tests: Add basic test for D3D12_FEATURE_FORMAT_SUPPORT. 2017-09-21 15:12:13 +02:00
JĂłzef Kucia
5351ef7184 tests: Add test for gather4 instructions. 2017-09-21 15:12:13 +02:00
JĂłzef Kucia
8cb004bdc4 libs/vkd3d: Create single default sampler per device. 2017-09-21 15:12:13 +02:00
JĂłzef Kucia
cfa827b2f8 libs/vkd3d: Call compute_input_layout_offsets() unconditionally. 2017-09-21 15:12:13 +02:00
JĂłzef Kucia
260421f6ee tests: Add simple test for imm_atomic_consume shader instruction. 2017-09-20 15:01:09 +02:00
JĂłzef Kucia
da0c149138 tests: Add test for separate bindings. 2017-09-19 17:29:20 +02:00
JĂłzef Kucia
54cd424daf libs/vkd3d: Implement d3d12_command_list_SetGraphicsRootShaderResourceView(). 2017-09-19 17:29:20 +02:00
JĂłzef Kucia
eb8eba02bd libs/vkd3d: Implement d3d12_command_list_SetComputeRootShaderResourceView(). 2017-09-19 17:29:20 +02:00
JĂłzef Kucia
90cf804d9b libs/vkd3d: Use Vulkan pipeline cache for graphics pipelines. 2017-09-19 10:58:04 +02:00
JĂłzef Kucia
d2e7fcdf77 libs/vkd3d: Add environment variable for disabling Vulkan extensions.
It's useful for testing, e.g. VKD3D_DISABLE_EXTENSIONS=VK_KHR_push_descriptor
2017-09-18 15:40:42 +02:00
JĂłzef Kucia
acfd64c20e libs/vkd3d: Avoid copying descriptors for dirty root descriptor tables. 2017-09-18 15:40:42 +02:00
JĂłzef Kucia
51b1c165ba tests: Use create_default_texture() in more places. 2017-09-18 15:40:42 +02:00
JĂłzef Kucia
842050f763 tests: Add another test for updating descriptor tables.
This test exercises copy descriptors code path in libvkd3d.
2017-09-18 15:40:42 +02:00
JĂłzef Kucia
dfab65e568 include: Avoid cpp_quote() for function prototypes. 2017-09-18 15:40:42 +02:00
JĂłzef Kucia
67641a8999 libs/vkd3d: Initialize device feature options in vkd3d_init_device_caps(). 2017-09-14 15:38:19 +02:00
JĂłzef Kucia
554d07df06 libs/vkd3d: Warn about unmet feature level 11_0 requirements.
This isn't necessarily exhaustive.
2017-09-14 15:38:19 +02:00
JĂłzef Kucia
602f9780f8 libs/vkd3d-shader: Implement "sample" interpolation qualifier. 2017-09-14 15:38:19 +02:00
JĂłzef Kucia
61703a53d2 tests: Add test for resolving non-issued queries data. 2017-09-14 14:57:09 +02:00
JĂłzef Kucia
2ea8ffb554 libs/vkd3d: Avoid vkCmdCopyQueryPoolResults() for not issued queries.
The Vulkan spec states:

  * "If the query does not become available in a finite amount of time
    (e.g.  due to not issuing a query since the last reset), a
    VK_ERROR_DEVICE_LOST error may occur."

  * "If queries will never finish (e.g. due to being reset but not
    issued), then vkGetQueryPoolResults may not return in finite time."
2017-09-14 14:57:09 +02:00
JĂłzef Kucia
334c532401 libs/vkd3d: Implement d3d12_command_list_CopyResource() for buffers. 2017-09-14 14:57:09 +02:00
JĂłzef Kucia
65774910bd tests: Remove excess newline. 2017-09-14 14:57:09 +02:00
JĂłzef Kucia
6c7ab64652 tests: Add test for SV_InstanceID. 2017-09-12 17:42:42 +02:00
JĂłzef Kucia
6b757f3002 libs/vkd3d-shader: Subtract BaseInstance from InstanceIndex.
Depends on SPV_KHR_shader_draw_parameters extension.
2017-09-12 17:42:42 +02:00
JĂłzef Kucia
a77376121d libs/vkd3d: Require VK_KHR_shader_draw_parameters device extension. 2017-09-12 17:42:42 +02:00
JĂłzef Kucia
6a026dc7bb tests: Add test for dispatching zero thread groups. 2017-09-12 17:42:42 +02:00
JĂłzef Kucia
c9b561e851 tests: Add test for div instruction. 2017-09-12 17:42:42 +02:00
JĂłzef Kucia
c5ba705b9f tests: Add test for round_z instruction. 2017-09-12 17:42:42 +02:00
JĂłzef Kucia
2966f019b0 tests: Add test for D3D12_APPEND_ALIGNED_ELEMENT. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
2425e2939a libs/vkd3d: Match input layout elements with vertex shader inputs. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
b19fe74284 libs/vkd3d-shader: Export shader signature parsing. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
b61c785bd0 libs/vkd3d-shader: Implement SV_InstanceID. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
cd99601b3c libs/vkd3d: Implement offset computation for D3D12_APPEND_ALIGNED_ELEMENT. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
72b835e0bf tests: Add test for binding overlapping heap descriptor ranges. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
8e802ed0af libs/vkd3d: Update descriptor table ranges only with matching descriptor types. 2017-09-11 22:35:16 +02:00
JĂłzef Kucia
a78fe60ef8 Revert "libs/vkd3d: Skip unbound UAV counters."
This reverts commit d9bc635d1a.

We should not need to handle this invalid behavior. It was triggered
by the bug in d3d12_command_list_update_descriptor_table().
2017-09-11 22:35:16 +02:00
JĂłzef Kucia
1cde37d341 libs/vkd3d: Fix updating descriptor sets for descriptor tables with gaps.
Fixes 9afaed918d.
2017-09-11 22:35:16 +02:00
JĂłzef Kucia
32966338df libs/vkd3d: Get rid of UAV counter count from d3d12_pipeline_state. 2017-09-08 15:30:48 +02:00
JĂłzef Kucia
e8868affc0 libs/vkd3d: Clear UAV counters dirty mask after updating descriptors. 2017-09-08 15:30:48 +02:00
JĂłzef Kucia
09658e3b9b build: Use __builtin_popcount() if available. 2017-09-08 15:04:30 +02:00
JĂłzef Kucia
d9bc635d1a libs/vkd3d: Skip unbound UAV counters. 2017-09-08 15:04:30 +02:00
JĂłzef Kucia
2a6f244f36 tests: Add test for UAV counters. 2017-09-08 15:04:30 +02:00
JĂłzef Kucia
9afaed918d libs/vkd3d: Bind descriptor set for UAV counters. 2017-09-08 15:04:30 +02:00
JĂłzef Kucia
19dc6c412e libs/vkd3d: Constify root signature pointers. 2017-09-08 15:04:30 +02:00
JĂłzef Kucia
0d28036d2a libs/vkd3d: Add UAV counter support for compute pipelines.
UAV counter descriptors are stored in a separate VkDescriptorSet.
A VkPipelineLayout created for compute pipeline is compatible for all
other descriptor sets with the VkPipelineLayout created for the root
signature. This ensures that only UAV counter bindings in the last
descriptor set may be disturbed when switching between pipelines with
compatible root signatures.

The implementation of vkd3d_popcount() is based on
https://graphics.stanford.edu/~seander/bithacks.html
2017-09-08 15:04:30 +02:00
JĂłzef Kucia
37f4c9d2a3 libs/vkd3d: Print only TRACE() messages for not initialized descriptors.
A descriptor do not have to be initialized if it is not used by shaders.
2017-09-07 17:48:43 +02:00
JĂłzef Kucia
30cd4cc59f libs/vkd3d-shader: Always declare format for raw/structured image variables. 2017-09-07 17:48:43 +02:00
JĂłzef Kucia
6dfb4ad520 libs/vkd3d-shader: Mark imm_atomic_alloc as UAV read instruction. 2017-09-07 17:48:43 +02:00
JĂłzef Kucia
4af15035df libs/vkd3d-shader: Improve some debug messages. 2017-09-07 17:48:43 +02:00
JĂłzef Kucia
3191e1eaa9 libs/vkd3d-shader: Implement UAV counters instructions. 2017-09-07 17:15:54 +02:00
JĂłzef Kucia
5ef6f71996 libs/vkd3d-shader: Emit declarations for UAV counters. 2017-09-07 17:15:54 +02:00
JĂłzef Kucia
7416c83ae2 libs/vkd3d-shader: Rename vkd3d_descriptor_type to vkd3d_shader_descriptor_type. 2017-09-07 17:15:54 +02:00
JĂłzef Kucia
efdf2ec691 libs/vkd3d-shader: Rename vkd3d_shader_push_constant to vkd3d_shader_push_constant_buffer.
This should be clearer. Multiple constant buffers can be assigned to
a single push constant range.
2017-09-07 17:15:54 +02:00
JĂłzef Kucia
bd0c886281 libs/vkd3d: Store push constant ranges in root signatures.
In prep for UAV counters support.
2017-09-07 17:15:54 +02:00
JĂłzef Kucia
ce8a0290b4 libs/vkd3d: Factor out vkd3d_create_pipeline_layout() function. 2017-09-07 17:15:54 +02:00
JĂłzef Kucia
22b019137b libs/vkd3d: Factor out vkd3d_create_descriptor_set_layout() function. 2017-09-07 17:15:53 +02:00
JĂłzef Kucia
f587670445 libs/vkd3d: Drop support for SPIR-V shaders. 2017-09-07 17:15:53 +02:00
JĂłzef Kucia
495bd6fddc libs/vkd3d: Create Vulkan buffer views for UAV counter resources. 2017-09-07 17:15:53 +02:00
JĂłzef Kucia
9d899b3f06 tests: Add test for updating descriptors after closing command list. 2017-09-05 11:53:55 +02:00
JĂłzef Kucia
6f2814532b tests: Add test for updating descriptor tables. 2017-09-05 11:53:55 +02:00
JĂłzef Kucia
23150f6050 libs/vkd3d: Update Vulkan descriptor sets just before draw call. 2017-09-05 11:53:55 +02:00
JĂłzef Kucia
36d7578093 libs/vkd3d: Move descriptor set functions closer to top of file.
In prep for the next commit.
2017-09-05 11:53:55 +02:00
JĂłzef Kucia
759117c798 tests: Add test for root signature limits. 2017-09-05 11:53:55 +02:00
JĂłzef Kucia
9eee65c3ab libs/vkd3d: Validate root signature size. 2017-09-05 11:53:55 +02:00
JĂłzef Kucia
579a8bc3e0 tests: Also test copying uninitialized descriptors. 2017-09-04 18:33:09 +02:00
JĂłzef Kucia
4c017cbfdc tests: Add test for copying descriptors. 2017-09-04 18:33:09 +02:00
JĂłzef Kucia
603a44fb46 libs/vkd3d: Implement d3d12_device_CopyDescriptors().
There is no easy way to duplicate or copy Vulkan views and samplers.
Therefore, we use reference counting for Vulkan views and samplers when
copying them between descriptor heaps.
2017-09-04 18:33:09 +02:00
JĂłzef Kucia
a780b7a11c libs/vkd3d: Implement reference counting for Vulkan views and samplers. 2017-09-04 18:33:09 +02:00
JĂłzef Kucia
ea8e5eaaba libs/vkd3d-shader: Introduce vkd3d_dxbc_compiler_emit_store_dst_swizzled() helper function. 2017-09-04 18:33:09 +02:00
Henri Verbeet
0c08d5630c include: Get rid of some superfluous semicolons. 2017-09-04 16:46:55 +02:00
JĂłzef Kucia
3a4a71905e libs/vkd3d-shader: Implement texel offset for gather4. 2017-09-04 12:46:52 +02:00
JĂłzef Kucia
293ce313ac libs/vkd3d-shader: Translate gather4 instructions. 2017-09-04 12:46:52 +02:00
JĂłzef Kucia
5bdc928908 libs/vkd3d-shader: Export shader scan function.
For UAV counters support in libvkd3d.
2017-09-01 11:27:58 +02:00
JĂłzef Kucia
e11b5fd566 libs/vkd3d-shader: Implement scanning for UAV counters. 2017-09-01 11:27:58 +02:00
JĂłzef Kucia
df0e4bf9cd libs/vkd3d: Fix default SRVs for 2D array textures. 2017-09-01 11:27:58 +02:00
Sven Hesse
e04b6a537c demos: Create windows on the correct XCB screen. 2017-08-31 15:30:00 +02:00
JĂłzef Kucia
62bd4e6e63 libs/vkd3d: Add support for OffsetInDescriptorsFromTableStart. 2017-08-31 11:21:34 +02:00
JĂłzef Kucia
39a2c0e5f1 libs/vkd3d: Fix width and height for DSV descriptors. 2017-08-31 09:42:50 +02:00
JĂłzef Kucia
7917b84ce9 libs/vkd3d: Fix width and height for RTV descriptors. 2017-08-31 09:42:50 +02:00
JĂłzef Kucia
d8847aa462 libs/vkd3d: Fix texture region copying for miplevels other than 0. 2017-08-31 09:42:50 +02:00
JĂłzef Kucia
0dca9909d9 libs/vkd3d: Copy single layer for array textures in d3d12_command_list_CopyTextureRegion(). 2017-08-31 09:42:50 +02:00
JĂłzef Kucia
660ee7b090 libs/vkd3d: Do not use PlaneSlice as layer index. 2017-08-31 09:42:50 +02:00
JĂłzef Kucia
f3862db04d libs/vkd3d: Use VK_PIPELINE_BIND_POINT_RANGE_SIZE. 2017-08-31 09:29:02 +02:00
JĂłzef Kucia
551b97e087 tests: Make test_query_occlusion() more strict. 2017-08-31 09:29:02 +02:00
JĂłzef Kucia
3535112598 tests: Check that PS was invoked at least once for each pixel. 2017-08-31 09:29:02 +02:00
JĂłzef Kucia
0741d1002a tests: Do not memcpy() pipeline statistics in test_query_pipeline_statistics(). 2017-08-31 09:29:02 +02:00
JĂłzef Kucia
72b109d380 libs/vkd3d-shader: Factor out vkd3d_spirv_build_image_instruction() function. 2017-08-31 09:29:02 +02:00
JĂłzef Kucia
d42f46cab6 libs/vkd3d: Use d3d12_resource_is_buffer() in d3d12_command_list_ResolveQueryData(). 2017-08-31 09:29:02 +02:00
JĂłzef Kucia
904858f4a9 libs/vkd3d: Introduce d3d12_resource_is_texture() helper function.
Makes some code easier to read.
2017-08-30 18:31:52 +02:00
Henri Verbeet
f1aa742569 libs/vkd3d: Support D3D12_FEATURE_D3D12_OPTIONS in d3d12_device_CheckFeatureSupport(). 2017-08-30 18:11:38 +02:00
Henri Verbeet
6f14c77a7a libs/vkd3d: Explicitly initialise the queue timestamp bits variables in vkd3d_create_vk_device().
Avoids -Wmaybe-uninitialized warnings with gcc 4.9.2. More recent
versions of gcc are able to figure it out by themselves.
2017-08-30 18:11:34 +02:00
JĂłzef Kucia
3bd3e03767 tests: Fix resource state transition in test_texture_copy_region().
Fixes Vulkan and D3D12 validation layers errors.
2017-08-30 17:57:23 +02:00
JĂłzef Kucia
6c9aca956a tests: Recognize readback buffers in get_buffer_readback_with_command_list().
We can map readback buffers directly.
2017-08-30 17:57:23 +02:00
JĂłzef Kucia
489abe870c libs/vkd3d: Implement d3d12_resource_GetHeapProperties(). 2017-08-30 17:57:23 +02:00
JĂłzef Kucia
20d4cf551b tests: Add offset parameter to update_buffer_data(). 2017-08-30 17:57:23 +02:00
Sven Hesse
cd20fe94be tests: Add test for texture to texture region copies. 2017-08-30 16:55:02 +02:00
Sven Hesse
4aa534914b libs/vkd3d: Implement CopyTextureRegion() for texture to texture. 2017-08-30 16:53:29 +02:00
JĂłzef Kucia
f8ef6630df libs/vkd3d: Implement d3d12_device_CopyDescriptorsSimple(). 2017-08-30 16:41:41 +02:00
JĂłzef Kucia
7c67665032 libs/vkd3d-shader: Implement ld_{raw, structured} for UAVs. 2017-08-30 16:41:41 +02:00
JĂłzef Kucia
87a2fec426 libs/vkd3d-shader: Translate discard instructions. 2017-08-30 16:41:41 +02:00
JĂłzef Kucia
99b72d4db1 libs/vkd3d-shader: Implement sample_l. 2017-08-30 16:41:41 +02:00
JĂłzef Kucia
5b8d1fbdd5 libs/vkd3d-shader: Implement sample_c_lz. 2017-08-30 16:41:41 +02:00
Henri Verbeet
3019a3e8f1 libs/vkd3d: Support both native and Win32 wchar_t. 2017-08-29 16:36:05 +02:00
Sven Hesse
1f51eebe12 libs/vkd3d: Fail in GetTimestampFrequency() for queues without timestamp support. 2017-08-29 15:17:39 +02:00
Sven Hesse
5b6bd40464 libs/vkd3d: Cache the number of valid bits in queue timestamp queries. 2017-08-29 15:16:41 +02:00
Sven Hesse
4bfa651561 libs/vkd3d: Reset the queries before use. 2017-08-29 14:05:49 +02:00
Sven Hesse
3512a74a39 tests: Add a test for occlusion queries. 2017-08-29 13:38:39 +02:00
Sven Hesse
531875d924 libs/vkd3d: Add a FIXME for binary occlusion queries. 2017-08-29 13:38:39 +02:00
Sven Hesse
027cc05209 libs/vkd3d: Set VK_QUERY_CONTROL_PRECISE_BIT for occlusion queries. 2017-08-29 13:38:39 +02:00
JĂłzef Kucia
6800dc8e40 libs/vkd3d: Use switch instead of multiple ifs in vk_write_descriptor_set_from_d3d12_desc(). 2017-08-29 12:43:04 +02:00
JĂłzef Kucia
7864ac4d67 libs/vkd3d: Merge if statements in vk_write_descriptor_set_from_d3d12_desc(). 2017-08-29 12:43:04 +02:00
JĂłzef Kucia
61044c462b libs/vkd3d: Add FIXME() for ignored max command count. 2017-08-29 10:32:24 +02:00
JĂłzef Kucia
42726ea86b tests: Use create_default_buffer() helper in test_execute_indirect(). 2017-08-29 10:32:24 +02:00
Henri Verbeet
a624787479 libs/vkd3d: Simplify d3d12_command_list_ResolveQueryData(). 2017-08-28 20:38:17 +02:00
Henri Verbeet
040082d965 libs/vkd3d: Simplify d3d12_command_list_EndQuery(). 2017-08-28 20:38:05 +02:00
Henri Verbeet
9af2876958 libs/vkd3d: Simplify d3d12_command_list_BeginQuery(). 2017-08-28 20:37:51 +02:00
Henri Verbeet
7e5af314f1 libs/vkd3d: Validation should happen in the d3d12/Vulkan validation layers.
Unless we have tests that say otherwise.
2017-08-28 20:37:17 +02:00
Henri Verbeet
e228d776be libs/vkd3d: Fix the d3d12_query_heap_create() argument order. 2017-08-28 20:37:03 +02:00
Henri Verbeet
eedac9bdc7 include: Rename DXGI_FORMAT_FORCE_DWORD to DXGI_FORMAT_FORCE_UINT. 2017-08-28 20:36:32 +02:00
Henri Verbeet
da54bd0278 libs/vkd3d: Implement indirect dispatches. 2017-08-28 19:29:35 +02:00
Henri Verbeet
b000952e4f libs/vkd3d: Implement indirect draws. 2017-08-28 19:26:31 +02:00
Henri Verbeet
882d54dacb tests: Get rid of the unused SHADER_BYTECODE macro. 2017-08-28 19:22:15 +02:00
Henri Verbeet
b4d6aa0dbd libs/vkd3d: Explicitly handle VK_ERROR_DEVICE_LOST in hresult_from_vk_result(). 2017-08-28 19:21:17 +02:00
JĂłzef Kucia
3fd94c3c04 tests: Remove unused test context desc. 2017-08-28 19:10:23 +02:00
JĂłzef Kucia
b92fe8667e tests: Add test for UAV loads. 2017-08-28 19:10:23 +02:00
JĂłzef Kucia
4013e41c9e tests: Implement upload for multiple sub-resources. 2017-08-28 19:10:23 +02:00
JĂłzef Kucia
9b8260a246 libs/vkd3d-shader: Translate ld_uav_typed instructions. 2017-08-28 19:10:23 +02:00
JĂłzef Kucia
d107538df8 libs/vkd3d: Implement UAVs for 2D array textures. 2017-08-28 19:10:23 +02:00
Sven Hesse
495fe2a96a tests: Add test for pipeline statistics queries. 2017-08-28 15:35:54 +02:00
Sven Hesse
3001ad5a4f libs/vkd3d: Implement ResolveQueryData() for QUERY_TYPE_PIPELINE_STATISTICS. 2017-08-28 15:15:26 +02:00
Sven Hesse
08c5b5ec2e libs/vkd3d: Implement EndQuery() for QUERY_TYPE_PIPELINE_STATISTICS. 2017-08-28 15:13:41 +02:00
Sven Hesse
5d5587b917 libs/vkd3d: Implement BeginQuery() for QUERY_TYPE_PIPELINE_STATISTICS. 2017-08-28 15:13:01 +02:00
Sven Hesse
0379783c29 include: Add struct D3D12_QUERY_DATA_PIPELINE_STATISTICS. 2017-08-28 15:11:30 +02:00
JĂłzef Kucia
471041454d tests: Skip some tests when WARP is explicitly requested. 2017-08-28 13:47:07 +02:00
JĂłzef Kucia
8f8eb71ff8 libs/vkd3d: Avoid calling vkGetPhysicalDeviceProperties() in d3d12_command_queue_GetTimestampFrequency(). 2017-08-28 13:03:37 +02:00
JĂłzef Kucia
b8c31b771d libs/vkd3d: Add missing return statement in d3d12_command_list_ResolveQueryData(). 2017-08-28 13:03:37 +02:00
JĂłzef Kucia
faf86ebc58 libs/vkd3d: Add missing trace messages. 2017-08-28 13:03:37 +02:00
JĂłzef Kucia
ab28e2005c tests: Introduce create_default_buffer() helper function. 2017-08-28 12:34:44 +02:00
JĂłzef Kucia
7c4d9f87f6 tests: Factor out create_readback_buffer() function. 2017-08-28 12:34:44 +02:00
JĂłzef Kucia
b6627974de tests: Factor out init_buffer_readback() function. 2017-08-28 12:34:44 +02:00
JĂłzef Kucia
dc51597db8 tests: Add test for atomic instructions. 2017-08-28 11:01:23 +02:00
JĂłzef Kucia
b5c89fa89f libs/vkd3d-shader: Implement atomic compare exchange instructions. 2017-08-28 11:01:23 +02:00
JĂłzef Kucia
482af89416 libs/vkd3d-shader: Implement remaining binary atomic instructions. 2017-08-28 11:01:23 +02:00
Sven Hesse
a8441a698c tests: Add test for timestamp queries. 2017-08-25 15:16:07 +02:00
Sven Hesse
f8b7b26372 libs/vkd3d: Implement ResolveQueryData() for QUERY_TYPE_TIMESTAMP. 2017-08-25 15:16:06 +02:00
Sven Hesse
988e1a96de libs/vkd3d: Implement EndQuery() for QUERY_TYPE_TIMESTAMP. 2017-08-25 15:16:05 +02:00
Sven Hesse
67587f81e4 libs/vkd3d: Remember the Query Heap creation properties. 2017-08-25 15:16:03 +02:00
Sven Hesse
65f63d14fa libs/vkd3d: Implement d3d12_command_queue_GetTimestampFrequency(). 2017-08-25 15:16:02 +02:00
JĂłzef Kucia
4e300ab1d4 libs/vkd3d-shader: Translate imm_atomic_iadd instructions. 2017-08-24 17:00:16 +02:00
JĂłzef Kucia
cb166fbd5a libs/vkd3d-shader: Translate atomic_umax instructions. 2017-08-24 17:00:16 +02:00
JĂłzef Kucia
d464c9033f libs/vkd3d-shader: Translate atomic_umin instructions. 2017-08-24 17:00:16 +02:00
JĂłzef Kucia
a836cc2fe3 libs/vkd3d-shader: Translate atomic_or instructions. 2017-08-24 17:00:16 +02:00
JĂłzef Kucia
6124a4c30e tests: Add test for TGSM. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
1c4b9be079 libs/vkd3d-shader: Implement store_{raw,structured} for TGSM. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
f7f7c6d889 libs/vkd3d-shader: Implement ld_raw. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
a94751398b libs/vkd3d-shader: Add support for atomic instructions on TGSM. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
61dd701284 libs/vkd3d-shader: Translate imm_atomic_exch instructions. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
eba87fa55b libs/vkd3d-shader: Implement ld_structured for TGSM. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
cf5fb3fbc2 libs/vkd3d-shader: Fix swizzle for raw/structured instructions. 2017-08-24 15:13:38 +02:00
JĂłzef Kucia
4bfd0456e5 libs/vkd3d-shader: Refactor raw/structured buffer addressing.
In prep for TGSM support.
2017-08-24 15:13:38 +02:00
JĂłzef Kucia
4d0b4f4f71 libs/vkd3d-shader: Add vkd3d_spirv_build_op_composite_extract1() function. 2017-08-24 11:11:16 +02:00
JĂłzef Kucia
cef35c7c76 libs/vkd3d-shader: Translate dcl_tgsm_structured instructions. 2017-08-24 11:11:16 +02:00
JĂłzef Kucia
9ed0feed12 libs/vkd3d-shader: Translate dcl_tgsm_raw instructions. 2017-08-24 11:11:16 +02:00
JĂłzef Kucia
19c1b81a71 libs/vkd3d-shader: Translate sync instructions. 2017-08-24 11:11:16 +02:00
Sven Hesse
3a966cf38e libs/vkd3d: Mark D3D12_QUERY_HEAP_TYPE_SO_STATISTICS with a FIXME() 2017-08-23 17:31:12 +02:00
Sven Hesse
be6af110b4 tests: Mark CreateQueryHeap() for SO_STATISTICS as todo 2017-08-23 17:31:12 +02:00
Sven Hesse
8a78575563 tests: Add test for creating query heaps 2017-08-23 16:18:46 +02:00
Sven Hesse
79cbc900bc libs/vkd3d: Create Vulkan Query Pools for D3D12 Query Heaps. 2017-08-23 16:18:15 +02:00
JĂłzef Kucia
6c5d8da24d libs/vkd3d-shader: Store structure stride in symbol table. 2017-08-22 14:53:33 +02:00
JĂłzef Kucia
18a7e62b3f tests: Add test for buffer shader resource views. 2017-08-22 12:39:56 +02:00
JĂłzef Kucia
eb5e7a4412 libs/vkd3d-shader: Implement ld_structured for SRVs. 2017-08-22 12:39:56 +02:00
JĂłzef Kucia
d5697448eb libs/vkd3d-shader: Translate dcl_resource_structured instructions. 2017-08-22 12:39:56 +02:00
JĂłzef Kucia
77e47eddb9 libs/vkd3d-shader: Translate dcl_resource_raw instructions. 2017-08-22 12:39:56 +02:00
JĂłzef Kucia
d443e0eb00 libs/vkd3d: Add support for buffer SRVs. 2017-08-22 12:39:56 +02:00
JĂłzef Kucia
6ffe54b9ec libs/vkd3d-shader: Translate round_z instructions. 2017-08-22 12:39:56 +02:00
JĂłzef Kucia
e24a3ba8fd tests: Add test for compute shader registers. 2017-08-21 16:30:33 +02:00
JĂłzef Kucia
694c20b1da libs/vkd3d: Implement structured UAVs. 2017-08-21 16:30:33 +02:00
JĂłzef Kucia
0f7c86e2bd libs/vkd3d-shader: Translate store_structured instructions. 2017-08-21 16:30:33 +02:00
JĂłzef Kucia
cab5640d56 tests: Add test for drawing with no render targets. 2017-08-21 12:41:07 +02:00
JĂłzef Kucia
fbc5861728 libs/vkd3d: Track resource usage for UAV clears. 2017-08-21 12:41:07 +02:00
JĂłzef Kucia
03e189386a libs/vkd3d-shader: Translate atomic_iadd instructions. 2017-08-21 12:41:07 +02:00
JĂłzef Kucia
d287591889 libs/vkd3d-shader: Set image format for UAV typed reads and atomic instructions. 2017-08-21 12:41:07 +02:00
JĂłzef Kucia
a90c7c5f12 libs/vkd3d-shader: Add basic shader scan functionality. 2017-08-21 12:41:07 +02:00
JĂłzef Kucia
49a877df86 libs/vkd3d: Allow creating UAVs with no desc for textures. 2017-08-21 12:41:07 +02:00
JĂłzef Kucia
92bb7969a5 libs/vkd3d: Create push descriptor set only if needed. 2017-08-18 17:08:56 +02:00
JĂłzef Kucia
b3d2b36afb libs/vkd3d: Prohibit compressed formats for buffer views. 2017-08-18 17:08:56 +02:00
JĂłzef Kucia
08284f0f85 libs/vkd3d: Fix draw calls with no framebuffer attachments. 2017-08-18 17:08:56 +02:00
JĂłzef Kucia
41b7c46c3e libs/vkd3d-shader: Translate dcl_uav_structured instructions. 2017-08-18 14:52:40 +02:00
JĂłzef Kucia
cc0cce7d8e libs/vkd3d: Add DXGI_FORMAT_R32_SINT format. 2017-08-18 14:52:40 +02:00
JĂłzef Kucia
1588e593f4 tests: Add basic test for depth test. 2017-08-18 14:52:40 +02:00
JĂłzef Kucia
1f22a9bb6b libs/vkd3d: Fix draws with no render targets. 2017-08-18 14:52:40 +02:00
JĂłzef Kucia
8f631c8b0c libs/vkd3d-shader: Make bytecode parser responsible for setting scalar register write masks. 2017-08-18 14:52:40 +02:00
JĂłzef Kucia
ca9cc355b4 libs/vkd3d-shader: Recognize oDepth register. 2017-08-18 14:52:40 +02:00
JĂłzef Kucia
dc7f65122d libs/vkd3d-shader: Silence push constant size mismatch FIXMEs().
This generally doesn't mean anything. It may only be an issue
for out of bounds accesses.
2017-08-17 12:13:50 +02:00
JĂłzef Kucia
ef2f490b20 libs/vkd3d-shader: Do not try to find matching signature element for system-value inputs.
Silences false-positive FIXME() messages.
2017-08-17 12:13:50 +02:00
JĂłzef Kucia
ce0c485d2c tests: Add test for depth/stencil views. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
242ef52d8b libs/vkd3d-shader: Translate sample_c instructions.
Nvidia expects that the D_ref is packed together with texture
coordinates. The D_ref parameter is ignored.

This isn't a problem for glslang because in GLSL D_ref is generally
passed together with texture coordinates.
2017-08-16 17:38:33 +02:00
JĂłzef Kucia
2527f820cd libs/vkd3d-shader: Cleanup vkd3d_dxbc_compiler_prepare[_sampled]_image() functions. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
c9426e939e libs/vkd3d: Reduce width of format tables. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
39ff9e4829 libs/vkd3d: Add more depth/stencil formats. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
1d5b8b7d32 libs/vkd3d: Implement depth/stencil resource views. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
67697f2b8f libs/vkd3d: Factor out vkd3d_enable_extensions() function. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
043d4d0acf libs/vkd3d: Factor out vkd3d_check_extensions() function. 2017-08-16 17:38:33 +02:00
JĂłzef Kucia
1857fdc1bc libs/vkd3d-shader: Translate ld instructions. 2017-08-16 13:11:52 +02:00
JĂłzef Kucia
f5515c46df libs/vkd3d: Create default sampler for each root signature.
We need a sampler for SpvOpImageFetch aka texelFetch().
2017-08-16 13:11:52 +02:00
JĂłzef Kucia
e3d6bac31b libs/vkd3d-shader: Introduce vkd3d_shader_interface structure. 2017-08-16 13:11:52 +02:00
JĂłzef Kucia
e6f6d01489 libs/vkd3d-shader: Implement resinfo for SRVs. 2017-08-16 13:11:52 +02:00
JĂłzef Kucia
3baf5192af tests: Add test for render target sRGB views. 2017-08-15 13:10:05 +02:00
JĂłzef Kucia
dc081f6f9e libs/vkd3d: Set VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT only for typeless formats. 2017-08-15 13:10:05 +02:00
Henri Verbeet
26edc3c545 libs/vkd3d: Add typeless formats. 2017-08-15 13:10:05 +02:00
JĂłzef Kucia
bdee037a1c tests: Add command-line option to force WARP device. 2017-08-15 12:24:44 +02:00
JĂłzef Kucia
6c237a91f6 include: Add IDXGIFactory4. 2017-08-15 12:24:44 +02:00
JĂłzef Kucia
1e744efdd9 tests: Use init_test_context() in test_clear_render_target_view(). 2017-08-15 11:25:10 +02:00
JĂłzef Kucia
e8c58f264c tests: Use init_test_context() in test_clear_depth_stencil_view(). 2017-08-15 11:25:10 +02:00
JĂłzef Kucia
7779250f87 tests: Use check_sub_resource_uint() in more places. 2017-08-15 11:25:10 +02:00
JĂłzef Kucia
f82a90ff78 libs/vkd3d-shader: Fix write mask for vPrim register. 2017-08-15 11:25:10 +02:00
JĂłzef Kucia
0642318dea tests: Add test for updating root descriptors multiple times. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
32e69fa945 libs/vkd3d: Use KHR_push_descriptor for root descriptors.
Thanks to KHR_push_descriptor, we do not have to allocate descriptor
sets for subsequent root descriptor parameters updates.
2017-08-11 13:58:04 +02:00
JĂłzef Kucia
4a767a8f11 libs/vkd3d: Enable VK_KHR_get_physical_device_properties2 instance extension.
Required for VK_KHR_push_descriptor. Validation layers complain when
required extensions are not enabled.
2017-08-11 13:58:04 +02:00
JĂłzef Kucia
9b54e0df17 libs/vkd3d: Add VK_KHR_push_descriptor extension. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
5a9b625522 libs/vkd3d: Factor out d3d12_root_signature_init_root_descriptor_tables() function. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
cc0cfb5a81 libs/vkd3d: Factor out d3d12_root_signature_init_root_descriptors() function.
Root descriptors are going to be assigned to a separate descriptor set
in order to be used with VK_KHR_push_descriptor.
2017-08-11 13:58:04 +02:00
JĂłzef Kucia
e3cdf5226f libs/vkd3d: Factor out d3d12_root_signature_init_static_samplers() function. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
1261c7ea0f libs/vkd3d: Do not update bound descriptor sets. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
6ae3f1ee29 libs/vkd3d: Introduce vkd3d_pipeline_bindings structure. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
9c2b126f38 libs/vkd3d: Factor out d3d12_root_signature_init_descriptor_pool_size(). 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
17e49dc6c6 libs/vkd3d-shader: Translate store_raw instructions. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
5aefd2c9e4 libs/vkd3d-shader: Translate dcl_uav_raw instructions. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
69745d1c08 libs/vkd3d: Fix mapping for SRV/UAV root descriptors. 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
3b854a0023 libs/vkd3d: Get rid of bool parameter to d3d12_command_allocator_free_resources(). 2017-08-11 13:58:04 +02:00
JĂłzef Kucia
e01cc64d82 libs/vkd3d: Fix d3d12_device_GetCopyableFootprints() for 3D textures. 2017-08-09 19:38:06 +02:00
JĂłzef Kucia
624699f5e6 libs/vkd3d: Add FIXME comment about sharing D3D12_RESOURCE_DESC validation code. 2017-08-09 19:38:06 +02:00
JĂłzef Kucia
0075c87a38 libs/vkd3d: Drop VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT.
We do not use input attachments.
2017-08-09 18:44:16 +02:00
JĂłzef Kucia
b0e47baebf libs/vkd3d: Implement d3d12_command_list_Set{Compute,Graphics}RootUnorderedAccessView(). 2017-08-09 18:44:16 +02:00
JĂłzef Kucia
9110b16e7d tests: Pass read range to ID3D12Resource_Map().
Avoids D3D12 Debug Layer warnings.
2017-08-09 18:44:16 +02:00
JĂłzef Kucia
9d234e454c tests: Use check_readback_data_float() in more places. 2017-08-09 18:44:16 +02:00
Sven Hesse
4d540d5b45 libs/vkd3d: Delete DXGI_FORMAT_UNKNOWN from the formats table again.
Put it into a local in GetCopyableFootprints() instead.
2017-08-09 17:15:05 +02:00
Sven Hesse
2f5ba3509d tests: Add tests for GetCopyableFootprints with DIMENSION_TEXTURE3D. 2017-08-09 15:37:47 +02:00
Sven Hesse
0a87657e04 tests: Add tests for GetCopyableFootprints with DIMENSION_TEXTURE1D. 2017-08-09 15:37:44 +02:00
Sven Hesse
fd0dc1b7ce tests: Add tests for GetCopyableFootprints with DIMENSION_BUFFER. 2017-08-09 15:19:27 +02:00
Sven Hesse
ae63b4f0a5 libs/vkd3d: Implement GetCopyableFootprints for DIMENSION_TEXTURE3D. 2017-08-09 15:16:08 +02:00
Sven Hesse
eebad15d62 libs/vkd3d: Implement GetCopyableFootprints for DIMENSION_TEXTURE1D. 2017-08-09 15:11:20 +02:00
Sven Hesse
3353643772 libs/vkd3d: Implement GetCopyableFootprints for DIMENSION_BUFFER. 2017-08-09 15:08:52 +02:00
Sven Hesse
1a7cabdde7 libs/vkd3d: Add DXGI_FORMAT_UNKNOWN. 2017-08-09 14:50:00 +02:00
Sven Hesse
c1c7163216 include: Add D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT. 2017-08-09 14:48:14 +02:00
JĂłzef Kucia
0c41cea4a1 tests: Introduce update_buffer_data() helper function. 2017-08-08 17:09:35 +02:00
JĂłzef Kucia
942ca6b2bd tests: Fix shader code indentation. 2017-08-08 17:09:35 +02:00
JĂłzef Kucia
94e2c424e9 tests: Add test for texture UAV writes. 2017-08-08 17:09:35 +02:00
JĂłzef Kucia
2665cbe522 libs/vkd3d: Duplicate Vulkan descriptors for SRVs and UAVs.
Vulkan has different descriptor types for buffers and textures.
Therefore, we do not know the exact Vulkan descriptor type for D3D12 SRV
and UAV descriptors up front. This information can be extracted from
shaders when creating PSOs but creating incompatible Vulkan descriptor
set layouts for PSOs with the same root signature would introduce a lot
of complexity.

In order to preserve compatibility between resource bindings for PSOs
with the same root signature we duplicate Vulkan descriptors for SRVs
and UAVs (a buffer view and an image view descriptor). This strategy may
be reasonable for small root signatures.
2017-08-08 17:09:35 +02:00
JĂłzef Kucia
1b02322c1d libs/vkd3d: Overallocate descriptors for SRV and UAV descriptor ranges. 2017-08-08 17:09:35 +02:00
JĂłzef Kucia
3eb5e59e37 libs/vkd3d: Count buffer SRVs and UAVs separately.
SRV and UAV root parameters are buffer views.
2017-08-08 17:09:35 +02:00
JĂłzef Kucia
cb86c9c8d0 libs/vkd3d-shader: Implement resinfo for UAVs. 2017-08-08 17:09:35 +02:00
JĂłzef Kucia
190115d3f8 libs/vkd3d: Implement creating 2D texture UAVs. 2017-08-08 17:09:35 +02:00
JĂłzef Kucia
ca6b265e66 tests: Use reset_command_list() in more places. 2017-08-07 14:53:51 +02:00
JĂłzef Kucia
cdc5cd499f libs/vkd3d: Avoid potential double free. 2017-08-07 14:53:51 +02:00
JĂłzef Kucia
6a8b99527a tests: Add test showing that block compressed texture sizes must be aligned. 2017-08-07 14:53:51 +02:00
JĂłzef Kucia
5825acc3a0 libs/vkd3d: Downgrade some FIXMEs() to WARNs().
These should be performance warnings at most.
2017-08-04 17:06:33 +02:00
JĂłzef Kucia
1c69c504f6 libs/vkd3d: Mark d3d12_command_list_SetDescriptorHeaps() as implemented. 2017-08-04 17:06:33 +02:00
JĂłzef Kucia
ba91aeb720 tests: Add test for descriptor tables. 2017-08-04 17:06:33 +02:00
JĂłzef Kucia
074513dc4d libs/vkd3d: Add support for sampler descriptors in root descriptor tables. 2017-08-04 17:06:33 +02:00
JĂłzef Kucia
0a0e29fbbf libs/vkd3d: Add support for multiple descriptors in root descriptor tables. 2017-08-04 17:06:33 +02:00
JĂłzef Kucia
fa0a2eab21 libs/vkd3d: Store Vulkan bindings for descriptor table root parameters in root signature. 2017-08-04 17:06:33 +02:00
JĂłzef Kucia
db3a112fb5 libs/vkd3d: Add support for CBV descriptors in d3d12_command_list_set_descriptor_table(). 2017-08-04 17:06:33 +02:00
JĂłzef Kucia
0859b94833 libs/vkd3d: Implement d3d12_device_CreateConstantBufferView(). 2017-08-04 17:06:33 +02:00
Sven Hesse
6de74f6cc3 libs/vkd3d: Don't calculate footprints for unaligned compressed textures. 2017-08-04 14:36:19 +02:00
Sven Hesse
a0675d1ba7 libs/vkd3d: Calculate footprint total size using row count, not height. 2017-08-04 14:35:02 +02:00
Sven Hesse
6165df4c5c tests: Don't test GetCopyableFootprints on unaligned compressed textures.
Compressed texture sizes must be correctly aligned to the block size.
2017-08-04 13:52:26 +02:00
Sven Hesse
6e601b1d0f tests: Calculate texture total size using row count, not height.
Because the row_pitch and row_size sizes are in terms of rows, not
texel lines. Otherwise, the calculation for compressed textures is
off.
2017-08-04 13:49:47 +02:00
Sven Hesse
3bf82279e9 tests: create_root_signature() can also return E_INVALIDARG.
The Nvidia drivers on Windows do that.
2017-08-03 16:31:57 +02:00
Sven Hesse
ea652cb0e4 tests: Create RTV and DSV descriptor heaps with FLAG_NONE.
FLAG_SHADER_VISIBLE isn't supposed to apply to RTV and DSV heaps.
2017-08-03 14:41:34 +02:00
JĂłzef Kucia
573460550e libs/vkd3d: Do not assume CBV root parameter index is equal to Vulkan descriptor binding. 2017-08-02 15:30:15 +02:00
JĂłzef Kucia
c9b05f68b5 tests: Add test for accessing constant buffers from compute shaders. 2017-08-02 15:30:15 +02:00
JĂłzef Kucia
fb4e86b292 libs/vkd3d: Implement d3d12_command_list_SetComputeRootConstantBufferView(). 2017-08-02 15:30:15 +02:00
JĂłzef Kucia
ef0f90c0c7 libs/vkd3d: Factor out vkd3d_create_buffer_view() function. 2017-08-02 15:30:15 +02:00
JĂłzef Kucia
de2024d235 libs/vkd3d: Do not try to create buffer views for block-compressed formats. 2017-08-02 15:30:15 +02:00
JĂłzef Kucia
a8b64aeede tests: Add test for creating unordered access views. 2017-08-02 15:30:15 +02:00
Sven Hesse
8f250bf471 tests: Add tests for GetCopyableFootprints() with compressed formats. 2017-08-02 14:04:35 +02:00
Sven Hesse
6629301ece libs/vkd3d: Implement GetCopyableFootprints() for compressed formats. 2017-08-02 14:04:31 +02:00
Sven Hesse
47b92c3d37 libs/vkd3d: Add compressed texture formats. 2017-08-02 14:04:26 +02:00
Sven Hesse
1decba1a99 libs/vkd3d: Add block size information to the texture format array. 2017-08-02 14:03:39 +02:00
JĂłzef Kucia
ab63423c80 libs/vkd3d: Factor out vkd3d_create_texture_view() function. 2017-08-01 16:56:44 +02:00
JĂłzef Kucia
26133bd801 tests: Add test for nested switch instructions. 2017-08-01 13:55:49 +02:00
JĂłzef Kucia
eb4c98db17 libs/vkd3d-shader: Add support for switch breaks nested in conditional branches. 2017-08-01 13:55:49 +02:00
JĂłzef Kucia
6b93e6ce99 libs/vkd3d-shader: Add support for switch fall-through blocks. 2017-08-01 13:55:49 +02:00
JĂłzef Kucia
fbeaf0ba95 libs/vkd3d-shader: Make sure that inserted chunks are sorted.
The list is expected to be empty or very small so insertion sort should
be fine.
2017-08-01 13:55:49 +02:00
JĂłzef Kucia
3effb4b18c libs/vkd3d-shader: Get rid of artificial limit for switch case blocks. 2017-08-01 11:38:10 +02:00
JĂłzef Kucia
cd75aab7ba libs/vkd3d: Factor out d3d12_root_signature_init_push_constants() helper function. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
40cb21353e libs/vkd3d: Extract descriptors counting to helper function. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
e7d3897797 tests: Add test for D3D12_SHADER_VISIBILITY_ALL root constants. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
ae8d8036c6 libs/vkd3d-shader: Implement switch control flow instructions. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
5061dbaf0c libs/vkd3d-shader: Add mechanism for inserting words into SPIR-V streams.
Allows inserting SPIR-V instructions at arbitrary locations in SPIR-V
streams.
2017-08-01 10:51:45 +02:00
JĂłzef Kucia
c1c94e248c libs/vkd3d-shader: Allow multiple push constant buffers. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
3e91bc7c2d libs/vkd3d: Fix push constant ranges allocation.
Any two push constant ranges must not include the same stage.
2017-08-01 10:51:45 +02:00
JĂłzef Kucia
94b616d670 tests: Add test for multiple root constants. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
d75966ab9e libs/vkd3d: Assign non-overlapping push constant ranges for root constants. 2017-08-01 10:51:45 +02:00
JĂłzef Kucia
aa5d48eec4 demos: Get rid of handwritten GLSL shaders. 2017-07-28 15:26:09 +02:00
JĂłzef Kucia
fec337a03c libs/vkd3d-shader: Fix memory leak in vkd3d_dxbc_compiler_destroy(). 2017-07-28 12:56:18 +02:00
JĂłzef Kucia
85dc44e4ba libs/vkd3d: Remove double semicolons. 2017-07-28 12:56:18 +02:00
JĂłzef Kucia
9725eb3763 libs/vkd3d-shader: Remove double semicolons. 2017-07-28 12:56:18 +02:00
JĂłzef Kucia
6478dea0d1 tests: Add test for GPU virtual addresses. 2017-07-28 12:56:18 +02:00
JĂłzef Kucia
4d7a86295d tests: Add basic test for root constants. 2017-07-28 10:19:37 +02:00
JĂłzef Kucia
e074c30dc7 libs/vkd3d: Pass push constants mapping to shader compiler. 2017-07-28 10:19:37 +02:00
JĂłzef Kucia
56b68c486c libs/vkd3d: Implement d3d12_command_list_SetGraphicsRoot32BitConstants(). 2017-07-28 10:19:37 +02:00
JĂłzef Kucia
33eae49eda libs/vkd3d: Implement d3d12_command_list_SetComputeRoot32BitConstants(). 2017-07-28 10:19:37 +02:00
JĂłzef Kucia
21e2633b10 libs/vkd3d: Implement d3d12_command_list_SetGraphicsRoot32BitConstant(). 2017-07-28 10:19:37 +02:00
JĂłzef Kucia
72f723522e libs/vkd3d: Implement d3d12_command_list_SetComputeRoot32BitConstant(). 2017-07-28 10:19:37 +02:00
JĂłzef Kucia
4d8dea80ae tests: Add test for overlapping root descriptors. 2017-07-27 17:35:24 +02:00
JĂłzef Kucia
dc598ccbc8 tests: Add test for creating root signatures with root constants. 2017-07-27 17:35:24 +02:00
Henri Verbeet
605a02274e libs/vkd3d: Allocate GPU virtual addresses for resources.
Direct3D 12 resources, buffers in particular, are bound to the pipeline
by their GPU virtual address. In Vulkan, these addresses are not visible
to the application. We previously handled this by returning the VkBuffer
handle as virtual address, but this can't work when the application
binds anything other than the resource's base GPU VA. Instead, we
allocate ranges of GPU address space and associate resources with it.

This uses the (naive) approach of simply allocating subsequent ranges,
and never reclaiming them. Eventually we'll have to revisit that.
2017-07-27 16:28:46 +02:00
Henri Verbeet
1acd3d44b1 Implement d3d12_device_CreateQueryHeap(). 2017-07-27 16:28:29 +02:00
Henri Verbeet
e9046a81cc Implement d3d12_device_CreateCommandSignature(). 2017-07-27 16:28:24 +02:00
Henri Verbeet
863a8f3f6f libs/vkd3d: Add DXGI_FORMAT_BC3_UNORM_SRGB. 2017-07-27 16:27:41 +02:00
Henri Verbeet
2a3d121c74 libs/vkd3d: Add DXGI_FORMAT_R8_SNORM. 2017-07-27 16:26:36 +02:00
Henri Verbeet
abff100287 libs/vkd3d: Add DXGI_FORMAT_R16G16B16A16_UINT. 2017-07-27 16:25:34 +02:00
JĂłzef Kucia
92fcb9ffa2 libs/vkd3d-shader: Add support for push constants. 2017-07-27 15:24:38 +02:00
JĂłzef Kucia
7aaa801768 libs/vkd3d: Allow root signatures with no descriptors.
A root signature can have no descriptors when it is empty,
or it has only root constants.
2017-07-27 14:19:41 +02:00
JĂłzef Kucia
bb80c759fc libs/vkd3d: Introduce d3d12_root_signature_cleanup() helper function.
Reduces code duplication.
2017-07-27 14:19:41 +02:00
JĂłzef Kucia
e3d3819789 libs/vkd3d: Fix copy-paste error in d3d12_root_signature_init(). 2017-07-26 16:09:40 +02:00
JĂłzef Kucia
1589ce7682 libs/vkd3d: Fix Vulkan bindings assignment.
Fixes 6d569fcbc6,
2017-07-26 14:50:39 +02:00
JĂłzef Kucia
2ba76ceb02 tests: Do not assign specific shader registers in test_texture().
It is not needed since we have a basic mapping for D3D12 shader
registers.
2017-07-26 14:50:39 +02:00
JĂłzef Kucia
a2e38b5672 libs/vkd3d: Set VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT only if width and height are equal. 2017-07-26 13:45:25 +02:00
JĂłzef Kucia
6d569fcbc6 libs/vkd3d: Assign consecutive Vulkan bindings for D3D12 descriptors. 2017-07-26 13:45:25 +02:00
JĂłzef Kucia
edd1e9602d libs/vkd3d-shader: Implement arbitrary mappings from D3D shader register to Vulkan descriptors.
An arbitrary mapping can be passed to vkd3d_shader_compile_dxbc().
2017-07-26 13:45:25 +02:00
JĂłzef Kucia
d39d0e4c9f libs/vkd3d: Fix memory leak in d3d12_root_signature_init(). 2017-07-25 18:47:42 +02:00
Sven Hesse
3328be8c87 libs/vkd3d: Unroll descriptor tables and fill in push constants 2017-07-25 17:41:58 +02:00
JĂłzef Kucia
ac9abe7740 tests: Avoid unused shader outputs.
Fixes Vulkan validation layers performance warnings.
2017-07-25 14:23:27 +02:00
JĂłzef Kucia
6c174beb4b libs/vkd3d-shader: Use component types from input signatures for shader inputs.
Fixes Vulkan validation layers errors.
2017-07-25 14:23:27 +02:00
JĂłzef Kucia
5a2ebc62f6 libs/vkd3d-shader: Use component types from output signatures for shader outputs.
Fixes Vulkan validation layers errors.
2017-07-25 14:23:27 +02:00
JĂłzef Kucia
97e79e28cf tests: Add test for typed buffer UAVs. 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
bb18c171bf libs/vkd3d: Implement d3d12_command_list_Dispatch(). 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
47cb8ba80f libs/vkd3d: Bind compute pipeline. 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
982075db60 libs/vkd3d: Partially implement d3d12_command_list_SetComputeRootDescriptorTable(). 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
5ac8dbfc64 libs/vkd3d: Implement d3d12_device_CreateUnorderedAccessView(). 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
73cdf0164a libs/vkd3d: Implement d3d12_command_list_SetComputeRootSignature(). 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
3f4ef37b88 libs/vkd3d: Introduce d3d12_command_list_allocate_descriptor_set() helper function. 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
055b27da12 libs/vkd3d: Rename current_descriptor_set to graphics_descriptor_set. 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
d0a4238e39 libs/vkd3d: Allocate Vulkan descriptors for UAVs. 2017-07-25 12:50:14 +02:00
JĂłzef Kucia
bd437d547f libs/vkd3d: Add support for compute command allocators. 2017-07-25 11:22:34 +02:00
JĂłzef Kucia
a0e82064dc libs/vkd3d-shader: Mask coordinates for OpImageWrite instructions. 2017-07-24 19:43:50 +02:00
JĂłzef Kucia
046afde8db libs/vkd3d-shader: Store resource type info in table. 2017-07-24 19:43:50 +02:00
JĂłzef Kucia
aa3465ac83 libs/vkd3d-shader: Fix bitcasts for shader inputs. 2017-07-24 19:43:50 +02:00
JĂłzef Kucia
c71d609fb6 libs/vkd3d-shader: Fix write mask for vThreadIDInGroupFlattened. 2017-07-24 19:43:50 +02:00
JĂłzef Kucia
6bbd6c948a libs/vkd3d-shader: Translate store_uav_typed instructions. 2017-07-24 19:43:50 +02:00
JĂłzef Kucia
4746833a6f libs/vkd3d-shader: Translate dcl_uav_typed instructions. 2017-07-24 19:43:50 +02:00
JĂłzef Kucia
00606b7dff libs/vkd3d: Fix logic for choosing compute-only queue family index. 2017-07-21 22:29:12 +02:00
JĂłzef Kucia
23fa2ca599 tests: Add simple test for creating compute command queue. 2017-07-21 22:29:12 +02:00
JĂłzef Kucia
d35ffe53ad libs/vkd3d: Initialize device->compute_queue_family_index.
Fixes dadce84a4b.
2017-07-21 22:29:12 +02:00
Sven Hesse
dadce84a4b libs/vkd3d: Create a compute queue family. 2017-07-21 15:24:57 +02:00
JĂłzef Kucia
c790aabb4d tests: Add additional test for loops. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
465f1c449e tests: Add test for udiv instruction. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
ea6b35ef58 libs/vkd3d-shader: Translate udiv instructions. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
c73b201110 libs/vkd3d-shader: Do not print FIXMEs for known global flags. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
28285d2f18 tests: Add test for rcp instruction. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
67d001c287 tests: Add test for imul instruction. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
95b6b7b91b libs/vkd3d-shader: Clean up vkd3d_dxbc_compiler_emit_control_flow_instruction(). 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
04672dc64c tests: Add test for imad instruction. 2017-07-21 14:14:42 +02:00
JĂłzef Kucia
9e6bd63058 tests: Add test for log instruction. 2017-07-20 17:40:45 +02:00
JĂłzef Kucia
530d1306e9 tests: Add test for exp instruction. 2017-07-20 17:40:45 +02:00
JĂłzef Kucia
554321a23c tests: Add test for frc instruction. 2017-07-20 17:40:45 +02:00
JĂłzef Kucia
d25df67f9c tests: Add test for integer comparison instructions. 2017-07-20 17:40:45 +02:00
JĂłzef Kucia
e0d95289cd tests: Add test for umin and umax instructions. 2017-07-20 17:40:45 +02:00
JĂłzef Kucia
c9d9763190 tests: Add test for round_{ni,pi} instructions. 2017-07-20 17:40:45 +02:00
Henri Verbeet
0f9fa96ff1 build: Explicitly link the tests with libvkd3d.
For D3D12CreateRootSignatureDeserializer().
2017-07-20 14:54:36 +02:00
JĂłzef Kucia
d6853dcc20 tests: Add test for loop instructions. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
18c06c8022 libs/vk3d-shader: Translate break instructions for loops. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
1cbf6ebddf libs/vk3d-shader: Fix return instructions in if/else blocks. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
2022702858 libs/vkd3d-shader: Translate breakc instructions. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
98c307cdbc libs/vkd3d-shader: Implement loops. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
465b0b998f tests: Add test for nested if instructions. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
f6f70d8c02 libs/vkd3d-shader: Add support for nested control flow. 2017-07-20 13:32:40 +02:00
JĂłzef Kucia
1e9a38005b libs/vkd3d-shader: Use vkd3d_spirv_build_once mechanism for SPIR-V constants. 2017-07-19 14:45:54 +02:00
JĂłzef Kucia
ab78c23170 libs/vkd3d-shader: Translate round_{ni,pi} instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
fed8155d08 libs/vkd3d-shader: Translate rcp instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
a4e5d06cac libs/vkd3d-shader: Translate log instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
87f34094db libs/vkd3d-shader: Translate imul instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
b75022df72 libs/vkd3d-shader: Translate more integer comparison instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
e8edbac33f libs/vkd3d-shader: Translate more integer ALU instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
dddd97f126 libs/vkd3d-shader: Translate imad instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
be276b4182 libs/vkd3d-shader: Translate frc instructions. 2017-07-19 13:53:59 +02:00
JĂłzef Kucia
aa8ce19b2e libs/vkd3d-shader: Translate exp instructions. 2017-07-19 13:53:59 +02:00
Henri Verbeet
e9fe4da01e include: Respect NOMINMAX. 2017-07-18 19:15:00 +02:00
JĂłzef Kucia
e307beee29 libs/vkd3d-shader: Fix immediate constant buffers. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
2420fdb3af libs/vkd3d-shader: Add support for vThreadGroupID register. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
79e61d95df libs/vkd3d-shader: Fix shader input register mask handling. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
78a085199f libs/vkd3d-shader: Use vkd3d_get_spirv_builtin() directly. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
9d944ad96c libs/vkd3d-shader: Store info about SPIR-V built-ins in table. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
e5a4ad3385 libs/vkd3d-shader: Add support for vThreadIDInGroupFlattened register. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
caa1f4a37a libs/vkd3d-shader: Allow compute shader registers as source operands. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
171ad02aa8 tests: Add test for movc instruction. 2017-07-18 17:32:26 +02:00
JĂłzef Kucia
332da87f08 tests: Add test for swapc instruction. 2017-07-18 13:31:46 +02:00
JĂłzef Kucia
9d319bbc3d libs/vkd3d-shader: Translate swapc instructions. 2017-07-18 13:31:46 +02:00
JĂłzef Kucia
013eb246f8 programs/vkd3d-compiler: Generate usage options list. 2017-07-18 13:31:46 +02:00
JĂłzef Kucia
3407702d60 libs/vkd3d-shader: Avoid duplicated OpTypeImage instructions. 2017-07-17 18:12:02 +02:00
JĂłzef Kucia
758247de4d libs/vkd3d-shader: Avoid duplicated OpTypeSampledImage instructions. 2017-07-17 18:12:02 +02:00
JĂłzef Kucia
42d8b97176 libs/vkd3d-shader: Avoid duplicated OpTypePointer instructions. 2017-07-17 18:12:02 +02:00
JĂłzef Kucia
e715a6d1c9 libs/vkd3d-shader: Add more general way to emit SPIR-V instructions once. 2017-07-17 18:12:02 +02:00
JĂłzef Kucia
3dc307bfb8 libs/vkd3d-shader: Make SPIR-V builder responsible for emitting parameterless types once. 2017-07-17 18:12:02 +02:00
JĂłzef Kucia
acb683690b libs/vkd3d-shader: Make SPIR-V builder responsible for emitting OpTypeSampler once. 2017-07-17 18:12:02 +02:00
JĂłzef Kucia
da6c724c3b tests: Add test for texturing. 2017-07-17 16:25:29 +02:00
JĂłzef Kucia
cc536e72ab libs/vkd3d-shader: Translate sample instructions. 2017-07-17 16:25:29 +02:00
JĂłzef Kucia
e86f7fc82e libs/vkd3d-shader: Translate dcl_resource instructions. 2017-07-17 16:25:29 +02:00
JĂłzef Kucia
d1de972430 libs/vkd3d: Allocate Vulkan descriptors for samplers. 2017-07-17 16:25:29 +02:00
JĂłzef Kucia
593a13402d libs/vkd3d: Add support for static samplers.
We still do not implement any reasonable mapping between D3D registers
and Vulkan bindings.
2017-07-17 16:25:29 +02:00
JĂłzef Kucia
02506b24c4 libs/vkd3d: Partially implement d3d12_command_list_SetGraphicsRootDescriptorTable().
A very naive implementation. Mainly to unblock some shader translation
work.
2017-07-17 16:25:29 +02:00
JĂłzef Kucia
733775fbad libs/vkd3d: Implement d3d12_descriptor_heap_GetGPUDescriptorHandleForHeapStart(). 2017-07-17 16:25:29 +02:00
JĂłzef Kucia
091ac41f79 libs/vkd3d: Partially handle descriptor table root parameters. 2017-07-17 16:25:29 +02:00
JĂłzef Kucia
4854b74151 libs/vkd3d-shader: Introduce vkd3d_dxbc_compiler_emit_swizzle() helper function. 2017-07-14 17:21:23 +02:00
JĂłzef Kucia
96f5bb3936 libs/vkd3d-shader: Use vkd3d_dxbc_compiler_emit_load_src() for dot product instructions.
Fixes source modifiers for dot product instructions.
2017-07-14 17:21:23 +02:00
JĂłzef Kucia
2dfbc88a89 libs/vkd3d: Implement copying from buffers to images. 2017-07-14 13:44:35 +02:00
JĂłzef Kucia
7c606089f1 libs/vkd3d-shader: Add FIXME comment for local function variables. 2017-07-14 13:44:35 +02:00
JĂłzef Kucia
a47724ce3a libs/vkd3d-shader: Translate dcl_sampler instructions. 2017-07-14 13:44:35 +02:00
JĂłzef Kucia
1c79831873 libs/vkd3d: Implement d3d12_device_CreateShaderResourceView(). 2017-07-14 13:44:35 +02:00
JĂłzef Kucia
8bb54c17f3 libs/vkd3d: Simplify d3d12_resource_destroy(). 2017-07-14 13:44:35 +02:00
JĂłzef Kucia
f79ecfc608 tests: Add test for ID3D12Device_GetCopyableFootprints(). 2017-07-13 11:56:30 +02:00
JĂłzef Kucia
f4f803c7bb libs/vkd3d: Add initial implementation for d3d12_device_GetCopyableFootprints(). 2017-07-13 11:56:30 +02:00
JĂłzef Kucia
9e18111027 tests: Add test for creating samplers. 2017-07-12 13:10:44 +02:00
JĂłzef Kucia
f3d297574a libs/vkd3d: Implement d3d12_device_CreateSampler(). 2017-07-12 13:10:44 +02:00
JĂłzef Kucia
8a455b6043 include: Add texture filtering macros. 2017-07-12 13:10:44 +02:00
JĂłzef Kucia
85b7dd6d73 tests: Introduce check_sub_resource_vec4() helper. 2017-07-11 17:23:02 +02:00
JĂłzef Kucia
3be16a766f tests: Add test for immediate constant buffer.
Unfortunately, the test fails on Nvidia. It seems that SPIR-V variable
initializers are ignored.
2017-07-11 17:23:02 +02:00
JĂłzef Kucia
cd07a50b21 libs/vkd3d-shader: Implement relative addressing for immediate constant buffers. 2017-07-11 17:23:02 +02:00
JĂłzef Kucia
2bbba87ea0 include: Avoid redefining DXGI_ERROR constants.
Fixes build for crosstests.

MinGW-w64 defines DXGI_ERRORs in winerror.h.
2017-07-11 17:23:02 +02:00
JĂłzef Kucia
1a8b74549a libs/vkd3d-shader: Use vkd3d_dxbc_compiler_emit_variable() in vkd3d_dxbc_compiler_emit_dcl_temps(). 2017-07-11 17:23:02 +02:00
JĂłzef Kucia
c8d713dc83 libs/vkd3d-shader: Implement immediate constant buffers. 2017-07-11 17:23:02 +02:00
JĂłzef Kucia
d8d5701409 libs/vkd3d-shader: Use appropriate message severity for invalid SPIR-V shaders. 2017-07-11 17:23:02 +02:00
JĂłzef Kucia
8c5d542950 tests: Introduce create_upload_buffer() helper. 2017-07-11 17:23:02 +02:00
Henri Verbeet
893d2e8444 include: Add D3D12_FEATURE_DATA_FORMAT_SUPPORT. 2017-07-11 13:52:54 +02:00
Henri Verbeet
fdd2b456fb include: Add D3D12_FEATURE_DATA_D3D12_OPTIONS. 2017-07-11 13:51:13 +02:00
Henri Verbeet
728f4e6686 include: Add missing D3D12_FILTER enum elements. 2017-07-11 13:50:59 +02:00
Henri Verbeet
45b0fa3346 include: Add the ID3D12QueryHeap interface. 2017-07-11 13:19:41 +02:00
Henri Verbeet
2ebba52bef include: Provide enum flag operators for D3D12_DSV_FLAGS. 2017-07-11 13:13:59 +02:00
Henri Verbeet
f68c1b13be include: Add texture dimension constants. 2017-07-11 12:24:25 +02:00
Henri Verbeet
c633a87dba include: Add missing DXGI formats. 2017-07-11 12:24:25 +02:00
Henri Verbeet
e732713f10 include: Add D3D12_DISPATCH_ARGUMENTS. 2017-07-11 12:24:25 +02:00
Henri Verbeet
634a5aa19f include: Add D3D12_DRAW_INDEXED_ARGUMENTS. 2017-07-11 12:24:21 +02:00
Henri Verbeet
12831d2125 include: Add D3D12_DRAW_ARGUMENTS. 2017-07-11 12:21:19 +02:00
Henri Verbeet
941eefb1c0 include: Provide enum flag operators for D3D12_CLEAR_FLAGS. 2017-07-11 12:21:19 +02:00
Henri Verbeet
d61b6a3545 include: Add the missing "values" parameter to ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat(). 2017-07-11 12:21:15 +02:00
Henri Verbeet
99d2ba411e include: Add the missing ClearUnorderedAccessViewUint() method to the ID3D12GraphicsCommandList interface. 2017-07-11 12:21:11 +02:00
Henri Verbeet
21d853ac3b include: Add D3D12_SHADER_COMPONENT_MAPPING. 2017-07-10 16:57:10 +02:00
Henri Verbeet
dec9b864ef include: Provide enum flag operators for D3D12_RESOURCE_STATES. 2017-07-10 16:57:10 +02:00
Henri Verbeet
7a203b0e5f include: Provide enum flag operators for D3D12_RESOURCE_FLAGS. 2017-07-10 16:57:06 +02:00
Henri Verbeet
7bdc8c3b25 include: Introduce dxgiformat.idl. 2017-07-10 16:32:01 +02:00
Henri Verbeet
7e28ef6f16 build: The dist target produces .tar.xz files. 2017-07-10 16:32:01 +02:00
Henri Verbeet
9c027d7b80 build: Add vkd3d-compiler to .gitignore. 2017-07-10 16:32:01 +02:00
Henri Verbeet
0b656c8354 build: Add a pkg-config file for libvkd3d-utils. 2017-07-10 16:32:01 +02:00
Henri Verbeet
2f76b66a43 build: Explicitly link the demos with libvkd3d-shader.
As it turns out, Debian libtool sets link_all_deplibs=no, as opposed to
upstream's link_all_deplibs=unknown. Alternatively, we could override
link_all_deplibs in configure.ac.
2017-07-10 16:32:01 +02:00
JĂłzef Kucia
8d6facabce tests: Add test for shader interstage registers. 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
682e725d6e libs/vkd3d-shader: Add support for multiple shader outputs packed into single register. 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
7f1242888e libs/vkd3d-shader: Recognize vThreadIDInGroup register. 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
2e6f80e24c libs/vkd3d-shader: Pass buffer size to vkd3d_dxbc_compiler_get_register_name(). 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
649a814b23 libs/vkd3d-shader: Use ERR() instead of FIXME() in vkd3d_dxbc_compiler_emit_ext_glsl_instruction().
vkd3d_dxbc_compiler_emit_ext_glsl_instruction() is called only for
implemented instructions.
2017-07-10 15:33:34 +02:00
JĂłzef Kucia
4c448f0a35 libs/vkd3d-shader: Recognize vThreadID register. 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
bf3896adc4 libs/vkd3d-shader: Decorate shader inputs with Component decoration.
Needed when multiple inputs are stored in a single register.
2017-07-10 15:33:34 +02:00
JĂłzef Kucia
c6b6a9d542 libs/vkd3d-shader: Add support for multiple shader inputs packed into single register. 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
3f546c8782 libs/vkd3d: Add DXGI_FORMAT_R32_UINT. 2017-07-10 15:33:34 +02:00
JĂłzef Kucia
5cbf568b0b tests: Add visual test for f32tof16 instruction. 2017-07-06 18:11:57 +02:00
JĂłzef Kucia
f5319efa4b libs/vkd3d-shader: Translate f32tof16 instruction. 2017-07-06 18:11:57 +02:00
JĂłzef Kucia
a6e19e9966 tests: Add visual test for f16tof32 instruction. 2017-07-06 18:11:57 +02:00
JĂłzef Kucia
83392c92a3 libs/vkd3d-shader: Translate f16tof32 instruction. 2017-07-06 18:11:57 +02:00
JĂłzef Kucia
03ab3d25bc libs/vkd3d-shader: Upgrade FIXME() to ERR() in vkd3d_dxbc_compiler_emit_alu_instruction().
vkd3d_dxbc_compiler_emit_alu_instruction() is called only for
implemented instructions.
2017-07-06 18:11:57 +02:00
JĂłzef Kucia
726e94f325 tests: Add visual test for not instruction. 2017-07-06 18:11:57 +02:00
JĂłzef Kucia
24134b20fd libs/vkd3d-shader: Translate xor, or and not instructions. 2017-07-06 18:11:57 +02:00
JĂłzef Kucia
cb125d0020 libs/vkd3d-shader: Fix swizzling for non floating-point result values.
Avoids incorrect bitcasts.
2017-07-06 18:11:57 +02:00
JĂłzef Kucia
7212a74a05 tests: Add test for deserialization of root signature static samplers. 2017-07-06 10:12:22 +02:00
JĂłzef Kucia
fe522495aa libs/vkd3d-shader: Get rid of needless temporary variables. 2017-07-06 10:12:22 +02:00
JĂłzef Kucia
f906df13b3 libs/vkd3d-shader: Implement parsing of root signature static samplers. 2017-07-06 10:12:22 +02:00
JĂłzef Kucia
0699755b81 tests: Add visual test for shader register source modifiers. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
0633cfc55d libs/vkd3d-shader: Implement "absneg" source modifiers. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
5ae7e3d9d0 tests: Add visual test for min/max instructions. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
5d1829329a tests: Add visual test for _sat modifier. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
70f5b24f92 libs/vkd3d-shader: Avoid using GLSL.std450 NMin, NMax and NClamp opcodes.
These opcodes were implemented by Mesa just few days ago. In addition
using these opcodes in a shader leads to a crash on Nvidia.

In practice this change doesn't seem to make a difference. We still want
to use NMin, NMax and NClamp for correctness. This commit is meant to be
reverted when problems with these opcodes are resolved.
2017-06-29 13:40:27 +02:00
JĂłzef Kucia
c9b271f3c7 libs/vkd3d-shader: Implement _sat destination modifier. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
cd1f9118ee libs/vkd3d-shader: Translate floating-point min/max instructions to NMin/NMax.
The semantics of NMin and NMax match special handling required for NaN.
2017-06-29 13:40:27 +02:00
JĂłzef Kucia
2be7b7f7f8 tests: Store default viewport and scissor rect in test context. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
6f83cfc03f tests: Rename test_draw_context to test_context. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
94d0b8a7c8 tests: Add test for scissor test. 2017-06-29 13:40:27 +02:00
JĂłzef Kucia
b1000b73d3 tests: Add visual test for SM5 bit instructions. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
f8b25dcea4 libs/vkd3d-shader: Implement "neg" modifier for integers. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
169b1e7885 libs/vkd3d-shader: Translate movc instruction. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
0ef0b54eed libs/vkd3d-shader: Translate SM5 bit instructions. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
3907daf34b tests: Add visual tests for ishl instruction. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
b2f8454a0f libs/vkd3d-shader: Translate ishl instruction. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
cd2e14ba22 tests: Add visual test for ushr instruction. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
4e22eeec05 tests: Add visual test for ishr instruction. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
1e7fc384fc libs/vkd3d-shader: Translate ishr instruction. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
4de9405a7b libs/vkd3d-shader: Allow input declarations with no write mask. 2017-06-29 09:02:50 +02:00
JĂłzef Kucia
6dbdb872fc tests: Add visual tests for bitfield instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
c708c56d7b libs/vkd3d-shader: Translate ushr instruction. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
32cc44150d libs/vkd3d-shader: Translate bitfield instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
dffa2ad80f libs/vkd3d-shader: Use signed integer format when masking bitfield instruction operands.
This shouldn't be strictly needed, but it fixes bfi on Nvidia.
2017-06-28 12:28:09 +02:00
JĂłzef Kucia
2c139bdf81 libs/vkd3d-shader: Mask immediate constant operands for bitfield instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
5005e2c10d tests: Add visual test for ftoi instruction. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
acc854ccec tests: Add visual test for ftou instruction. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
e623583048 libs/vkd3d-shader: Translate value preserving conversion instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
0cbd632bd3 tests: Add more tests for control flow instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
7e71b86031 libs/vkd3d-shader: Track current block for control flow instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
170168c9cb libs/vkd3d-shader: Implement more floating-point comparison instructions. 2017-06-28 12:28:09 +02:00
JĂłzef Kucia
3190fbffb7 libs/vkd3d-shader: Translate iadd instruction. 2017-06-27 22:21:43 +02:00
JĂłzef Kucia
6eb2d9cee4 libs/vkd3d-shader: Translate ieq instruction. 2017-06-27 22:21:43 +02:00
JĂłzef Kucia
6fa98eb77c libs/vkd3d-shader: Implement absolute value source modifier. 2017-06-27 22:21:43 +02:00
JĂłzef Kucia
30018181e0 libs/vkd3d-shader: Translate sqrt instruction. 2017-06-27 22:21:43 +02:00
JĂłzef Kucia
8f6af1125d libs/vkd3d-shader: Get rid of VKD3D_SHADER_FLIP_Y compiler option.
We use negative viewport height to flip Y.
2017-06-27 22:21:43 +02:00
JĂłzef Kucia
0afe0032b0 libs/vkd3d-shader: Add VKD3D_SHADER_STRIP_DEBUG compiler option. 2017-06-27 22:21:43 +02:00
JĂłzef Kucia
dbfa823b42 libs/vkd3d-shader: Translate min/max instructions. 2017-06-27 22:21:43 +02:00
JĂłzef Kucia
19cb3aa0ed tests: Add test for ID3D12RootSignatureDeserializer. 2017-06-27 13:16:47 +02:00
JĂłzef Kucia
3f03cd1ec8 libs/vkd3d-shader: Implement root signature parsing. 2017-06-27 13:16:47 +02:00
JĂłzef Kucia
d220ae4bfb libs/vkd3d: Add ID3D12RootSignatureDeserializer interface stub. 2017-06-27 13:16:47 +02:00
JĂłzef Kucia
d998cb88c5 libs/vkd3d-shader: Implement constant interpolation mode.
For gears demo.
2017-06-27 13:16:47 +02:00
JĂłzef Kucia
dc26657398 tests: Add visual test for eq instruction. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
3178e25cb5 tests: Add visual test for ne instruction. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
0f77fb3435 tests: Add visual test for if instruction. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
00b1a83ef5 libs/vkd3d-shader: Translate if/else/endif instructions. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
7f4f305225 libs/vkd3d-shader: Introduce vkd3d_spirv_alloc_id() helper function. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
77b3c5858f libs/vkd3d-shader: Pass format string to vkd3d_spirv_build_op_name(). 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
cb79f2ec65 libs/vkd3d-shader: Implement floating-point comparison instructions. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
cd8eb358e9 libs/vkd3d-shader: Refactor immediate constants handling. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
be9849ace4 libs/vkd3d: Avoid race condition when destroying fences. 2017-06-26 17:03:31 +02:00
JĂłzef Kucia
ae8d869013 libs/vkd3d: Use VK_NULL_HANDLE instead of NULL.
Fixes a compiler warning for 32-bit builds.
2017-06-26 17:03:31 +02:00
JĂłzef Kucia
2c4a4bd816 tests: Add initial visual test for shader instructions. 2017-06-23 22:24:33 +02:00
JĂłzef Kucia
becd93c8bd libs/vkd3d-shader: Emit Offset decoration for uniform buffer struct members.
The SPIR-V spec says:

  "Composite objects in the UniformConstant, Uniform, and PushConstant Storage
  Classes must be explicitly laid out."

Intel Anvil driver uses uninitialized memory for offsets when Offset
decorations are missing.
2017-06-23 22:24:33 +02:00
JĂłzef Kucia
55aa937df7 tests: Make test context more flexible. 2017-06-23 22:24:33 +02:00
JĂłzef Kucia
a646e7ed34 tests: Prefer green color for tests success. 2017-06-23 22:24:33 +02:00
JĂłzef Kucia
9a59184e9f libs/vkd3d: Reset current root signature in d3d12_command_list_Reset(). 2017-06-23 22:24:33 +02:00
JĂłzef Kucia
532da7d4e1 libs/vkd3d: Clear current descriptor set when descriptor pool is destroyed. 2017-06-23 22:24:33 +02:00
JĂłzef Kucia
fa52702774 libs/vkd3d: Always update current root signature in d3d12_command_list_SetGraphicsRootSignature(). 2017-06-23 22:24:33 +02:00
JĂłzef Kucia
c0b5cf3df6 libs/vkd3d: Avoid updating descriptor sets bound to recording command buffer.
Fixes GPU memory page faults in gears demo on Nvidia.

The Vulkan spec says:

  "The descriptor set contents bound by a call to
  vkCmdBindDescriptorSets may be consumed during host execution of the
  command, or during shader execution of the resulting draws, or any
  time in between. Thus, the contents must not be altered (overwritten
  by an update command, or freed) between when the command is recorded
  and when the command completes executing on the queue."
2017-06-23 22:24:33 +02:00
JĂłzef Kucia
fe61e0ba22 tests: Add test for fractional viewports. 2017-06-22 13:36:18 +02:00
JĂłzef Kucia
99d82668a0 libs/vkd3d-shader: Avoid generating 2 OpVectorShuffles per mov instruction. 2017-06-22 13:36:18 +02:00
JĂłzef Kucia
05842705b4 libs/vkd3d-shader: Enforce required component count for builtin shader inputs. 2017-06-22 13:36:18 +02:00
JĂłzef Kucia
4e5fcb5141 libs/vkd3d: Use negative viewport height to flip along y-axis.
Requires VK_KHR_maintenance1.
2017-06-21 22:00:19 +02:00
JĂłzef Kucia
d515e3d047 libs/vkd3d: Require VK_KHR_maintenance1 device extension. 2017-06-21 22:00:19 +02:00
JĂłzef Kucia
b288c9e672 tests: Add test for fragment coordinates. 2017-06-21 22:00:19 +02:00
JĂłzef Kucia
4ced2e7789 libs/vkd3d-shader: Translate "neg" source modifier. 2017-06-21 22:00:19 +02:00
JĂłzef Kucia
f5e3b248df libs/vkd3d-shader: Fix SV_Position in pixel shaders. 2017-06-21 22:00:19 +02:00
JĂłzef Kucia
9880d78058 libs/vkd3d-shader: Translate dcl_input_ps_siv instruction. 2017-06-21 22:00:19 +02:00
JĂłzef Kucia
d35c02be8c tests: Remove vertex shader SPIR-V code from init_draw_test_context_(). 2017-06-21 12:22:20 +02:00
JĂłzef Kucia
9948abda96 libs/vkd3d: Flip SV_Position.y in last vertex processing shader stage.
The handwritten GLSL shaders do this.
2017-06-21 12:22:20 +02:00
JĂłzef Kucia
67a8200933 libs/vkd3d-shader: Implement VKD3D_SHADER_FLIP_Y option. 2017-06-21 12:22:20 +02:00
JĂłzef Kucia
989a80fef7 libs/vkd3d-shader: Fix TRACE() message in vkd3d_spirv_dump(). 2017-06-21 12:22:20 +02:00
JĂłzef Kucia
252a2ea353 libs/vkd3d-common: Fix assert() condition. 2017-06-21 12:22:19 +02:00
JĂłzef Kucia
f7e738c27a libs/vkd3d-common: Terminate string with '\0' unconditionally in vkd3d_debug_sprintf(). 2017-06-21 12:22:19 +02:00
JĂłzef Kucia
feb5e8259c libs/vkd3d-shader: Translate dcl_constantbuffer instruction. 2017-06-20 17:09:39 +02:00
JĂłzef Kucia
8b2b2c1b6b libs/vkd3d-shader: Translate bfi instruction. 2017-06-20 17:09:39 +02:00
JĂłzef Kucia
95b11ba336 libs/vkd3d-shader: Translate dcl_input instructions. 2017-06-20 17:09:39 +02:00
JĂłzef Kucia
88e20980a8 libs/vkd3d-shader: Translate dot product instructions. 2017-06-20 17:09:39 +02:00
JĂłzef Kucia
ddcc403f73 libs/vkd3d-shader: Add missing vkd3d_free() call.
Fixes commit 0761568225.
2017-06-20 14:59:25 +02:00
JĂłzef Kucia
c9a98c7a13 libs/vkd3d-shader: Add support for GLSL.std.450 extended instruction set. 2017-06-20 14:59:25 +02:00
JĂłzef Kucia
801b4159de libs/vkd3d-shader: Translate some ALU instructions. 2017-06-20 14:14:44 +02:00
JĂłzef Kucia
2c06f47432 tests: Remove fragment shader SPIR-V code from init_draw_test_context_(). 2017-06-20 13:34:44 +02:00
JĂłzef Kucia
2b1396e7e4 libs/vkd3d-shader: Translate mov instruction. 2017-06-20 13:34:44 +02:00
JĂłzef Kucia
18e952aaf4 libs/vkd3d-shader: Translate dcl_output_siv instruction. 2017-06-20 13:34:44 +02:00
JĂłzef Kucia
0761568225 libs/vkd3d-shader: Translate dcl_output instruction. 2017-06-20 13:34:44 +02:00
JĂłzef Kucia
d073652db9 libs/vkd3d-shader: Translate dcl_temps instruction.
"symbol_table" is possibly not the most fitting name.
2017-06-20 13:34:44 +02:00
JĂłzef Kucia
8b416514c1 tests: Remove SPIR-V shader code from test_create_pipeline_state(). 2017-06-19 19:49:11 +02:00
JĂłzef Kucia
c270d9a859 libs/vkd3d: Accept DXBC shaders. 2017-06-19 19:49:11 +02:00
JĂłzef Kucia
d32134da48 libs/vkd3d-shader: Implement SM5 dcl_thread_group instruction. 2017-06-19 19:49:11 +02:00
JĂłzef Kucia
1a5c6eaca1 build: Add LICENSE file to distribution. 2017-06-19 18:33:39 +02:00
JĂłzef Kucia
c151662ded Update copyright info. 2017-06-19 18:24:39 +02:00
JĂłzef Kucia
6f6d5c7850 libs/vkd3d: Use depth aspect mask for DXGI_FORMAT_D16_UNORM. 2017-06-19 18:19:19 +02:00
JĂłzef Kucia
786a31ca4e libs/vkd3d-shader: Use libSPIRV-Tools for tracing and validating generated SPIR-V shaders.
SPIRV-Tools are an optional dependency.

We link with stdc++ because libSPIRV-Tools is a static library written
in C++.
2017-06-19 18:05:53 +02:00
JĂłzef Kucia
dd31e5e918 libs/vkd3d-shader: Generate SPIR-V modules. 2017-06-19 18:05:53 +02:00
JĂłzef Kucia
eff8428c71 libs/vkd3d-common: Move vkd3d_array_reserve() from libvkd3d. 2017-06-19 18:05:53 +02:00
JĂłzef Kucia
465fe54a9b libs/vkd3d-shader: Implement vkd3d_shader_compile_dxbc(). 2017-06-19 18:05:53 +02:00
JĂłzef Kucia
1f65d4ccc1 libs/vkd3d-shader: Add stub for SPIR-V generator. 2017-06-19 18:05:53 +02:00
JĂłzef Kucia
97c7bc0a18 libs/vkd3d-common: Provide access to current debug level. 2017-06-19 18:05:53 +02:00
Henri Verbeet
5808c280f7 libs/vkd3d: Add DXGI_FORMAT_D16_UNORM. 2017-06-19 14:44:48 +02:00
Henri Verbeet
fc67a3b7fa libs/vkd3d: Add DXGI_FORMAT_R8G8B8A8_UNORM_SRGB. 2017-06-19 14:44:41 +02:00
Henri Verbeet
d029dc995c libs/vkd3d: Add DXGI_FORMAT_R8_UINT. 2017-06-19 14:44:33 +02:00
Henri Verbeet
79d731de8a libs/vkd3d: Add DXGI_FORMAT_R16_FLOAT. 2017-06-19 14:44:19 +02:00
Henri Verbeet
70dbeed14c libs/vkd3d: Add DXGI_FORMAT_R8_UNORM. 2017-06-19 14:44:07 +02:00
Henri Verbeet
00f514cf1c libs/vkd3d: Add DXGI_FORMAT_R16_UNORM. 2017-06-19 14:43:55 +02:00
Henri Verbeet
07f12c2947 libs/vkd3d: Add DXGI_FORMAT_R16G16B16A16_FLOAT. 2017-06-19 14:43:45 +02:00
JĂłzef Kucia
ec4ab656df libs/vkd3d: Add trailing newline to WARN() message in d3d12_command_list_begin_render_pass(). 2017-06-16 23:29:37 +02:00
JĂłzef Kucia
e0c9692c5e build: Check for SPIR-V headers. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
4ab5ced2fc libs/vkd3d-shader: Import DXBC parser from Wine d3d11 implementation. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
7be0b64a0f libs/vkd3d-common: Add debugstr_a() function. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
31c6bfe24f libs/vkd3d-shader: Import SM4+ bytecode parser from Wine. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
ad465999ad build: Enable POSIX.1-2008 functionality.
For strnlen().
2017-06-16 22:38:21 +02:00
JĂłzef Kucia
fe13e35f72 programs/vkd3d-compiler: Add program.
Mostly for testing shader translation.
2017-06-16 22:38:21 +02:00
JĂłzef Kucia
93458c8933 libs/vkd3d-shader: Add library. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
995720f5f5 include: Add align() helper function. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
ba713c9b37 include: Drop wine prefix from red-black tree functions. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
69e278e754 include: Import red-black tree implementation from Wine. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
956c8b03cf include: Import linked list implementation from Wine. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
0e55ba8933 libs/vkd3d-common: Use ARRAY_SIZE() macro. 2017-06-16 22:38:21 +02:00
JĂłzef Kucia
84889646f6 Update license to LGPL v2.1. 2017-06-16 22:11:21 +02:00
Henri Verbeet
755e368f6b build: Explicitly link the demos with libvulkan.
Since demos/demo_xcb.h uses vkCreateXcbSurfaceKHR(). At least some (2.4.6)
versions of libtool seem to pull libvulkan in automatically through libvkd3d,
but mine (2.4.2) doesn't.
2017-06-15 16:16:09 +02:00
Henri Verbeet
f604f25aba libs/vkd3d: Add DXGI_FORMAT_R11G11B10_FLOAT. 2017-06-15 15:16:07 +02:00
Henri Verbeet
39d95dcd7f libs/vkd3d: Add DXGI_FORMAT_R10G10B10A2_UNORM. 2017-06-15 15:15:57 +02:00
Henri Verbeet
39e8b8de25 libs/vkd3d: Add DXGI_FORMAT_R32G32_FLOAT. 2017-06-15 15:15:46 +02:00
Henri Verbeet
09f52882ae include: Add the ID3D12CommandSignature interface. 2017-06-15 15:15:36 +02:00
Henri Verbeet
09ff8b57c1 include: Fix the IDXGISwapChain::ResizeBuffers() arguments. 2017-06-15 15:15:26 +02:00
JĂłzef Kucia
f8c42d3148 build: Do not link everything with libvulkan. 2017-06-15 14:50:37 +02:00
Henri Verbeet
a5b78eea21 include: Fix D3D12_SAMPLER_DESC. 2017-06-12 18:16:05 +02:00
Henri Verbeet
3f05f65dbc build: Avoid underlinking. 2017-06-12 18:16:05 +02:00
JĂłzef Kucia
6151119eef tests: Simplify get_refcount(). 2017-05-28 11:45:50 +02:00
JĂłzef Kucia
a680fdd91b libs/vkd3d: Implement d3d12_command_list_OMSetStencilRef(). 2017-03-05 22:23:37 +01:00
292 changed files with 145629 additions and 6913 deletions

9
.gitignore vendored
View File

@@ -3,12 +3,16 @@ autom4te.cache
config.log config.log
config.status config.status
configure configure
doc
Doxyfile
libtool libtool
Makefile Makefile
Makefile.in Makefile.in
test-suite.log test-suite.log
/vkd3d-compiler
/vkd3d-dxbc
vkd3d-*.tar.gz vkd3d-*.tar.xz
*.exe *.exe
*.la *.la
@@ -16,7 +20,10 @@ vkd3d-*.tar.gz
*.log *.log
*.o *.o
*.pc *.pc
*.tab.c
*.tab.h
*.trs *.trs
*.yy.c
*~ *~
.deps .deps

7
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,7 @@
stages:
- image
- build
include:
- local: "/gitlab/image.yml"
- local: "/gitlab/build.yml"

103
ANNOUNCE Normal file
View File

@@ -0,0 +1,103 @@
The Wine team is proud to announce that release 1.9 of vkd3d, the Direct3D to
Vulkan translation library, is now available.
This release contains improvements that are listed in the release notes below.
The main highlights are:
- Yet more improvements to the HLSL compiler.
- A new utility to inspect the contents of DXBC blobs.
- Miscellaneous bug fixes.
The source is available from the following location:
https://dl.winehq.org/vkd3d/source/vkd3d-1.9.tar.xz
The current source can also be pulled directly from the git repository:
https://gitlab.winehq.org/wine/vkd3d.git
Vkd3d is available thanks to the work of multiple people. See the file AUTHORS
for the complete list.
----------------------------------------------------------------
What's new in vkd3d 1.9
=======================
*** libvkd3d
- Copying between depth/stencil and colour formats in
ID3D12GraphicsCommandList::CopyResource() is supported.
- The ID3D12Fence1 interface is supported.
*** libvkd3d-shader
- vkd3d_shader_scan() supports retrieving descriptor information for `d3dbc'
shaders. This is one of the requirements for eventual SPIR-V generation from
`d3dbc' sources.
- New features for the HLSL source type:
- Support for the following intrinsic functions:
- clip()
- ddx_coarse() and ddy_coarse()
- ddx_fine() and ddy_fine()
- tex1D(), tex2D(), texCUBE(), and tex3D()
- Constant folding support for more expression types. In particular:
- comparison operators
- floating-point min() and max()
- logical `and' and `or'
- dot products
- square roots
- logarithms
- Support for multi-sample texture object declarations without explicit
sample counts in shader model 4.1 and later shaders.
- Support for using constant expressions as sample counts in multi-sample
texture object declarations.
- Support for variable initialisers using variables declared earlier in the
same declaration list. E.g., `float a = 1, b = a, c = b + 1;'.
- The GetDimensions() texture object method is implemented.
- Matrix swizzles are implemented.
- Parser support for if-statement attributes like `[branch]' and
`[flatten]'.
- Support for the `inline' function modifier.
- Previously, vkd3d_shader_compile() would in some cases return VKD3D_OK
despite compilation failing when targeting legacy Direct3D bytecode. These
cases have been fixed.
- Various HLSL preprocessor fixes for edge cases related to stringification.
- SPIR-V target support for the `linear noperspective centroid' input
interpolation mode.
- New interfaces:
- The vkd3d_shader_scan_signature_info structure extends the
vkd3d_shader_compile_info structure, and can be used to retrieve
descriptions of `dxbc-tpf' and `d3dbc' shader inputs and outputs.
- vkd3d_shader_free_scan_signature_info() is used to free
vkd3d_shader_scan_signature_info structures.
- The VKD3D_SHADER_COMPILE_OPTION_PACK_MATRIX_ORDER compile option can be
used to specify the default matrix packing order for HLSL sources.
- The vkd3d_shader_varying_map_info structure extends the
vkd3d_shader_compile_info structure, and can be used to specify a mapping
between the outputs of a shader stage and the inputs of the next shader
stage.
- vkd3d_shader_build_varying_map() is used to build a mapping between the
outputs of a shader stage and the inputs of the next shader stage.
- The VKD3D_SHADER_DESCRIPTOR_INFO_FLAG_RAW_BUFFER flag returned as part of
the vkd3d_shader_descriptor_info structure indicates the descriptor refers
to a byte-addressed (`raw') buffer resource.
*** vkd3d-compiler
- The `--matrix-storage-order' option can used to specify the default matrix
storage order for HLSL sources.
*** vkd3d-dxbc
- vkd3d-dxbc is a new utility that can be used to inspect the contents of DXBC
blobs.

33
AUTHORS
View File

@@ -1,2 +1,35 @@
Alexandre Julliard
Alistair Leslie-Hughes
Andrew Eikum
Andrey Gusev
Atharva Nimbalkar
Biswapriyo Nath
Brendan Shanks
Chip Davis
Conor McCarthy
David Gow
Derek Lesho
Ethan Lee
Evan Tang
Fabian Maurer
Francisco Casas
Francois Gouget
Giovanni Mascellani
Hans-Kristian Arntzen
Henri Verbeet Henri Verbeet
Isabella Bosia
Jactry Zeng
Jan Sikorski
Joshua Ashton
JĂłzef Kucia JĂłzef Kucia
Martin Storsjö
Matteo Bruni
Nikolay Sivov
Philip Rebohle
Rémi Bernon
Robin Kertels
Stefan Dösinger
Sven Hesse
Vinson Lee
Zebediah Figura
Zhiyi Zhang

30
COPYING
View File

@@ -1,20 +1,16 @@
Copyright 2016 JĂłzef Kucia for CodeWeavers Copyright 2016-2023 the Vkd3d project authors (see the file AUTHORS for a
Copyright 2016 Henri Verbeet for CodeWeavers complete list)
Permission is hereby granted, free of charge, to any person obtaining a copy Vkd3d is free software; you can redistribute it and/or modify it under
of this software and associated documentation files (the "Software"), to deal the terms of the GNU Lesser General Public License as published by the
in the Software without restriction, including without limitation the rights Free Software Foundation; either version 2.1 of the License, or (at
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell your option) any later version.
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all This library is distributed in the hope that it will be useful, but
copies or substantial portions of the Software. WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR You should have received a copy of the GNU Lesser General Public
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, License along with this library; if not, write to the Free Software
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA, 02110-1301 USA.
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

17
Doxyfile.in Normal file
View File

@@ -0,0 +1,17 @@
# Doxyfile 1.8.18
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = @PACKAGE_NAME@
PROJECT_NUMBER = @PACKAGE_VERSION@
PROJECT_BRIEF = "The vkd3d 3D Graphics Library"
OUTPUT_DIRECTORY = doc
JAVADOC_AUTOBRIEF = YES
OPTIMIZE_OUTPUT_FOR_C = YES
EXTRACT_STATIC = YES
INPUT = @srcdir@/include/vkd3d.h \
@srcdir@/include/vkd3d_shader.h \
@srcdir@/include/vkd3d_types.h \
@srcdir@/include/vkd3d_utils.h
EXCLUDE_SYMBOLS = VKD3D_FORCE_32_BIT_ENUM

502
LICENSE Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

89
README
View File

@@ -4,3 +4,92 @@ The vkd3d 3D Graphics Library
Vkd3d is a 3D graphics library built on top of Vulkan. It has an API very Vkd3d is a 3D graphics library built on top of Vulkan. It has an API very
similar, but not identical, to Direct3D 12. similar, but not identical, to Direct3D 12.
==============
Building vkd3d
==============
Vkd3d depends on SPIRV-Headers and Vulkan-Headers (>= 1.2.139).
Vkd3d generates some of its headers from IDL files. If you are using the
release tarballs, then these headers are pre-generated and are included. If
you are building from git, then they will be generated at build-time using
widl. By default, vkd3d will use the widl found in `PATH'. If widl is not
available or is not recent (>= 3.21), then you can build Wine with `make
tools/widl/widl' to avoid building all of Wine. You can then point vkd3d's
configure at that widl binary with `WIDL="/path/to/widl"'.
For release builds, you may want to define NDEBUG. If you do not need debug log
messages, you may also consider VKD3D_NO_TRACE_MESSAGES and
VKD3D_NO_DEBUG_MESSAGES. For example, you can pass `CPPFLAGS="-DNDEBUG
-DVKD3D_NO_TRACE_MESSAGES"' to configure.
===========
Using vkd3d
===========
Vkd3d can be used by projects that target Direct3D 12 as a drop-in replacement
at build-time with some modest source modifications.
If vkd3d is available when building Wine, then Wine will use it to support
Direct3D 12 applications.
=====================
Environment variables
=====================
Most of the environment variables used by vkd3d are for debugging purposes. The
environment variables are not considered a part of API and might be changed or
removed in the future versions of vkd3d.
Some of debug variables are lists of elements. Elements must be separated by
commas or semicolons.
* NO_COLOR - this is an alias of NO_COLOUR.
* NO_COLOUR - when set, vkd3d-compiler and vkd3d-dxbc will default to
monochrome output, even when the output supports colour.
* VKD3D_CONFIG - a list of options that change the behavior of libvkd3d.
* virtual_heaps - Create descriptors for each D3D12 root signature
descriptor range instead of entire descriptor heaps. Useful when push
constant or bound descriptor limits are exceeded.
* vk_debug - enables Vulkan debug extensions.
* VKD3D_DEBUG - controls the debug level for log messages produced by
libvkd3d. Accepts the following values: none, err, fixme, warn, trace.
* VKD3D_VULKAN_DEVICE - a zero-based device index. Use to force the selected
Vulkan device.
* VKD3D_DISABLE_EXTENSIONS - a list of Vulkan extensions that libvkd3d should
not use even if available.
* VKD3D_SHADER_DEBUG - controls the debug level for log messages produced by
libvkd3d-shader. See VKD3D_DEBUG for accepted values.
* VKD3D_SHADER_DUMP_PATH - path where shader bytecode is dumped.
* VKD3D_TEST_DEBUG - enables additional debug messages in tests. Set to 0, 1
or 2.
* VKD3D_TEST_FILTER - a filter string. Only the tests whose names matches the
filter string will be run, e.g. VKD3D_TEST_FILTER=clear_render_target.
Useful for debugging or developing new tests.
* VKD3D_TEST_PLATFORM - can be set to "wine", "windows" or "other". The test
platform controls the behavior of todo(), todo_if(), bug_if() and broken()
conditions in tests.
* VKD3D_TEST_BUG - set to 0 to disable bug_if() conditions in tests.
================
Developing vkd3d
================
Development of vkd3d happens on the Wine GitLab instance
(https://gitlab.winehq.org/wine/vkd3d/). Contributors are encouraged
to submit their patches using the merge request tool.
Each merge request is automatically tested with the GitLab CI
system. See gitlab/README in the Git tree for more details.

View File

@@ -1,15 +1,25 @@
AC_PREREQ([2.69]) AC_PREREQ([2.69])
AC_INIT([vkd3d], 0.0.1) AC_INIT([vkd3d],[1.9])
AC_CONFIG_AUX_DIR([bin]) AC_CONFIG_AUX_DIR([bin])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_LIBOBJ_DIR([portable])
AC_CONFIG_HEADERS(include/config.h) AC_CONFIG_HEADERS(include/config.h)
AC_ARG_VAR([WIDL], [widl IDL compiler]) AC_ARG_VAR([WIDL], [widl IDL compiler])
AC_ARG_VAR([GLSLANG], [glslangValidator GLSL compiler])
AC_ARG_VAR([CROSSCC32], [32-bit Windows cross compiler]) AC_ARG_VAR([CROSSCC32], [32-bit Windows cross compiler])
AC_ARG_VAR([CROSSCC64], [64-bit Windows cross compiler]) AC_ARG_VAR([CROSSCC64], [64-bit Windows cross compiler])
AC_ARG_WITH([ncurses], AS_HELP_STRING([--with-ncurses], [Build with the ncurses library (default: test)]))
AC_ARG_WITH([spirv-tools], AS_HELP_STRING([--with-spirv-tools],
[Build with SPIRV-Tools library (default: disabled)]))
AC_ARG_WITH([xcb], AS_HELP_STRING([--with-xcb], [Build with XCB library (default: test)]))
AC_ARG_ENABLE([demos],
AS_HELP_STRING([--enable-demos], [Build demo programs (default: disabled)]),,
[enable_demos=no])
AC_ARG_ENABLE([tests],
AS_HELP_STRING([--enable-tests], [Build tests (default: enabled)]),,
[enable_tests=yes])
AC_USE_SYSTEM_EXTENSIONS
dnl Check for progs dnl Check for progs
AM_PROG_AR AM_PROG_AR
@@ -17,67 +27,170 @@ AC_PROG_CC
AM_PROG_CC_C_O AM_PROG_CC_C_O
AC_PROG_SED AC_PROG_SED
AC_PROG_MKDIR_P AC_PROG_MKDIR_P
AC_CHECK_PROG([WIDL], [widl], [widl], [no]) VKD3D_PROG_WIDL(3, 21)
AS_IF([test "x$WIDL" = "xno"], [AC_MSG_WARN([widl is required to build header files.])]) AS_IF([test "x$WIDL" = "xno"], [AC_MSG_WARN([widl is required to build header files.])])
AC_CHECK_PROG([GLSLANG], [glslangValidator], [glslangValidator], [no])
AS_IF([test "x$GLSLANG" = "xno"], [AC_MSG_ERROR([glslangValidator is required to compile shaders.])]) AC_CHECK_PROGS([FLEX], [flex], [none])
AS_IF([test "$FLEX" = "none"], [AC_MSG_ERROR([no suitable flex found. Please install the 'flex' package.])])
AC_ARG_VAR([LFLAGS], [extra flags for flex])
AC_CHECK_PROGS([BISON], [bison], [none])
AS_IF([test "$BISON" = "none"], [AC_MSG_ERROR([no suitable bison found. Please install the 'bison' package.])])
AC_ARG_VAR([YFLAGS], [extra flags for bison])
DX_PS_FEATURE([OFF])
DX_INIT_DOXYGEN([vkd3d], [Doxyfile], [doc])
AC_CONFIG_FILES([Doxyfile])
AM_INIT_AUTOMAKE([1.11 foreign silent-rules subdir-objects no-dist-gzip dist-xz -Wall -Werror]) AM_INIT_AUTOMAKE([1.11 foreign silent-rules subdir-objects no-dist-gzip dist-xz -Wall -Werror])
AM_MAINTAINER_MODE([enable]) AM_MAINTAINER_MODE([enable])
AM_SILENT_RULES([yes]) AM_SILENT_RULES([yes])
LT_PREREQ([2.4.2]) LT_PREREQ([2.4.2])
LT_INIT LT_INIT([win32-dll])
gl_LD_VERSION_SCRIPT
dnl Check compiler specific flags dnl Check compiler specific flags
AC_SUBST([VKD3D_CFLAGS], [""]) AC_SUBST([VKD3D_CFLAGS])
AS_IF([test "x${GCC}" = "xyes"], AS_IF([test "x${GCC}" = "xyes"],
[VKD3D_CFLAGS="-Wall -pipe" [VKD3D_CFLAGS="-Wall -pipe"
VKD3D_CHECK_CFLAGS([-std=c99]) VKD3D_CHECK_CFLAGS([-std=c99])
VKD3D_CHECK_CFLAGS([-fvisibility=hidden])
VKD3D_CHECK_CFLAGS([-Wdeclaration-after-statement]) VKD3D_CHECK_CFLAGS([-Wdeclaration-after-statement])
VKD3D_CHECK_CFLAGS([-Wimplicit-fallthrough])
VKD3D_CHECK_CFLAGS([-Winit-self])
VKD3D_CHECK_CFLAGS([-Wmissing-prototypes]) VKD3D_CHECK_CFLAGS([-Wmissing-prototypes])
VKD3D_CHECK_CFLAGS([-Wunused-but-set-parameter]) VKD3D_CHECK_CFLAGS([-Wunused-but-set-parameter])
VKD3D_CHECK_CFLAGS([-Wvla])]) VKD3D_CHECK_CFLAGS([-Wvla])
VKD3D_CHECK_CFLAGS([-Wpointer-arith])
VKD3D_CHECK_CFLAGS([-Wl,--no-undefined])])
dnl Check for cross compilers dnl Check for cross compilers
VKD3D_CHECK_MINGW32_PROG([CROSSCC32], [CROSSTARGET32], [no]) VKD3D_CHECK_MINGW32_PROG([CROSSCC32], [CROSSTARGET32], [no])
VKD3D_CHECK_MINGW64_PROG([CROSSCC64], [CROSSTARGET64], [no]) VKD3D_CHECK_MINGW64_PROG([CROSSCC64], [CROSSTARGET64], [no])
dnl Check for headers dnl Check for headers
AC_CHECK_HEADERS([pthread.h vulkan/vulkan.h]) AC_CHECK_HEADERS([dlfcn.h \
AS_IF([test "x$ac_cv_header_pthread_h" != "xyes"], [AC_MSG_ERROR([pthread.h not found.])]) vulkan/vulkan.h \
vulkan/spirv.h vulkan/GLSL.std.450.h \
spirv/unified1/spirv.h spirv/unified1/GLSL.std.450.h])
AS_IF([test "x$ac_cv_header_vulkan_vulkan_h" != "xyes"], [AC_MSG_ERROR([vulkan.h not found.])]) AS_IF([test "x$ac_cv_header_vulkan_vulkan_h" != "xyes"], [AC_MSG_ERROR([vulkan.h not found.])])
AS_IF([test "x$ac_cv_header_spirv_unified1_spirv_h" != "xyes" \
-a "x$ac_cv_header_vulkan_spirv_h" != "xyes"],
[AC_MSG_ERROR([spirv.h not found.])])
AS_IF([test "x$ac_cv_header_spirv_unified1_GLSL_std_450_h" != "xyes" \
-a "x$ac_cv_header_vulkan_GLSL_std_450_h" != "xyes"],
[AC_MSG_ERROR([GLSL.std.450.h not found.])])
VKD3D_CHECK_VULKAN_HEADER_VERSION([139], [AC_MSG_ERROR([Vulkan headers are too old, 1.2.139 is required.])])
AC_CHECK_DECL([SpvCapabilityDemoteToHelperInvocationEXT],, [AC_MSG_ERROR([SPIR-V headers are too old.])], [
#ifdef HAVE_SPIRV_UNIFIED1_SPIRV_H
# include "spirv/unified1/spirv.h"
#else
# include "vulkan/spirv.h"
#endif])
AC_CHECK_DECLS([program_invocation_name],,,[#include <errno.h>])
dnl Check for libraries dnl Check for libraries
m4_ifdef([PKG_PROG_PKG_CONFIG], [PKG_PROG_PKG_CONFIG], [m4_fatal([pkg-config autoconf macros not found.])]) m4_ifdef([PKG_PROG_PKG_CONFIG], [PKG_PROG_PKG_CONFIG], [m4_fatal([pkg-config autoconf macros not found.])])
AC_ARG_VAR([PTHREAD_LIBS], [linker flags for pthreads]) AC_CHECK_LIB([m], [ceilf])
AC_CHECK_LIB([pthread], [pthread_create],
[AC_SUBST(PTHREAD_LIBS, "-lpthread")],
[AC_MSG_ERROR(libpthread not found.)])
AC_CHECK_LIB([vulkan], [vkGetInstanceProcAddr], [], [AC_MSG_ERROR([libvulkan not found.])]) AC_SUBST([DL_LIBS])
AC_CHECK_LIB([dl], [dlopen],
[DL_LIBS="-ldl"],
[AS_IF([test "$ac_cv_header_dlfnc_h" = "xyes"], [AC_MSG_ERROR([libdl not found.])])])
PKG_CHECK_MODULES([XCB], [xcb xcb-keysyms]) case $host_os in
mingw32*) ;;
*) AC_CHECK_HEADERS([pthread.h])
AS_IF([test "x$ac_cv_header_pthread_h" != "xyes"], [AC_MSG_ERROR([pthread.h not found.])])
AC_ARG_VAR([PTHREAD_LIBS], [linker flags for pthreads])
VKD3D_CHECK_PTHREAD
VKD3D_CHECK_PTHREAD_SETNAME_NP
;;
esac
AC_ARG_VAR([SONAME_LIBVULKAN], [shared object name for the Vulkan library])
AC_ARG_VAR([VULKAN_LIBS], [linker flags for the Vulkan library])
AS_IF([test "x$SONAME_LIBVULKAN" = "x"],
[VKD3D_CHECK_VULKAN],
[AC_DEFINE_UNQUOTED([SONAME_LIBVULKAN],["$SONAME_LIBVULKAN"],[Define to the shared object name of the Vulkan library.])])
AS_IF([test "x$with_ncurses" != "xno"],
[PKG_CHECK_MODULES([NCURSES], [ncurses],
[AC_DEFINE([HAVE_NCURSES], [1], [Define to 1 if you have ncurses.]) with_ncurses=yes],
[with_ncurses=no])])
AS_IF([test "x$with_spirv_tools" = "xyes"],
[PKG_CHECK_MODULES([SPIRV_TOOLS], [SPIRV-Tools-shared],
[AC_DEFINE([HAVE_SPIRV_TOOLS], [1], [Define to 1 if you have SPIRV-Tools.])])],
[with_spirv_tools=no])
HAVE_XCB=no
AS_IF([test "x$with_xcb" != "xno"],
[PKG_CHECK_MODULES([XCB], [xcb xcb-event xcb-icccm xcb-keysyms],
[AC_DEFINE([HAVE_XCB], [1], [Define to 1 if you have libxcb.])
HAVE_XCB=yes],
[HAVE_XCB=no])])
dnl Check for functions dnl Check for functions
VKD3D_CHECK_SYNC_ADD_AND_FETCH_FUNC VKD3D_CHECK_FUNC([HAVE_BUILTIN_CLZ], [__builtin_clz], [__builtin_clz(0)])
VKD3D_CHECK_SYNC_SUB_AND_FETCH_FUNC VKD3D_CHECK_FUNC([HAVE_BUILTIN_POPCOUNT], [__builtin_popcount], [__builtin_popcount(0)])
VKD3D_CHECK_FUNC([HAVE_BUILTIN_ADD_OVERFLOW], [__builtin_add_overflow], [__builtin_add_overflow(0, 0, (int *)0)])
VKD3D_CHECK_FUNC([HAVE_SYNC_ADD_AND_FETCH], [__sync_add_and_fetch], [__sync_add_and_fetch((int *)0, 0)])
VKD3D_CHECK_FUNC([HAVE_SYNC_SUB_AND_FETCH], [__sync_sub_and_fetch], [__sync_sub_and_fetch((int *)0, 0)])
VKD3D_CHECK_FUNC([HAVE_SYNC_BOOL_COMPARE_AND_SWAP], [__sync_bool_compare_and_swap], [__sync_bool_compare_and_swap((int *)0, 0, 0)])
VKD3D_CHECK_FUNC([HAVE_ATOMIC_EXCHANGE_N], [__atomic_exchange_n], [__atomic_exchange_n((int *)0, 0, 0)])
VKD3D_CHECK_FUNC([HAVE_GETTID], [gettid], [gettid()])
AM_CONDITIONAL([HAS_CROSSTARGET32], [test "x$CROSSTARGET32" != "xno"]) dnl Makefiles
AM_CONDITIONAL([HAS_CROSSTARGET64], [test "x$CROSSTARGET64" != "xno"]) case $host_os in
mingw32*)
AC_SUBST([DEMO_LIBS],["-ld3d12 -ldxgi -lgdi32"])
AC_SUBST([DEMO_CFLAGS],["-municode"])
;;
*) AS_IF([test "x$enable_demos" = "xyes" -a "x$HAVE_XCB" != "xyes"],
[AC_MSG_ERROR([libxcb is required for demos.])])
AC_SUBST([DEMO_LIBS],[$XCB_LIBS])
AC_SUBST([DEMO_CFLAGS],[$XCB_CFLAGS])
;;
esac
AM_CONDITIONAL([BUILD_DEMOS], [test "x$enable_demos" = "xyes"])
AM_CONDITIONAL([BUILD_DOC], [test $DX_FLAG_doc = 1])
AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_tests" != "xno"])
AM_CONDITIONAL([HAVE_WIDL], [test "x$WIDL" != "xno"])
AM_CONDITIONAL([HAVE_CROSSTARGET32], [test "x$CROSSTARGET32" != "xno"])
AM_CONDITIONAL([HAVE_CROSSTARGET64], [test "x$CROSSTARGET64" != "xno"])
AC_CONFIG_FILES([Makefile]) AC_CONFIG_FILES([Makefile])
AC_OUTPUT AC_OUTPUT
dnl Output configuration summary dnl Output configuration summary
AS_IF([test "x$CROSSTARGET32" != "xno" -o "x$CROSSTARGET64" != "xno"], AS_IF([test "x$CROSSTARGET32" != "xno" -o "x$CROSSTARGET64" != "xno"],
[HAVE_CROSSTEST=yes], [HAVE_CROSSTEST=no]) [HAVE_CROSSTARGET=yes], [HAVE_CROSSTARGET=no])
AS_IF([test $DX_FLAG_doc = 1], [HAVE_DOCS=yes], [HAVE_DOCS=no])
AS_IF([test "x$enable_demos" != "xyes" -a "x$enable_tests" = "xno"], [CROSSTARGET64=no CROSSTARGET32=no])
AS_ECHO([" AS_ECHO(["
Configuration summary for $PACKAGE $VERSION Configuration summary for $PACKAGE $VERSION
Building crosstests: ${HAVE_CROSSTEST}"]) widl: ${WIDL}
Have ncurses: ${with_ncurses}
Have SPIRV-Tools: ${with_spirv_tools}
Have xcb: ${HAVE_XCB}
Building demos: ${enable_demos}
Building tests: ${enable_tests}
Building documentation: ${HAVE_DOCS}
"])
AS_IF([test "x$enable_demos" = "xyes"], [AS_ECHO([" Cross-compiling demos: ${HAVE_CROSSTARGET}"])])
AS_IF([test "x$enable_tests" != "xno"], [AS_ECHO([" Cross-compiling tests: ${HAVE_CROSSTARGET}"])])
AS_IF([test "x$CROSSTARGET32" != "xno"], [AS_ECHO([" Using 32-bit cross compiler: $CROSSCC32"])]) AS_IF([test "x$CROSSTARGET32" != "xno"], [AS_ECHO([" Using 32-bit cross compiler: $CROSSCC32"])])
AS_IF([test "x$CROSSTARGET64" != "xno"], [AS_ECHO([" Using 64-bit cross compiler: $CROSSCC64"])]) AS_IF([test "x$CROSSTARGET64" != "xno"], [AS_ECHO([" Using 64-bit cross compiler: $CROSSCC64"])])
AS_ECHO([]) AS_ECHO([])

View File

@@ -1,23 +1,19 @@
/* /*
* Copyright 2016 Henri Verbeet for CodeWeavers * Copyright 2016 Henri Verbeet for CodeWeavers
* *
* Permission is hereby granted, free of charge, to any person obtaining a * This library is free software; you can redistribute it and/or
* copy of this software and associated documentation files (the "Software"), * modify it under the terms of the GNU Lesser General Public
* to deal in the Software without restriction, including without limitation * License as published by the Free Software Foundation; either
* the rights to use, copy, modify, merge, publish, distribute, sublicense, * version 2.1 of the License, or (at your option) any later version.
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be included in * This library is distributed in the hope that it will be useful,
* all copies or substantial portions of the Software. * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * You should have received a copy of the GNU Lesser General Public
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * License along with this library; if not, write to the Free Software
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
/* Hack for MinGW-w64 headers. /* Hack for MinGW-w64 headers.
@@ -40,7 +36,7 @@
#include <vkd3d_windows.h> #include <vkd3d_windows.h>
#define WIDL_C_INLINE_WRAPPERS #define WIDL_C_INLINE_WRAPPERS
#define COBJMACROS #define COBJMACROS
#include <d3d12.h> #include <vkd3d_d3d12.h>
#include <inttypes.h> #include <inttypes.h>
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*x)) #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*x))
@@ -127,9 +123,24 @@ static inline void demo_blend_desc_init_default(D3D12_BLEND_DESC *desc)
} }
} }
static inline HRESULT demo_create_root_signature(ID3D12Device *device,
const D3D12_ROOT_SIGNATURE_DESC *desc, ID3D12RootSignature **signature)
{
ID3DBlob *blob;
HRESULT hr;
if (FAILED(hr = D3D12SerializeRootSignature(desc, D3D_ROOT_SIGNATURE_VERSION_1, &blob, NULL)))
return hr;
hr = ID3D12Device_CreateRootSignature(device, 0, ID3D10Blob_GetBufferPointer(blob),
ID3D10Blob_GetBufferSize(blob), &IID_ID3D12RootSignature, (void **)signature);
ID3D10Blob_Release(blob);
return hr;
}
#ifdef _WIN32 #ifdef _WIN32
#include "demo_win32.h" #include "demo_win32.h"
#else #else
#include <vkd3d_utils.h> #define INFINITE VKD3D_INFINITE
#include "demo_xcb.h" #include "demo_xcb.h"
#endif #endif

View File

@@ -2,26 +2,23 @@
* Copyright 2016 JĂłzef Kucia for CodeWeavers * Copyright 2016 JĂłzef Kucia for CodeWeavers
* Copyright 2016 Henri Verbeet for CodeWeavers * Copyright 2016 Henri Verbeet for CodeWeavers
* *
* Permission is hereby granted, free of charge, to any person obtaining a * This library is free software; you can redistribute it and/or
* copy of this software and associated documentation files (the "Software"), * modify it under the terms of the GNU Lesser General Public
* to deal in the Software without restriction, including without limitation * License as published by the Free Software Foundation; either
* the rights to use, copy, modify, merge, publish, distribute, sublicense, * version 2.1 of the License, or (at your option) any later version.
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be included in * This library is distributed in the hope that it will be useful,
* all copies or substantial portions of the Software. * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * You should have received a copy of the GNU Lesser General Public
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * License along with this library; if not, write to the Free Software
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
#include <dxgi1_4.h> #include <vkd3d_dxgi1_4.h>
#include <vkd3d_d3dcompiler.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
@@ -29,10 +26,6 @@
struct demo struct demo
{ {
HMODULE d3dcompiler;
HRESULT (WINAPI *compile_from_file)(const WCHAR *filename, const void *defines, void *include,
const char *entry_point, const char *profile, UINT flags1, UINT flags2,
ID3DBlob **code, ID3DBlob **errors);
size_t window_count; size_t window_count;
bool quit; bool quit;
@@ -202,11 +195,6 @@ static inline bool demo_init(struct demo *demo, void *user_data)
{ {
WNDCLASSEXW wc; WNDCLASSEXW wc;
if (!(demo->d3dcompiler = LoadLibraryW(L"d3dcompiler_47")))
return false;
if (!(demo->compile_from_file = (void *)GetProcAddress(demo->d3dcompiler, "D3DCompileFromFile")))
goto fail;
wc.cbSize = sizeof(wc); wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW; wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = demo_window_proc; wc.lpfnWndProc = demo_window_proc;
@@ -220,7 +208,7 @@ static inline bool demo_init(struct demo *demo, void *user_data)
wc.lpszClassName = DEMO_WINDOW_CLASS_NAME; wc.lpszClassName = DEMO_WINDOW_CLASS_NAME;
wc.hIconSm = LoadIconW(NULL, IDI_WINLOGO); wc.hIconSm = LoadIconW(NULL, IDI_WINLOGO);
if (!RegisterClassExW(&wc)) if (!RegisterClassExW(&wc))
goto fail; return false;
demo->window_count = 0; demo->window_count = 0;
demo->quit = false; demo->quit = false;
@@ -228,16 +216,11 @@ static inline bool demo_init(struct demo *demo, void *user_data)
demo->idle_func = NULL; demo->idle_func = NULL;
return true; return true;
fail:
FreeLibrary(demo->d3dcompiler);
return false;
} }
static inline void demo_cleanup(struct demo *demo) static inline void demo_cleanup(struct demo *demo)
{ {
UnregisterClassW(DEMO_WINDOW_CLASS_NAME, GetModuleHandle(NULL)); UnregisterClassW(DEMO_WINDOW_CLASS_NAME, GetModuleHandle(NULL));
FreeLibrary(demo->d3dcompiler);
} }
static inline void demo_set_idle_func(struct demo *demo, static inline void demo_set_idle_func(struct demo *demo,
@@ -329,46 +312,3 @@ static inline void demo_destroy_event(HANDLE event)
{ {
CloseHandle(event); CloseHandle(event);
} }
static inline HRESULT demo_create_root_signature(ID3D12Device *device,
const D3D12_ROOT_SIGNATURE_DESC *desc, ID3D12RootSignature **signature)
{
ID3DBlob *blob;
HRESULT hr;
if (FAILED(hr = D3D12SerializeRootSignature(desc, D3D_ROOT_SIGNATURE_VERSION_1, &blob, NULL)))
return hr;
hr = ID3D12Device_CreateRootSignature(device, 0, ID3D10Blob_GetBufferPointer(blob),
ID3D10Blob_GetBufferSize(blob), &IID_ID3D12RootSignature, (void **)signature);
ID3D10Blob_Release(blob);
return hr;
}
static inline bool demo_load_shader(struct demo *demo, const wchar_t *hlsl_name, const char *entry_point,
const char *profile, const char *spv_name, D3D12_SHADER_BYTECODE *shader)
{
ID3D10Blob *blob, *errors;
HRESULT hr;
hr = demo->compile_from_file(hlsl_name, NULL, NULL, entry_point, profile, 0, 0, &blob, &errors);
if (errors)
{
fprintf(stderr, "%.*s\n", (int)ID3D10Blob_GetBufferSize(errors), (char *)ID3D10Blob_GetBufferPointer(errors));
ID3D10Blob_Release(errors);
}
if (FAILED(hr))
return false;
shader->BytecodeLength = ID3D10Blob_GetBufferSize(blob);
if (!(shader->pShaderBytecode = malloc(shader->BytecodeLength)))
{
ID3D10Blob_Release(blob);
return false;
}
memcpy((void *)shader->pShaderBytecode, ID3D10Blob_GetBufferPointer(blob), shader->BytecodeLength);
ID3D10Blob_Release(blob);
return true;
}

View File

@@ -2,34 +2,80 @@
* Copyright 2016 JĂłzef Kucia for CodeWeavers * Copyright 2016 JĂłzef Kucia for CodeWeavers
* Copyright 2016 Henri Verbeet for CodeWeavers * Copyright 2016 Henri Verbeet for CodeWeavers
* *
* Permission is hereby granted, free of charge, to any person obtaining a * This library is free software; you can redistribute it and/or
* copy of this software and associated documentation files (the "Software"), * modify it under the terms of the GNU Lesser General Public
* to deal in the Software without restriction, including without limitation * License as published by the Free Software Foundation; either
* the rights to use, copy, modify, merge, publish, distribute, sublicense, * version 2.1 of the License, or (at your option) any later version.
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be included in * This library is distributed in the hope that it will be useful,
* all copies or substantial portions of the Software. * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * You should have received a copy of the GNU Lesser General Public
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * License along with this library; if not, write to the Free Software
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
#define VK_NO_PROTOTYPES
#define VK_USE_PLATFORM_XCB_KHR #define VK_USE_PLATFORM_XCB_KHR
#define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_9
#include "config.h"
#include <vkd3d.h> #include <vkd3d.h>
#include <vkd3d_utils.h>
#include <xcb/xcb_event.h> #include <xcb/xcb_event.h>
#include <xcb/xcb_icccm.h> #include <xcb/xcb_icccm.h>
#include <xcb/xcb_keysyms.h> #include <xcb/xcb_keysyms.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <dlfcn.h>
#include <limits.h> #include <limits.h>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdbool.h>
#include <stdio.h>
#define DECLARE_VK_PFN(name) PFN_##name name;
DECLARE_VK_PFN(vkAcquireNextImageKHR)
DECLARE_VK_PFN(vkCreateFence)
DECLARE_VK_PFN(vkCreateSwapchainKHR)
DECLARE_VK_PFN(vkCreateXcbSurfaceKHR)
DECLARE_VK_PFN(vkDestroyFence)
DECLARE_VK_PFN(vkDestroySurfaceKHR)
DECLARE_VK_PFN(vkDestroySwapchainKHR)
DECLARE_VK_PFN(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)
DECLARE_VK_PFN(vkGetPhysicalDeviceSurfaceFormatsKHR)
DECLARE_VK_PFN(vkGetPhysicalDeviceSurfaceSupportKHR)
DECLARE_VK_PFN(vkGetSwapchainImagesKHR)
DECLARE_VK_PFN(vkQueuePresentKHR)
DECLARE_VK_PFN(vkResetFences)
DECLARE_VK_PFN(vkWaitForFences)
static void load_vulkan_procs(void)
{
void *libvulkan;
if (!(libvulkan = dlopen(SONAME_LIBVULKAN, RTLD_NOW)))
{
fprintf(stderr, "Failed to load %s: %s.\n", SONAME_LIBVULKAN, dlerror());
exit(1);
}
#define LOAD_VK_PFN(name) name = (void *)dlsym(libvulkan, #name);
LOAD_VK_PFN(vkAcquireNextImageKHR)
LOAD_VK_PFN(vkCreateFence)
LOAD_VK_PFN(vkCreateSwapchainKHR)
LOAD_VK_PFN(vkCreateXcbSurfaceKHR)
LOAD_VK_PFN(vkDestroyFence)
LOAD_VK_PFN(vkDestroySurfaceKHR)
LOAD_VK_PFN(vkDestroySwapchainKHR)
LOAD_VK_PFN(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)
LOAD_VK_PFN(vkGetPhysicalDeviceSurfaceFormatsKHR)
LOAD_VK_PFN(vkGetPhysicalDeviceSurfaceSupportKHR)
LOAD_VK_PFN(vkGetSwapchainImagesKHR)
LOAD_VK_PFN(vkQueuePresentKHR)
LOAD_VK_PFN(vkResetFences)
LOAD_VK_PFN(vkWaitForFences)
}
struct demo struct demo
{ {
@@ -37,6 +83,7 @@ struct demo
xcb_atom_t wm_protocols_atom; xcb_atom_t wm_protocols_atom;
xcb_atom_t wm_delete_window_atom; xcb_atom_t wm_delete_window_atom;
xcb_key_symbols_t *xcb_keysyms; xcb_key_symbols_t *xcb_keysyms;
int screen;
struct demo_window **windows; struct demo_window **windows;
size_t windows_size; size_t windows_size;
@@ -64,7 +111,10 @@ struct demo_swapchain
VkInstance vk_instance; VkInstance vk_instance;
VkDevice vk_device; VkDevice vk_device;
VkQueue vk_queue; ID3D12CommandQueue *command_queue;
ID3D12Fence *present_fence;
unsigned long long present_count;
uint32_t current_buffer; uint32_t current_buffer;
unsigned int buffer_count; unsigned int buffer_count;
@@ -134,6 +184,20 @@ static inline struct demo_window *demo_find_window(struct demo *demo, xcb_window
return NULL; return NULL;
} }
static inline xcb_screen_t *demo_get_screen(xcb_connection_t *c, int idx)
{
xcb_screen_iterator_t iter;
iter = xcb_setup_roots_iterator(xcb_get_setup(c));
for (; iter.rem; xcb_screen_next(&iter), --idx)
{
if (!idx)
return iter.data;
}
return NULL;
}
static inline struct demo_window *demo_window_create(struct demo *demo, const char *title, static inline struct demo_window *demo_window_create(struct demo *demo, const char *title,
unsigned int width, unsigned int height, void *user_data) unsigned int width, unsigned int height, void *user_data)
{ {
@@ -143,6 +207,9 @@ static inline struct demo_window *demo_window_create(struct demo *demo, const ch
xcb_size_hints_t hints; xcb_size_hints_t hints;
xcb_screen_t *screen; xcb_screen_t *screen;
if (!(screen = demo_get_screen(demo->connection, demo->screen)))
return NULL;
if (!(window = malloc(sizeof(*window)))) if (!(window = malloc(sizeof(*window))))
return NULL; return NULL;
@@ -157,7 +224,6 @@ static inline struct demo_window *demo_window_create(struct demo *demo, const ch
window->user_data = user_data; window->user_data = user_data;
window->expose_func = NULL; window->expose_func = NULL;
window->key_press_func = NULL; window->key_press_func = NULL;
screen = xcb_setup_roots_iterator(xcb_get_setup(demo->connection)).data;
xcb_create_window(demo->connection, XCB_COPY_FROM_PARENT, window->window, screen->root, 0, 0, xcb_create_window(demo->connection, XCB_COPY_FROM_PARENT, window->window, screen->root, 0, 0,
width, height, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, screen->root_visual, width, height, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, screen->root_visual,
XCB_CW_EVENT_MASK, &window_events); XCB_CW_EVENT_MASK, &window_events);
@@ -254,7 +320,7 @@ static inline void demo_process_events(struct demo *demo)
static inline bool demo_init(struct demo *demo, void *user_data) static inline bool demo_init(struct demo *demo, void *user_data)
{ {
if (!(demo->connection = xcb_connect(NULL, NULL))) if (!(demo->connection = xcb_connect(NULL, &demo->screen)))
return false; return false;
if (xcb_connection_has_error(demo->connection) > 0) if (xcb_connection_has_error(demo->connection) > 0)
goto fail; goto fail;
@@ -291,27 +357,16 @@ static inline void demo_set_idle_func(struct demo *demo,
demo->idle_func = idle_func; demo->idle_func = idle_func;
} }
static inline DXGI_FORMAT demo_get_srgb_format(DXGI_FORMAT format)
{
switch (format)
{
case DXGI_FORMAT_B8G8R8A8_UNORM:
return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
default:
return DXGI_FORMAT_UNKNOWN;
}
}
static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *command_queue, static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *command_queue,
struct demo_window *window, const struct demo_swapchain_desc *desc) struct demo_window *window, const struct demo_swapchain_desc *desc)
{ {
struct vkd3d_image_resource_create_info resource_create_info;
struct VkSwapchainCreateInfoKHR vk_swapchain_desc; struct VkSwapchainCreateInfoKHR vk_swapchain_desc;
struct VkXcbSurfaceCreateInfoKHR surface_desc; struct VkXcbSurfaceCreateInfoKHR surface_desc;
VkSwapchainKHR vk_swapchain = VK_NULL_HANDLE; VkSwapchainKHR vk_swapchain = VK_NULL_HANDLE;
uint32_t format_count, queue_family_index; uint32_t format_count, queue_family_index;
VkSurfaceCapabilitiesKHR surface_caps; VkSurfaceCapabilitiesKHR surface_caps;
VkPhysicalDevice vk_physical_device; VkPhysicalDevice vk_physical_device;
D3D12_RESOURCE_DESC resource_desc;
VkFence vk_fence = VK_NULL_HANDLE; VkFence vk_fence = VK_NULL_HANDLE;
struct demo_swapchain *swapchain; struct demo_swapchain *swapchain;
unsigned int image_count, i, j; unsigned int image_count, i, j;
@@ -325,13 +380,15 @@ static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *c
VkImage *vk_images; VkImage *vk_images;
VkFormat format; VkFormat format;
if ((format = vkd3d_get_vk_format(demo_get_srgb_format(desc->format))) == VK_FORMAT_UNDEFINED) load_vulkan_procs();
if ((format = vkd3d_get_vk_format(desc->format)) == VK_FORMAT_UNDEFINED)
return NULL; return NULL;
if (FAILED(ID3D12CommandQueue_GetDevice(command_queue, &IID_ID3D12Device, (void **)&d3d12_device))) if (FAILED(ID3D12CommandQueue_GetDevice(command_queue, &IID_ID3D12Device, (void **)&d3d12_device)))
return NULL; return NULL;
vk_instance = vkd3d_get_vk_instance(d3d12_device); vk_instance = vkd3d_instance_get_vk_instance(vkd3d_instance_from_device(d3d12_device));
vk_physical_device = vkd3d_get_vk_physical_device(d3d12_device); vk_physical_device = vkd3d_get_vk_physical_device(d3d12_device);
vk_device = vkd3d_get_vk_device(d3d12_device); vk_device = vkd3d_get_vk_device(d3d12_device);
@@ -372,11 +429,11 @@ static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *c
} }
if (format_count != 1 || formats->format != VK_FORMAT_UNDEFINED if (format_count != 1 || formats->format != VK_FORMAT_UNDEFINED
|| formats->colorSpace != VK_COLORSPACE_SRGB_NONLINEAR_KHR) || formats->colorSpace != VK_COLOR_SPACE_SRGB_NONLINEAR_KHR)
{ {
for (i = 0; i < format_count; ++i) for (i = 0; i < format_count; ++i)
{ {
if (formats[i].format == format && formats[i].colorSpace == VK_COLORSPACE_SRGB_NONLINEAR_KHR) if (formats[i].format == format && formats[i].colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR)
break; break;
} }
@@ -396,7 +453,7 @@ static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *c
vk_swapchain_desc.surface = vk_surface; vk_swapchain_desc.surface = vk_surface;
vk_swapchain_desc.minImageCount = desc->buffer_count; vk_swapchain_desc.minImageCount = desc->buffer_count;
vk_swapchain_desc.imageFormat = format; vk_swapchain_desc.imageFormat = format;
vk_swapchain_desc.imageColorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR; vk_swapchain_desc.imageColorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
vk_swapchain_desc.imageExtent.width = desc->width; vk_swapchain_desc.imageExtent.width = desc->width;
vk_swapchain_desc.imageExtent.height = desc->height; vk_swapchain_desc.imageExtent.height = desc->height;
vk_swapchain_desc.imageArrayLayers = 1; vk_swapchain_desc.imageArrayLayers = 1;
@@ -438,29 +495,31 @@ static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *c
swapchain->vk_fence = vk_fence; swapchain->vk_fence = vk_fence;
swapchain->vk_instance = vk_instance; swapchain->vk_instance = vk_instance;
swapchain->vk_device = vk_device; swapchain->vk_device = vk_device;
swapchain->vk_queue = vkd3d_get_vk_queue(command_queue);
vkAcquireNextImageKHR(vk_device, vk_swapchain, UINT64_MAX, vkAcquireNextImageKHR(vk_device, vk_swapchain, UINT64_MAX,
VK_NULL_HANDLE, vk_fence, &swapchain->current_buffer); VK_NULL_HANDLE, vk_fence, &swapchain->current_buffer);
vkWaitForFences(vk_device, 1, &vk_fence, VK_TRUE, UINT64_MAX); vkWaitForFences(vk_device, 1, &vk_fence, VK_TRUE, UINT64_MAX);
vkResetFences(vk_device, 1, &vk_fence); vkResetFences(vk_device, 1, &vk_fence);
resource_desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; resource_create_info.type = VKD3D_STRUCTURE_TYPE_IMAGE_RESOURCE_CREATE_INFO;
resource_desc.Alignment = 0; resource_create_info.next = NULL;
resource_desc.Width = desc->width; resource_create_info.desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
resource_desc.Height = desc->height; resource_create_info.desc.Alignment = 0;
resource_desc.DepthOrArraySize = 1; resource_create_info.desc.Width = desc->width;
resource_desc.MipLevels = 1; resource_create_info.desc.Height = desc->height;
resource_desc.Format = desc->format; resource_create_info.desc.DepthOrArraySize = 1;
resource_desc.SampleDesc.Count = 1; resource_create_info.desc.MipLevels = 1;
resource_desc.SampleDesc.Quality = 0; resource_create_info.desc.Format = desc->format;
resource_desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; resource_create_info.desc.SampleDesc.Count = 1;
resource_desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; resource_create_info.desc.SampleDesc.Quality = 0;
resource_create_info.desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN;
resource_create_info.desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
resource_create_info.flags = VKD3D_RESOURCE_INITIAL_STATE_TRANSITION | VKD3D_RESOURCE_PRESENT_STATE_TRANSITION;
resource_create_info.present_state = D3D12_RESOURCE_STATE_PRESENT;
for (i = 0; i < image_count; ++i) for (i = 0; i < image_count; ++i)
{ {
if (FAILED(vkd3d_create_image_resource(d3d12_device, &resource_desc, vk_images[i], resource_create_info.vk_image = vk_images[i];
VKD3D_RESOURCE_INITIAL_STATE_TRANSITION | VKD3D_RESOURCE_SWAPCHAIN_IMAGE, if (FAILED(vkd3d_create_image_resource(d3d12_device, &resource_create_info, &swapchain->buffers[i])))
&swapchain->buffers[i])))
{ {
for (j = 0; j < i; ++j) for (j = 0; j < i; ++j)
{ {
@@ -473,8 +532,21 @@ static inline struct demo_swapchain *demo_swapchain_create(ID3D12CommandQueue *c
} }
swapchain->buffer_count = image_count; swapchain->buffer_count = image_count;
free(vk_images); free(vk_images);
if (FAILED(ID3D12Device_CreateFence(d3d12_device, 0, 0, &IID_ID3D12Fence, (void **)&swapchain->present_fence)))
{
for (i = 0; i < image_count; ++i)
{
ID3D12Resource_Release(swapchain->buffers[i]);
}
free(swapchain);
goto fail;
}
swapchain->present_count = 0;
ID3D12Device_Release(d3d12_device); ID3D12Device_Release(d3d12_device);
ID3D12CommandQueue_AddRef(swapchain->command_queue = command_queue);
return swapchain; return swapchain;
fail: fail:
@@ -505,6 +577,7 @@ static inline ID3D12Resource *demo_swapchain_get_back_buffer(struct demo_swapcha
static inline void demo_swapchain_present(struct demo_swapchain *swapchain) static inline void demo_swapchain_present(struct demo_swapchain *swapchain)
{ {
VkPresentInfoKHR present_desc; VkPresentInfoKHR present_desc;
VkQueue vk_queue;
present_desc.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR; present_desc.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
present_desc.pNext = NULL; present_desc.pNext = NULL;
@@ -515,7 +588,15 @@ static inline void demo_swapchain_present(struct demo_swapchain *swapchain)
present_desc.pImageIndices = &swapchain->current_buffer; present_desc.pImageIndices = &swapchain->current_buffer;
present_desc.pResults = NULL; present_desc.pResults = NULL;
vkQueuePresentKHR(swapchain->vk_queue, &present_desc); /* Synchronize vkd3d_acquire_vk_queue() with the Direct3D 12 work
* already submitted to the command queue. */
++swapchain->present_count;
ID3D12CommandQueue_Signal(swapchain->command_queue, swapchain->present_fence, swapchain->present_count);
ID3D12Fence_SetEventOnCompletion(swapchain->present_fence, swapchain->present_count, NULL);
vk_queue = vkd3d_acquire_vk_queue(swapchain->command_queue);
vkQueuePresentKHR(vk_queue, &present_desc);
vkd3d_release_vk_queue(swapchain->command_queue);
vkAcquireNextImageKHR(swapchain->vk_device, swapchain->vk_swapchain, UINT64_MAX, vkAcquireNextImageKHR(swapchain->vk_device, swapchain->vk_swapchain, UINT64_MAX,
VK_NULL_HANDLE, swapchain->vk_fence, &swapchain->current_buffer); VK_NULL_HANDLE, swapchain->vk_fence, &swapchain->current_buffer);
@@ -527,6 +608,8 @@ static inline void demo_swapchain_destroy(struct demo_swapchain *swapchain)
{ {
unsigned int i; unsigned int i;
ID3D12CommandQueue_Release(swapchain->command_queue);
ID3D12Fence_Release(swapchain->present_fence);
for (i = 0; i < swapchain->buffer_count; ++i) for (i = 0; i < swapchain->buffer_count; ++i)
{ {
ID3D12Resource_Release(swapchain->buffers[i]); ID3D12Resource_Release(swapchain->buffers[i]);
@@ -551,47 +634,3 @@ static inline void demo_destroy_event(HANDLE event)
{ {
vkd3d_destroy_event(event); vkd3d_destroy_event(event);
} }
static inline HRESULT demo_create_root_signature(ID3D12Device *device,
const D3D12_ROOT_SIGNATURE_DESC *desc, ID3D12RootSignature **signature)
{
return ID3D12Device_CreateRootSignature(device, 0, desc, ~(SIZE_T)0,
&IID_ID3D12RootSignature, (void **)signature);
}
static inline bool demo_load_shader(struct demo *demo, const wchar_t *hlsl_name, const char *entry_point,
const char *profile, const char *spv_name, D3D12_SHADER_BYTECODE *shader)
{
size_t data_size;
struct stat st;
ssize_t res;
void *data;
int fd;
if ((fd = open(spv_name, O_RDONLY)) == -1)
return false;
if (fstat(fd, &st) == -1)
goto fail;
data_size = st.st_size;
if (!(data = malloc(data_size)))
goto fail;
res = read(fd, data, data_size);
close(fd);
if (res != data_size)
{
free(data);
return false;
}
shader->pShaderBytecode = data;
shader->BytecodeLength = data_size;
return true;
fail:
close(fd);
return false;
}

View File

@@ -1,23 +1,19 @@
/* /*
* Copyright 2016 Henri Verbeet for CodeWeavers * Copyright 2016 Henri Verbeet for CodeWeavers
* *
* Permission is hereby granted, free of charge, to any person obtaining a * This library is free software; you can redistribute it and/or
* copy of this software and associated documentation files (the "Software"), * modify it under the terms of the GNU Lesser General Public
* to deal in the Software without restriction, including without limitation * License as published by the Free Software Foundation; either
* the rights to use, copy, modify, merge, publish, distribute, sublicense, * version 2.1 of the License, or (at your option) any later version.
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be included in * This library is distributed in the hope that it will be useful,
* all copies or substantial portions of the Software. * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * You should have received a copy of the GNU Lesser General Public
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * License along with this library; if not, write to the Free Software
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
/* /*
@@ -52,6 +48,8 @@
#include <math.h> #include <math.h>
#include "demo.h" #include "demo.h"
#include "gears_hlsl.h"
struct cxg_fence struct cxg_fence
{ {
ID3D12Fence *fence; ID3D12Fence *fence;
@@ -124,12 +122,12 @@ struct cx_gears
struct demo_swapchain *swapchain; struct demo_swapchain *swapchain;
ID3D12DescriptorHeap *rtv_heap, *dsv_heap; ID3D12DescriptorHeap *rtv_heap, *dsv_heap;
unsigned int rtv_descriptor_size; unsigned int rtv_descriptor_size;
ID3D12Resource *render_targets[2]; ID3D12Resource *render_targets[3];
ID3D12CommandAllocator *command_allocator[2]; ID3D12CommandAllocator *command_allocator[3];
ID3D12RootSignature *root_signature; ID3D12RootSignature *root_signature;
ID3D12PipelineState *pipeline_state_smooth, *pipeline_state_flat; ID3D12PipelineState *pipeline_state_smooth, *pipeline_state_flat;
ID3D12GraphicsCommandList *command_list[2]; ID3D12GraphicsCommandList *command_list[3];
ID3D12Resource *ds, *cb, *vb[2], *ib; ID3D12Resource *ds, *cb, *vb[2], *ib;
D3D12_VERTEX_BUFFER_VIEW vbv[2]; D3D12_VERTEX_BUFFER_VIEW vbv[2];
D3D12_INDEX_BUFFER_VIEW ibv; D3D12_INDEX_BUFFER_VIEW ibv;
@@ -218,7 +216,8 @@ static void cxg_wait_for_previous_frame(struct cx_gears *cxg)
if (ID3D12Fence_GetCompletedValue(fence->fence) < v) if (ID3D12Fence_GetCompletedValue(fence->fence) < v)
{ {
ID3D12Fence_SetEventOnCompletion(fence->fence, v, fence->event); hr = ID3D12Fence_SetEventOnCompletion(fence->fence, v, fence->event);
assert(SUCCEEDED(hr));
demo_wait_event(fence->event, INFINITE); demo_wait_event(fence->event, INFINITE);
} }
@@ -305,8 +304,10 @@ static void cxg_destroy_pipeline(struct cx_gears *cxg)
{ {
unsigned int i; unsigned int i;
ID3D12CommandAllocator_Release(cxg->command_allocator[1]); for (i = 0; i < ARRAY_SIZE(cxg->command_allocator); ++i)
ID3D12CommandAllocator_Release(cxg->command_allocator[0]); {
ID3D12CommandAllocator_Release(cxg->command_allocator[i]);
}
for (i = 0; i < ARRAY_SIZE(cxg->render_targets); ++i) for (i = 0; i < ARRAY_SIZE(cxg->render_targets); ++i)
{ {
ID3D12Resource_Release(cxg->render_targets[i]); ID3D12Resource_Release(cxg->render_targets[i]);
@@ -370,12 +371,12 @@ static void cxg_load_pipeline(struct cx_gears *cxg)
&IID_ID3D12DescriptorHeap, (void **)&cxg->dsv_heap); &IID_ID3D12DescriptorHeap, (void **)&cxg->dsv_heap);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
hr = ID3D12Device_CreateCommandAllocator(cxg->device, D3D12_COMMAND_LIST_TYPE_DIRECT, for (i = 0; i < ARRAY_SIZE(cxg->command_allocator); ++i)
&IID_ID3D12CommandAllocator, (void **)&cxg->command_allocator[0]); {
assert(SUCCEEDED(hr)); hr = ID3D12Device_CreateCommandAllocator(cxg->device, D3D12_COMMAND_LIST_TYPE_DIRECT,
hr = ID3D12Device_CreateCommandAllocator(cxg->device, D3D12_COMMAND_LIST_TYPE_DIRECT, &IID_ID3D12CommandAllocator, (void **)&cxg->command_allocator[i]);
&IID_ID3D12CommandAllocator, (void **)&cxg->command_allocator[1]); assert(SUCCEEDED(hr));
assert(SUCCEEDED(hr)); }
} }
static void cxg_fence_destroy(struct cxg_fence *cxg_fence) static void cxg_fence_destroy(struct cxg_fence *cxg_fence)
@@ -386,6 +387,8 @@ static void cxg_fence_destroy(struct cxg_fence *cxg_fence)
static void cxg_destroy_assets(struct cx_gears *cxg) static void cxg_destroy_assets(struct cx_gears *cxg)
{ {
unsigned int i;
cxg_fence_destroy(&cxg->fence); cxg_fence_destroy(&cxg->fence);
ID3D12Resource_Release(cxg->ib); ID3D12Resource_Release(cxg->ib);
ID3D12Resource_Unmap(cxg->vb[1], 0, NULL); ID3D12Resource_Unmap(cxg->vb[1], 0, NULL);
@@ -394,8 +397,8 @@ static void cxg_destroy_assets(struct cx_gears *cxg)
ID3D12Resource_Unmap(cxg->cb, 0, NULL); ID3D12Resource_Unmap(cxg->cb, 0, NULL);
ID3D12Resource_Release(cxg->cb); ID3D12Resource_Release(cxg->cb);
ID3D12Resource_Release(cxg->ds); ID3D12Resource_Release(cxg->ds);
ID3D12GraphicsCommandList_Release(cxg->command_list[1]); for (i = 0; i < ARRAY_SIZE(cxg->command_list); ++i)
ID3D12GraphicsCommandList_Release(cxg->command_list[0]); ID3D12GraphicsCommandList_Release(cxg->command_list[i]);
ID3D12PipelineState_Release(cxg->pipeline_state_smooth); ID3D12PipelineState_Release(cxg->pipeline_state_smooth);
ID3D12PipelineState_Release(cxg->pipeline_state_flat); ID3D12PipelineState_Release(cxg->pipeline_state_flat);
ID3D12RootSignature_Release(cxg->root_signature); ID3D12RootSignature_Release(cxg->root_signature);
@@ -654,12 +657,13 @@ static void cxg_load_assets(struct cx_gears *cxg)
D3D12_GRAPHICS_PIPELINE_STATE_DESC pso_desc; D3D12_GRAPHICS_PIPELINE_STATE_DESC pso_desc;
D3D12_CPU_DESCRIPTOR_HANDLE dsv_handle; D3D12_CPU_DESCRIPTOR_HANDLE dsv_handle;
D3D12_ROOT_PARAMETER root_parameter; D3D12_ROOT_PARAMETER root_parameter;
ID3DBlob *vs, *ps_flat, *ps_smooth;
D3D12_RESOURCE_DESC resource_desc; D3D12_RESOURCE_DESC resource_desc;
D3D12_HEAP_PROPERTIES heap_desc; D3D12_HEAP_PROPERTIES heap_desc;
D3D12_RANGE read_range = {0, 0}; D3D12_RANGE read_range = {0, 0};
D3D12_CLEAR_VALUE clear_value; D3D12_CLEAR_VALUE clear_value;
unsigned int i;
HRESULT hr; HRESULT hr;
bool ret;
root_parameter.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV; root_parameter.ParameterType = D3D12_ROOT_PARAMETER_TYPE_CBV;
root_parameter.Descriptor.ShaderRegister = 0; root_parameter.Descriptor.ShaderRegister = 0;
@@ -677,15 +681,21 @@ static void cxg_load_assets(struct cx_gears *cxg)
hr = demo_create_root_signature(cxg->device, &root_signature_desc, &cxg->root_signature); hr = demo_create_root_signature(cxg->device, &root_signature_desc, &cxg->root_signature);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
hr = D3DCompile(gears_hlsl, strlen(gears_hlsl), NULL, NULL, NULL, "vs_main", "vs_5_0", 0, 0, &vs, NULL);
assert(SUCCEEDED(hr));
hr = D3DCompile(gears_hlsl, strlen(gears_hlsl), NULL, NULL, NULL, "ps_main_flat", "ps_5_0", 0, 0, &ps_flat, NULL);
assert(SUCCEEDED(hr));
hr = D3DCompile(gears_hlsl, strlen(gears_hlsl), NULL, NULL, NULL, "ps_main_smooth", "ps_5_0", 0, 0, &ps_smooth, NULL);
assert(SUCCEEDED(hr));
memset(&pso_desc, 0, sizeof(pso_desc)); memset(&pso_desc, 0, sizeof(pso_desc));
pso_desc.InputLayout.pInputElementDescs = il_desc; pso_desc.InputLayout.pInputElementDescs = il_desc;
pso_desc.InputLayout.NumElements = ARRAY_SIZE(il_desc); pso_desc.InputLayout.NumElements = ARRAY_SIZE(il_desc);
pso_desc.pRootSignature = cxg->root_signature; pso_desc.pRootSignature = cxg->root_signature;
ret = demo_load_shader(&cxg->demo, L"gears.hlsl", "vs_main", "vs_5_0", "gears.vert.spv", &pso_desc.VS); pso_desc.VS.pShaderBytecode = ID3D10Blob_GetBufferPointer(vs);
assert(ret); pso_desc.VS.BytecodeLength = ID3D10Blob_GetBufferSize(vs);
ret = demo_load_shader(&cxg->demo, L"gears.hlsl", "ps_main_flat", pso_desc.PS.pShaderBytecode = ID3D10Blob_GetBufferPointer(ps_flat);
"ps_5_0", "gears_flat.frag.spv", &pso_desc.PS); pso_desc.PS.BytecodeLength = ID3D10Blob_GetBufferSize(ps_flat);
assert(ret);
demo_rasterizer_desc_init_default(&pso_desc.RasterizerState); demo_rasterizer_desc_init_default(&pso_desc.RasterizerState);
pso_desc.RasterizerState.FrontCounterClockwise = TRUE; pso_desc.RasterizerState.FrontCounterClockwise = TRUE;
@@ -704,27 +714,25 @@ static void cxg_load_assets(struct cx_gears *cxg)
&IID_ID3D12PipelineState, (void **)&cxg->pipeline_state_flat); &IID_ID3D12PipelineState, (void **)&cxg->pipeline_state_flat);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
free((void *)pso_desc.PS.pShaderBytecode); pso_desc.PS.pShaderBytecode = ID3D10Blob_GetBufferPointer(ps_smooth);
ret = demo_load_shader(&cxg->demo, L"gears.hlsl", "ps_main_smooth", pso_desc.PS.BytecodeLength = ID3D10Blob_GetBufferSize(ps_smooth);
"ps_5_0", "gears_smooth.frag.spv", &pso_desc.PS);
assert(ret);
hr = ID3D12Device_CreateGraphicsPipelineState(cxg->device, &pso_desc, hr = ID3D12Device_CreateGraphicsPipelineState(cxg->device, &pso_desc,
&IID_ID3D12PipelineState, (void **)&cxg->pipeline_state_smooth); &IID_ID3D12PipelineState, (void **)&cxg->pipeline_state_smooth);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
free((void *)pso_desc.PS.pShaderBytecode); ID3D10Blob_Release(vs);
free((void *)pso_desc.VS.pShaderBytecode); ID3D10Blob_Release(ps_flat);
ID3D10Blob_Release(ps_smooth);
hr = ID3D12Device_CreateCommandList(cxg->device, 0, D3D12_COMMAND_LIST_TYPE_DIRECT, cxg->command_allocator[0], for (i = 0; i < ARRAY_SIZE(cxg->command_list); ++i)
cxg->pipeline_state_flat, &IID_ID3D12GraphicsCommandList, (void **)&cxg->command_list[0]); {
assert(SUCCEEDED(hr)); hr = ID3D12Device_CreateCommandList(cxg->device, 0, D3D12_COMMAND_LIST_TYPE_DIRECT,
hr = ID3D12GraphicsCommandList_Close(cxg->command_list[0]); cxg->command_allocator[i], cxg->pipeline_state_flat,
assert(SUCCEEDED(hr)); &IID_ID3D12GraphicsCommandList, (void **)&cxg->command_list[i]);
hr = ID3D12Device_CreateCommandList(cxg->device, 0, D3D12_COMMAND_LIST_TYPE_DIRECT, cxg->command_allocator[1], assert(SUCCEEDED(hr));
cxg->pipeline_state_flat, &IID_ID3D12GraphicsCommandList, (void **)&cxg->command_list[1]); hr = ID3D12GraphicsCommandList_Close(cxg->command_list[i]);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
hr = ID3D12GraphicsCommandList_Close(cxg->command_list[1]); }
assert(SUCCEEDED(hr));
heap_desc.Type = D3D12_HEAP_TYPE_DEFAULT; heap_desc.Type = D3D12_HEAP_TYPE_DEFAULT;
heap_desc.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; heap_desc.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
@@ -867,6 +875,7 @@ static int cxg_main(void)
cxg_load_assets(&cxg); cxg_load_assets(&cxg);
cxg_populate_command_list(&cxg, 0); cxg_populate_command_list(&cxg, 0);
cxg_populate_command_list(&cxg, 1); cxg_populate_command_list(&cxg, 1);
cxg_populate_command_list(&cxg, 2);
demo_process_events(&cxg.demo); demo_process_events(&cxg.demo);

View File

@@ -1,55 +0,0 @@
cbuffer gear_block : register(b0)
{
float4x4 mvp_matrix;
float3x3 normal_matrix;
};
struct vs_in
{
float4 position : POSITION;
float3 normal : NORMAL;
float3 diffuse : DIFFUSE;
float4 transform : TRANSFORM;
};
struct vs_out
{
float4 position : SV_POSITION;
float4 colour : COLOR;
};
struct vs_out vs_main(struct vs_in i)
{
const float3 l_pos = float3(5.0, 5.0, 10.0);
float3 dir, normal;
float4 position;
struct vs_out o;
float att;
position.x = i.transform.x * i.position.x - i.transform.y * i.position.y + i.transform.z;
position.y = i.transform.x * i.position.y + i.transform.y * i.position.x + i.transform.w;
position.zw = i.position.zw;
o.position = mul(mvp_matrix, position);
dir = normalize(l_pos - o.position.xyz / o.position.w);
normal.x = i.transform.x * i.normal.x - i.transform.y * i.normal.y;
normal.y = i.transform.x * i.normal.y + i.transform.y * i.normal.x;
normal.z = i.normal.z;
att = 0.2 + dot(dir, normalize(mul(normal_matrix, normal)));
o.colour.xyz = i.diffuse.xyz * att;
o.colour.w = 1.0;
return o;
}
float4 ps_main_smooth(float4 position : SV_POSITION, float4 colour : COLOR) : SV_TARGET
{
return colour;
}
float4 ps_main_flat(float4 position : SV_POSITION, nointerpolation float4 colour : COLOR) : SV_TARGET
{
return colour;
}

View File

@@ -1,40 +0,0 @@
#version 150
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) in vec4 position_in;
layout(location = 1) in vec3 normal_in;
layout(location = 2) in vec3 diffuse_in;
layout(location = 3) in vec4 transform_in;
layout(location = 0) out vec4 colour_out;
uniform gear_block
{
uniform mat4 mvp_matrix;
uniform mat3 normal_matrix;
} gear;
void main()
{
const vec3 l_pos = vec3(5.0, 5.0, 10.0);
vec3 dir, normal;
vec4 position;
float att;
position.x = transform_in.x * position_in.x - transform_in.y * position_in.y + transform_in.z;
position.y = transform_in.x * position_in.y + transform_in.y * position_in.x + transform_in.w;
position.zw = position_in.zw;
gl_Position = gear.mvp_matrix * position;
dir = normalize(l_pos - gl_Position.xyz / gl_Position.w);
normal.x = transform_in.x * normal_in.x - transform_in.y * normal_in.y;
normal.y = transform_in.x * normal_in.y + transform_in.y * normal_in.x;
normal.z = normal_in.z;
att = 0.2 + dot(dir, normalize(gear.normal_matrix * normal));
colour_out.xyz = diffuse_in.xyz * att;
colour_out.w = 1.0;
gl_Position.y = -gl_Position.y;
}

View File

@@ -1,10 +0,0 @@
#version 150
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) flat in vec4 colour_in;
layout(location = 0) out vec4 colour_out;
void main(void)
{
colour_out = colour_in;
}

56
demos/gears_hlsl.h Normal file
View File

@@ -0,0 +1,56 @@
static const char gears_hlsl[] =
"cbuffer gear_block : register(b0)\n"
"{\n"
" float4x4 mvp_matrix;\n"
" float3x3 normal_matrix;\n"
"};\n"
"\n"
"struct vs_in\n"
"{\n"
" float4 position : POSITION;\n"
" float3 normal : NORMAL;\n"
" float3 diffuse : DIFFUSE;\n"
" float4 transform : TRANSFORM;\n"
"};\n"
"\n"
"struct vs_out\n"
"{\n"
" float4 position : SV_POSITION;\n"
" float4 colour : COLOR;\n"
"};\n"
"\n"
"struct vs_out vs_main(struct vs_in i)\n"
"{\n"
" const float3 l_pos = float3(5.0, 5.0, 10.0);\n"
" float3 dir, normal;\n"
" float4 position;\n"
" struct vs_out o;\n"
" float att;\n"
"\n"
" position.x = i.transform.x * i.position.x - i.transform.y * i.position.y + i.transform.z;\n"
" position.y = i.transform.x * i.position.y + i.transform.y * i.position.x + i.transform.w;\n"
" position.zw = i.position.zw;\n"
"\n"
" o.position = mul(mvp_matrix, position);\n"
" dir = normalize(l_pos - o.position.xyz / o.position.w);\n"
"\n"
" normal.x = i.transform.x * i.normal.x - i.transform.y * i.normal.y;\n"
" normal.y = i.transform.x * i.normal.y + i.transform.y * i.normal.x;\n"
" normal.z = i.normal.z;\n"
" att = 0.2 + dot(dir, normalize(mul(normal_matrix, normal)));\n"
"\n"
" o.colour.xyz = i.diffuse.xyz * att;\n"
" o.colour.w = 1.0;\n"
"\n"
" return o;\n"
"}\n"
"\n"
"float4 ps_main_smooth(float4 position : SV_POSITION, float4 colour : COLOR) : SV_TARGET\n"
"{\n"
" return colour;\n"
"}\n"
"\n"
"float4 ps_main_flat(float4 position : SV_POSITION, nointerpolation float4 colour : COLOR) : SV_TARGET\n"
"{\n"
" return colour;\n"
"}\n";

View File

@@ -1,10 +0,0 @@
#version 150
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) in vec4 colour_in;
layout(location = 0) out vec4 colour_out;
void main(void)
{
colour_out = colour_in;
}

View File

@@ -1,23 +1,19 @@
/* /*
* Copyright 2016 Henri Verbeet for CodeWeavers * Copyright 2016 Henri Verbeet for CodeWeavers
* *
* Permission is hereby granted, free of charge, to any person obtaining a * This library is free software; you can redistribute it and/or
* copy of this software and associated documentation files (the "Software"), * modify it under the terms of the GNU Lesser General Public
* to deal in the Software without restriction, including without limitation * License as published by the Free Software Foundation; either
* the rights to use, copy, modify, merge, publish, distribute, sublicense, * version 2.1 of the License, or (at your option) any later version.
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
* *
* The above copyright notice and this permission notice shall be included in * This library is distributed in the hope that it will be useful,
* all copies or substantial portions of the Software. * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * You should have received a copy of the GNU Lesser General Public
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * License along with this library; if not, write to the Free Software
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/ */
/* /*
@@ -49,6 +45,8 @@
#include <assert.h> #include <assert.h>
#include "demo.h" #include "demo.h"
#include "triangle_hlsl.h"
struct cxt_fence struct cxt_fence
{ {
ID3D12Fence *fence; ID3D12Fence *fence;
@@ -74,7 +72,7 @@ struct cx_triangle
struct demo_swapchain *swapchain; struct demo_swapchain *swapchain;
ID3D12DescriptorHeap *rtv_heap; ID3D12DescriptorHeap *rtv_heap;
unsigned int rtv_descriptor_size; unsigned int rtv_descriptor_size;
ID3D12Resource *render_targets[2]; ID3D12Resource *render_targets[3];
ID3D12CommandAllocator *command_allocator; ID3D12CommandAllocator *command_allocator;
ID3D12RootSignature *root_signature; ID3D12RootSignature *root_signature;
@@ -143,7 +141,8 @@ static void cxt_wait_for_previous_frame(struct cx_triangle *cxt)
if (ID3D12Fence_GetCompletedValue(fence->fence) < v) if (ID3D12Fence_GetCompletedValue(fence->fence) < v)
{ {
ID3D12Fence_SetEventOnCompletion(fence->fence, v, fence->event); hr = ID3D12Fence_SetEventOnCompletion(fence->fence, v, fence->event);
assert(SUCCEEDED(hr));
demo_wait_event(fence->event, INFINITE); demo_wait_event(fence->event, INFINITE);
} }
@@ -240,16 +239,6 @@ static void cxt_destroy_assets(struct cx_triangle *cxt)
ID3D12RootSignature_Release(cxt->root_signature); ID3D12RootSignature_Release(cxt->root_signature);
} }
static void cxt_load_shaders(struct cx_triangle *cxt, D3D12_SHADER_BYTECODE *vs, D3D12_SHADER_BYTECODE *ps)
{
bool ret;
ret = demo_load_shader(&cxt->demo, L"triangle.hlsl", "vs_main", "vs_5_0", "triangle.vert.spv", vs);
assert(ret);
ret = demo_load_shader(&cxt->demo, L"triangle.hlsl", "ps_main", "ps_5_0", "triangle.frag.spv", ps);
assert(ret);
}
static void cxt_fence_create(struct cxt_fence *fence, ID3D12Device *device) static void cxt_fence_create(struct cxt_fence *fence, ID3D12Device *device)
{ {
HRESULT hr; HRESULT hr;
@@ -287,6 +276,7 @@ static void cxt_load_assets(struct cx_triangle *cxt)
D3D12_RESOURCE_DESC resource_desc; D3D12_RESOURCE_DESC resource_desc;
D3D12_HEAP_PROPERTIES heap_desc; D3D12_HEAP_PROPERTIES heap_desc;
D3D12_RANGE read_range = {0, 0}; D3D12_RANGE read_range = {0, 0};
ID3DBlob *vs, *ps;
HRESULT hr; HRESULT hr;
void *data; void *data;
@@ -295,11 +285,19 @@ static void cxt_load_assets(struct cx_triangle *cxt)
hr = demo_create_root_signature(cxt->device, &root_signature_desc, &cxt->root_signature); hr = demo_create_root_signature(cxt->device, &root_signature_desc, &cxt->root_signature);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
hr = D3DCompile(triangle_hlsl, strlen(triangle_hlsl), NULL, NULL, NULL, "vs_main", "vs_5_0", 0, 0, &vs, NULL);
assert(SUCCEEDED(hr));
hr = D3DCompile(triangle_hlsl, strlen(triangle_hlsl), NULL, NULL, NULL, "ps_main", "ps_5_0", 0, 0, &ps, NULL);
assert(SUCCEEDED(hr));
memset(&pso_desc, 0, sizeof(pso_desc)); memset(&pso_desc, 0, sizeof(pso_desc));
pso_desc.InputLayout.pInputElementDescs = il_desc; pso_desc.InputLayout.pInputElementDescs = il_desc;
pso_desc.InputLayout.NumElements = ARRAY_SIZE(il_desc); pso_desc.InputLayout.NumElements = ARRAY_SIZE(il_desc);
pso_desc.pRootSignature = cxt->root_signature; pso_desc.pRootSignature = cxt->root_signature;
cxt_load_shaders(cxt, &pso_desc.VS, &pso_desc.PS); pso_desc.VS.pShaderBytecode = ID3D10Blob_GetBufferPointer(vs);
pso_desc.VS.BytecodeLength = ID3D10Blob_GetBufferSize(vs);
pso_desc.PS.pShaderBytecode = ID3D10Blob_GetBufferPointer(ps);
pso_desc.PS.BytecodeLength = ID3D10Blob_GetBufferSize(ps);
demo_rasterizer_desc_init_default(&pso_desc.RasterizerState); demo_rasterizer_desc_init_default(&pso_desc.RasterizerState);
demo_blend_desc_init_default(&pso_desc.BlendState); demo_blend_desc_init_default(&pso_desc.BlendState);
pso_desc.DepthStencilState.DepthEnable = FALSE; pso_desc.DepthStencilState.DepthEnable = FALSE;
@@ -313,8 +311,8 @@ static void cxt_load_assets(struct cx_triangle *cxt)
&IID_ID3D12PipelineState, (void **)&cxt->pipeline_state); &IID_ID3D12PipelineState, (void **)&cxt->pipeline_state);
assert(SUCCEEDED(hr)); assert(SUCCEEDED(hr));
free((void *)pso_desc.PS.pShaderBytecode); ID3D10Blob_Release(vs);
free((void *)pso_desc.VS.pShaderBytecode); ID3D10Blob_Release(ps);
hr = ID3D12Device_CreateCommandList(cxt->device, 0, D3D12_COMMAND_LIST_TYPE_DIRECT, cxt->command_allocator, hr = ID3D12Device_CreateCommandList(cxt->device, 0, D3D12_COMMAND_LIST_TYPE_DIRECT, cxt->command_allocator,
cxt->pipeline_state, &IID_ID3D12GraphicsCommandList, (void **)&cxt->command_list); cxt->pipeline_state, &IID_ID3D12GraphicsCommandList, (void **)&cxt->command_list);

Some files were not shown because too many files have changed in this diff Show More