325 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
208 changed files with 15322 additions and 2941 deletions

1
.gitignore vendored
View File

@@ -10,6 +10,7 @@ Makefile
Makefile.in Makefile.in
test-suite.log test-suite.log
/vkd3d-compiler /vkd3d-compiler
/vkd3d-dxbc
vkd3d-*.tar.xz vkd3d-*.tar.xz

7
.gitlab-ci.yml Normal file
View File

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

128
ANNOUNCE
View File

@@ -1,16 +1,16 @@
The Wine team is proud to announce that release 1.8 of vkd3d, the Direct3D to The Wine team is proud to announce that release 1.9 of vkd3d, the Direct3D to
Vulkan translation library, is now available. Vulkan translation library, is now available.
This release contains improvements that are listed in the release notes below. This release contains improvements that are listed in the release notes below.
The main highlights are: The main highlights are:
- Support for still many more HLSL features and intrinsics. - Yet more improvements to the HLSL compiler.
- Performance improvements to vkd3d descriptor updates. - A new utility to inspect the contents of DXBC blobs.
- Miscellaneous bug fixes. - Miscellaneous bug fixes.
The source is available from the following location: The source is available from the following location:
https://dl.winehq.org/vkd3d/source/vkd3d-1.8.tar.xz https://dl.winehq.org/vkd3d/source/vkd3d-1.9.tar.xz
The current source can also be pulled directly from the git repository: The current source can also be pulled directly from the git repository:
@@ -21,73 +21,83 @@ for the complete list.
---------------------------------------------------------------- ----------------------------------------------------------------
What's new in vkd3d 1.8 What's new in vkd3d 1.9
======================= =======================
*** libvkd3d *** libvkd3d
- Performance improvements have been made to the code that handles descriptor - Copying between depth/stencil and colour formats in
updates. In some applications the improvement can be quite significant. ID3D12GraphicsCommandList::CopyResource() is supported.
- The ID3D12Fence1 interface is supported.
- Host-visible descriptor heaps are persistently mapped on creation. Some
applications access resource data from the CPU after calling Unmap(), and
that's supposed to work in practice.
- 1-dimensional texture unordered-access views and shader resource views are
implemented.
- Shader resource view, unordered access view, and constant buffer view root
descriptors with NULL GPU addresses are supported.
- Direct3D 12 descriptor heap destruction is delayed until all contained
resources are destroyed.
*** libvkd3d-shader *** 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: - New features for the HLSL source type:
- Support for the ternary conditional operator "?:".
- Support for "discard" statements.
- Support for the "packoffset" keyword.
- Support for semantics on array types.
- Support for RWBuffer loads and stores.
- Register allocation for arrays and structures of resources and samplers
is implemented.
- Support for the SV_IsFrontFace pixel shader system-value semantics.
- Support for using constant expressions as array sizes and indices.
- Support for dynamic selection of vector components.
- Support for the following intrinsic functions: - Support for the following intrinsic functions:
- D3DCOLORtoUBYTE4() - clip()
- any() - ddx_coarse() and ddy_coarse()
- asfloat() - ddx_fine() and ddy_fine()
- ddx() and ddy() - tex1D(), tex2D(), texCUBE(), and tex3D()
- fmod() - Constant folding support for more expression types. In particular:
- log(), log2(), and log10() - comparison operators
- sign() - floating-point min() and max()
- trunc() - logical `and' and `or'
- The SampleBias(), SampleCmp(), SampleCmpLevelZero(), and SampleGrad() - dot products
texture object methods are implemented. - square roots
- Support for the case-insensitive variants of the "vector" and "matrix" - logarithms
data types. - Support for multi-sample texture object declarations without explicit
- Parser support for the "unroll" loop attribute. A warning is output for sample counts in shader model 4.1 and later shaders.
"unroll" without iteration count, and an error is output when an iteration - Support for using constant expressions as sample counts in multi-sample
count is specified. Actual unrolling is not implemented yet. texture object declarations.
- Parser support for RWStructuredBuffer resources. - Support for variable initialisers using variables declared earlier in the
- Parser support for SamplerComparisonState objects. Note that outputting same declaration list. E.g., `float a = 1, b = a, c = b + 1;'.
compiled effects is not supported yet, but parsing these allows shaders - The GetDimensions() texture object method is implemented.
containing SamplerComparisonState state objects to be compiled. - Matrix swizzles are implemented.
- Parser support for if-statement attributes like `[branch]' and
`[flatten]'.
- Support for the `inline' function modifier.
- More improvements to HLSL support for the Direct3D shader model 1/2/3 - Previously, vkd3d_shader_compile() would in some cases return VKD3D_OK
profiles. despite compilation failing when targeting legacy Direct3D bytecode. These
cases have been fixed.
- The section alignment of DXBC blobs produced by - Various HLSL preprocessor fixes for edge cases related to stringification.
vkd3d_shader_serialize_dxbc() matches those produced by d3dcompiler more
closely.
- The "main" function for shaders produced by the SPIR-V target is always - SPIR-V target support for the `linear noperspective centroid' input
terminated, even when the source was a TPF shader without explicit "ret" interpolation mode.
instruction.
- Relative addressing of shader input registers is supported by SPIR-V - New interfaces:
targets. - 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.

View File

@@ -1,4 +1,5 @@
Alexandre Julliard Alexandre Julliard
Alistair Leslie-Hughes
Andrew Eikum Andrew Eikum
Andrey Gusev Andrey Gusev
Atharva Nimbalkar Atharva Nimbalkar
@@ -9,6 +10,7 @@ Conor McCarthy
David Gow David Gow
Derek Lesho Derek Lesho
Ethan Lee Ethan Lee
Evan Tang
Fabian Maurer Fabian Maurer
Francisco Casas Francisco Casas
Francois Gouget Francois Gouget

View File

@@ -42,149 +42,157 @@ vkd3d_cross_tests = \
tests/hlsl_d3d12 tests/hlsl_d3d12
vkd3d_shader_tests = \ vkd3d_shader_tests = \
tests/abs.shader_test \ tests/hlsl/abs.shader_test \
tests/all.shader_test \ tests/hlsl/all.shader_test \
tests/any.shader_test \ tests/hlsl/any.shader_test \
tests/arithmetic-float.shader_test \ tests/hlsl/arithmetic-float-uniform.shader_test \
tests/arithmetic-float-uniform.shader_test \ tests/hlsl/arithmetic-float.shader_test \
tests/arithmetic-int.shader_test \ tests/hlsl/arithmetic-int-uniform.shader_test \
tests/arithmetic-int-uniform.shader_test \ tests/hlsl/arithmetic-int.shader_test \
tests/arithmetic-uint.shader_test \ tests/hlsl/arithmetic-uint.shader_test \
tests/array-index-expr.shader_test \ tests/hlsl/array-dimension.shader_test \
tests/array-parameters.shader_test \ tests/hlsl/array-index-expr.shader_test \
tests/asfloat.shader_test \ tests/hlsl/array-parameters.shader_test \
tests/asuint.shader_test \ tests/hlsl/array-size-expr.shader_test \
tests/bitwise.shader_test \ tests/hlsl/asfloat.shader_test \
tests/bool-semantics.shader_test \ tests/hlsl/asuint.shader_test \
tests/cast-broadcast.shader_test \ tests/hlsl/attributes.shader_test \
tests/cast-componentwise-compatible.shader_test \ tests/hlsl/bitwise.shader_test \
tests/cast-componentwise-equal.shader_test \ tests/hlsl/bool-cast.shader_test \
tests/cast-to-float.shader_test \ tests/hlsl/bool-semantics.shader_test \
tests/cast-to-half.shader_test \ tests/hlsl/cast-broadcast.shader_test \
tests/cast-to-int.shader_test \ tests/hlsl/cast-componentwise-compatible.shader_test \
tests/cast-to-uint.shader_test \ tests/hlsl/cast-componentwise-equal.shader_test \
tests/cbuffer.shader_test \ tests/hlsl/cast-to-float.shader_test \
tests/compute.shader_test \ tests/hlsl/cast-to-half.shader_test \
tests/conditional.shader_test \ tests/hlsl/cast-to-int.shader_test \
tests/ddxddy.shader_test \ tests/hlsl/cast-to-uint.shader_test \
tests/distance.shader_test \ tests/hlsl/cbuffer.shader_test \
tests/entry-point-semantics.shader_test \ tests/hlsl/clamp.shader_test \
tests/exp.shader_test \ tests/hlsl/clip.shader_test \
tests/expr-indexing.shader_test \ tests/hlsl/combined-samplers.shader_test \
tests/floor.shader_test \ tests/hlsl/comma.shader_test \
tests/fmod.shader_test \ tests/hlsl/compute.shader_test \
tests/frac.shader_test \ tests/hlsl/conditional.shader_test \
tests/function-return.shader_test \ tests/hlsl/const.shader_test \
tests/hlsl-array-dimension.shader_test \ tests/hlsl/cross.shader_test \
tests/hlsl-array-size-expr.shader_test \ tests/hlsl/d3dcolor-to-ubyte4.shader_test \
tests/hlsl-attributes.shader_test \ tests/hlsl/ddxddy.shader_test \
tests/hlsl-bool-cast.shader_test \ tests/hlsl/discard.shader_test \
tests/hlsl-clamp.shader_test \ tests/hlsl/distance.shader_test \
tests/hlsl-comma.shader_test \ tests/hlsl/dot.shader_test \
tests/hlsl-cross.shader_test \ tests/hlsl/duplicate-modifiers.shader_test \
tests/hlsl-d3dcolor-to-ubyte4.shader_test \ tests/hlsl/entry-point-semantics.shader_test \
tests/hlsl-discard.shader_test \ tests/hlsl/exp.shader_test \
tests/hlsl-dot.shader_test \ tests/hlsl/expr-indexing.shader_test \
tests/hlsl-duplicate-modifiers.shader_test \ tests/hlsl/floor.shader_test \
tests/hlsl-for.shader_test \ tests/hlsl/fmod.shader_test \
tests/hlsl-function.shader_test \ tests/hlsl/for.shader_test \
tests/hlsl-function-cast.shader_test \ tests/hlsl/frac.shader_test \
tests/hlsl-function-overload.shader_test \ tests/hlsl/function-cast.shader_test \
tests/hlsl-gather-offset.shader_test \ tests/hlsl/function-overload.shader_test \
tests/hlsl-gather.shader_test \ tests/hlsl/function-return.shader_test \
tests/hlsl-initializer-flatten.shader_test \ tests/hlsl/function.shader_test \
tests/hlsl-initializer-implicit-array.shader_test \ tests/hlsl/gather-offset.shader_test \
tests/hlsl-initializer-invalid-arg-count.shader_test \ tests/hlsl/gather.shader_test \
tests/hlsl-initializer-local-array.shader_test \ tests/hlsl/getdimensions.shader_test \
tests/hlsl-initializer-matrix.shader_test \ tests/hlsl/initializer-flatten.shader_test \
tests/hlsl-initializer-nested.shader_test \ tests/hlsl/initializer-implicit-array.shader_test \
tests/hlsl-initializer-numeric.shader_test \ tests/hlsl/initializer-invalid-arg-count.shader_test \
tests/hlsl-initializer-objects.shader_test \ tests/hlsl/initializer-local-array.shader_test \
tests/hlsl-initializer-static-array.shader_test \ tests/hlsl/initializer-matrix.shader_test \
tests/hlsl-initializer-struct.shader_test \ tests/hlsl/initializer-multi.shader_test \
tests/hlsl-intrinsic-override.shader_test \ tests/hlsl/initializer-nested.shader_test \
tests/hlsl-invalid.shader_test \ tests/hlsl/initializer-numeric.shader_test \
tests/hlsl-is-front-face.shader_test \ tests/hlsl/initializer-objects.shader_test \
tests/hlsl-ldexp.shader_test \ tests/hlsl/initializer-static-array.shader_test \
tests/hlsl-length.shader_test \ tests/hlsl/initializer-struct.shader_test \
tests/hlsl-lerp.shader_test \ tests/hlsl/intrinsic-override.shader_test \
tests/hlsl-majority-pragma.shader_test \ tests/hlsl/invalid.shader_test \
tests/hlsl-majority-typedef.shader_test \ tests/hlsl/is-front-face.shader_test \
tests/hlsl-matrix-indexing.shader_test \ tests/hlsl/ldexp.shader_test \
tests/hlsl-mul.shader_test \ tests/hlsl/length.shader_test \
tests/hlsl-nested-arrays.shader_test \ tests/hlsl/lerp.shader_test \
tests/hlsl-normalize.shader_test \ tests/hlsl/lit.shader_test \
tests/hlsl-numeric-constructor-truncation.shader_test \ tests/hlsl/load-level.shader_test \
tests/hlsl-numeric-types.shader_test \ tests/hlsl/log.shader_test \
tests/hlsl-numthreads.shader_test \ tests/hlsl/logic-operations.shader_test \
tests/hlsl-return-implicit-conversion.shader_test \ tests/hlsl/loop.shader_test \
tests/hlsl-shape.shader_test \ tests/hlsl/majority-pragma.shader_test \
tests/hlsl-single-numeric-initializer.shader_test \ tests/hlsl/majority-syntax.shader_test \
tests/hlsl-smoothstep.shader_test \ tests/hlsl/majority-typedef.shader_test \
tests/hlsl-state-block-syntax.shader_test \ tests/hlsl/math.shader_test \
tests/hlsl-static-initializer.shader_test \ tests/hlsl/matrix-indexing.shader_test \
tests/hlsl-storage-qualifiers.shader_test \ tests/hlsl/matrix-semantics.shader_test \
tests/hlsl-struct-array.shader_test \ tests/hlsl/max.shader_test \
tests/hlsl-struct-assignment.shader_test \ tests/hlsl/minimum-precision.shader_test \
tests/hlsl-struct-semantics.shader_test \ tests/hlsl/mul.shader_test \
tests/hlsl-ternary.shader_test \ tests/hlsl/multiple-rt.shader_test \
tests/hlsl-transpose.shader_test \ tests/hlsl/nested-arrays.shader_test \
tests/hlsl-trunc.shader_test \ tests/hlsl/nointerpolation.shader_test \
tests/hlsl-type-names.shader_test \ tests/hlsl/normalize.shader_test \
tests/hlsl-vector-indexing.shader_test \ tests/hlsl/numeric-constructor-truncation.shader_test \
tests/hlsl-vector-indexing-uniform.shader_test \ tests/hlsl/numeric-types.shader_test \
tests/lit.shader_test \ tests/hlsl/numthreads.shader_test \
tests/load-level.shader_test \ tests/hlsl/object-field-offsets.shader_test \
tests/log.shader_test \ tests/hlsl/object-parameters.shader_test \
tests/logic-operations.shader_test \ tests/hlsl/object-references.shader_test \
tests/loop.shader_test \ tests/hlsl/pow.shader_test \
tests/majority-syntax.shader_test \ tests/hlsl/reflect.shader_test \
tests/math.shader_test \ tests/hlsl/register-reservations.shader_test \
tests/matrix-semantics.shader_test \ tests/hlsl/return-implicit-conversion.shader_test \
tests/max.shader_test \ tests/hlsl/return.shader_test \
tests/minimum-precision.shader_test \ tests/hlsl/round.shader_test \
tests/multiple-rt.shader_test \ tests/hlsl/sample-bias.shader_test \
tests/nointerpolation.shader_test \ tests/hlsl/sample-grad.shader_test \
tests/object-field-offsets.shader_test \ tests/hlsl/sample-level.shader_test \
tests/object-parameters.shader_test \ tests/hlsl/sampler-offset.shader_test \
tests/object-references.shader_test \ tests/hlsl/sampler.shader_test \
tests/pow.shader_test \ tests/hlsl/saturate.shader_test \
tests/hlsl/shader-interstage-interface.shader_test \
tests/hlsl/shape.shader_test \
tests/hlsl/side-effects.shader_test \
tests/hlsl/sign.shader_test \
tests/hlsl/single-numeric-initializer.shader_test \
tests/hlsl/smoothstep.shader_test \
tests/hlsl/sqrt.shader_test \
tests/hlsl/state-block-syntax.shader_test \
tests/hlsl/static-initializer.shader_test \
tests/hlsl/step.shader_test \
tests/hlsl/storage-qualifiers.shader_test \
tests/hlsl/struct-array.shader_test \
tests/hlsl/struct-assignment.shader_test \
tests/hlsl/struct-semantics.shader_test \
tests/hlsl/swizzle-constant-prop.shader_test \
tests/hlsl/swizzle-matrix.shader_test \
tests/hlsl/swizzles.shader_test \
tests/hlsl/ternary.shader_test \
tests/hlsl/texture-load-offset.shader_test \
tests/hlsl/texture-load-typed.shader_test \
tests/hlsl/texture-load.shader_test \
tests/hlsl/texture-ordering.shader_test \
tests/hlsl/transpose.shader_test \
tests/hlsl/trigonometry.shader_test \
tests/hlsl/trunc.shader_test \
tests/hlsl/type-names.shader_test \
tests/hlsl/uav-load.shader_test \
tests/hlsl/uav-out-param.shader_test \
tests/hlsl/uav-rwbuffer.shader_test \
tests/hlsl/uav-rwstructuredbuffer.shader_test \
tests/hlsl/uav-rwtexture.shader_test \
tests/hlsl/uniform-semantics.shader_test \
tests/hlsl/vector-indexing-uniform.shader_test \
tests/hlsl/vector-indexing.shader_test \
tests/hlsl/writemask-assignop-0.shader_test \
tests/hlsl/writemask-assignop-1.shader_test \
tests/hlsl/writemask-assignop-2.shader_test \
tests/hlsl/writemask-assignop-3.shader_test \
tests/preproc-if-expr.shader_test \
tests/preproc-if.shader_test \ tests/preproc-if.shader_test \
tests/preproc-ifdef.shader_test \ tests/preproc-ifdef.shader_test \
tests/preproc-if-expr.shader_test \
tests/preproc-invalid.shader_test \ tests/preproc-invalid.shader_test \
tests/preproc-macro.shader_test \ tests/preproc-macro.shader_test \
tests/preproc-misc.shader_test \ tests/preproc-misc.shader_test
tests/reflect.shader_test \
tests/register-reservations.shader_test \
tests/return.shader_test \
tests/round.shader_test \
tests/sample-bias.shader_test \
tests/sample-grad.shader_test \
tests/sample-level.shader_test \
tests/sampler.shader_test \
tests/sampler-offset.shader_test \
tests/saturate.shader_test \
tests/shader-interstage-interface.shader_test \
tests/side-effects.shader_test \
tests/sign.shader_test \
tests/sqrt.shader_test \
tests/step.shader_test \
tests/swizzle-constant-prop.shader_test \
tests/swizzles.shader_test \
tests/texture-load.shader_test \
tests/texture-load-offset.shader_test \
tests/texture-load-typed.shader_test \
tests/trigonometry.shader_test \
tests/uav-load.shader_test \
tests/uav-out-param.shader_test \
tests/uav-rwbuffer.shader_test \
tests/uav-rwstructuredbuffer.shader_test \
tests/uav-rwtexture.shader_test \
tests/writemask-assignop-0.shader_test \
tests/writemask-assignop-1.shader_test \
tests/writemask-assignop-2.shader_test \
tests/writemask-assignop-3.shader_test
vkd3d_test_headers = \ vkd3d_test_headers = \
tests/d3d12_crosstest.h \ tests/d3d12_crosstest.h \
@@ -270,6 +278,7 @@ libvkd3d_shader_la_SOURCES = \
libs/vkd3d-shader/d3d_asm.c \ libs/vkd3d-shader/d3d_asm.c \
libs/vkd3d-shader/d3dbc.c \ libs/vkd3d-shader/d3dbc.c \
libs/vkd3d-shader/dxbc.c \ libs/vkd3d-shader/dxbc.c \
libs/vkd3d-shader/dxil.c \
libs/vkd3d-shader/glsl.c \ libs/vkd3d-shader/glsl.c \
libs/vkd3d-shader/hlsl.c \ libs/vkd3d-shader/hlsl.c \
libs/vkd3d-shader/hlsl.h \ libs/vkd3d-shader/hlsl.h \
@@ -283,7 +292,7 @@ libvkd3d_shader_la_SOURCES = \
libs/vkd3d-shader/vkd3d_shader_main.c \ libs/vkd3d-shader/vkd3d_shader_main.c \
libs/vkd3d-shader/vkd3d_shader_private.h libs/vkd3d-shader/vkd3d_shader_private.h
libvkd3d_shader_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_SHADER_SOURCE -I$(srcdir)/libs/vkd3d-shader @SPIRV_TOOLS_CFLAGS@ libvkd3d_shader_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_SHADER_SOURCE -I$(srcdir)/libs/vkd3d-shader @SPIRV_TOOLS_CFLAGS@
libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 7:0:6 libvkd3d_shader_la_LDFLAGS = $(AM_LDFLAGS) -version-info 8:0:7
libvkd3d_shader_la_LIBADD = libvkd3d-common.la @SPIRV_TOOLS_LIBS@ -lm libvkd3d_shader_la_LIBADD = libvkd3d-common.la @SPIRV_TOOLS_LIBS@ -lm
if HAVE_LD_VERSION_SCRIPT if HAVE_LD_VERSION_SCRIPT
libvkd3d_shader_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-shader/vkd3d_shader.map libvkd3d_shader_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-shader/vkd3d_shader.map
@@ -301,8 +310,9 @@ libvkd3d_la_SOURCES = \
include/private/vkd3d_common.h \ include/private/vkd3d_common.h \
include/private/vkd3d_debug.h \ include/private/vkd3d_debug.h \
include/private/vkd3d_memory.h \ include/private/vkd3d_memory.h \
include/private/vkd3d_utf8.h \ include/private/vkd3d_shader_utils.h \
include/private/vkd3d_test.h \ include/private/vkd3d_test.h \
include/private/vkd3d_utf8.h \
include/vkd3d_d3d12.idl \ include/vkd3d_d3d12.idl \
include/vkd3d_d3dcommon.idl \ include/vkd3d_d3dcommon.idl \
include/vkd3d_unknown.idl \ include/vkd3d_unknown.idl \
@@ -317,7 +327,7 @@ libvkd3d_la_SOURCES = \
libs/vkd3d/vkd3d_shaders.h \ libs/vkd3d/vkd3d_shaders.h \
libs/vkd3d/vulkan_procs.h libs/vkd3d/vulkan_procs.h
libvkd3d_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_SOURCE libvkd3d_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_SOURCE
libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 9:0:8 libvkd3d_la_LDFLAGS = $(AM_LDFLAGS) -version-info 10:0:9
libvkd3d_la_LIBADD = libvkd3d-common.la libvkd3d-shader.la @DL_LIBS@ @PTHREAD_LIBS@ libvkd3d_la_LIBADD = libvkd3d-common.la libvkd3d-shader.la @DL_LIBS@ @PTHREAD_LIBS@
if HAVE_LD_VERSION_SCRIPT if HAVE_LD_VERSION_SCRIPT
libvkd3d_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d/vkd3d.map libvkd3d_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d/vkd3d.map
@@ -329,7 +339,7 @@ libvkd3d_utils_la_SOURCES = \
libs/vkd3d-utils/vkd3d_utils_main.c \ libs/vkd3d-utils/vkd3d_utils_main.c \
libs/vkd3d-utils/vkd3d_utils_private.h libs/vkd3d-utils/vkd3d_utils_private.h
libvkd3d_utils_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_UTILS_SOURCE libvkd3d_utils_la_CFLAGS = $(AM_CFLAGS) -DLIBVKD3D_UTILS_SOURCE
libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:4:3 libvkd3d_utils_la_LDFLAGS = $(AM_LDFLAGS) -version-info 4:5:3
libvkd3d_utils_la_LIBADD = libvkd3d-common.la libvkd3d-shader.la libvkd3d.la @PTHREAD_LIBS@ libvkd3d_utils_la_LIBADD = libvkd3d-common.la libvkd3d-shader.la libvkd3d.la @PTHREAD_LIBS@
if HAVE_LD_VERSION_SCRIPT if HAVE_LD_VERSION_SCRIPT
libvkd3d_utils_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-utils/vkd3d_utils.map libvkd3d_utils_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libs/vkd3d-utils/vkd3d_utils.map
@@ -347,11 +357,16 @@ EXTRA_DIST += \
libs/vkd3d-shader/libvkd3d-shader.pc.in \ libs/vkd3d-shader/libvkd3d-shader.pc.in \
libs/vkd3d-utils/libvkd3d-utils.pc.in libs/vkd3d-utils/libvkd3d-utils.pc.in
bin_PROGRAMS = vkd3d-compiler bin_PROGRAMS = vkd3d-compiler vkd3d-dxbc
vkd3d_compiler_SOURCES = programs/vkd3d-compiler/main.c vkd3d_compiler_SOURCES = programs/vkd3d-compiler/main.c
vkd3d_compiler_CFLAGS = $(AM_CFLAGS) @NCURSES_CFLAGS@ vkd3d_compiler_CFLAGS = $(AM_CFLAGS) @NCURSES_CFLAGS@
vkd3d_compiler_LDADD = libvkd3d-shader.la @NCURSES_LIBS@ vkd3d_compiler_LDADD = libvkd3d-shader.la @NCURSES_LIBS@
vkd3d_dxbc_SOURCES = programs/vkd3d-dxbc/main.c
vkd3d_dxbc_CFLAGS = $(AM_CFLAGS) @NCURSES_CFLAGS@
vkd3d_dxbc_LDADD = libvkd3d-shader.la @NCURSES_LIBS@
LDADD = libvkd3d.la libvkd3d-shader.la libvkd3d-utils.la LDADD = libvkd3d.la libvkd3d-shader.la libvkd3d-utils.la
AM_DEFAULT_SOURCE_EXT = .c AM_DEFAULT_SOURCE_EXT = .c

19
README
View File

@@ -15,8 +15,8 @@ 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 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 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 widl. By default, vkd3d will use the widl found in `PATH'. If widl is not
available or is not recent (>= 3.20), then you can build Wine with `make available or is not recent (>= 3.21), then you can build Wine with `make
tools/widl' to avoid building all of Wine. You can then point vkd3d's 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"'. 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 For release builds, you may want to define NDEBUG. If you do not need debug log
@@ -47,8 +47,8 @@ commas or semicolons.
* NO_COLOR - this is an alias of NO_COLOUR. * NO_COLOR - this is an alias of NO_COLOUR.
* NO_COLOUR - when set, vkd3d-compiler will default to monochrome output, * NO_COLOUR - when set, vkd3d-compiler and vkd3d-dxbc will default to
even when the output supports colour. monochrome output, even when the output supports colour.
* VKD3D_CONFIG - a list of options that change the behavior of libvkd3d. * VKD3D_CONFIG - a list of options that change the behavior of libvkd3d.
* virtual_heaps - Create descriptors for each D3D12 root signature * virtual_heaps - Create descriptors for each D3D12 root signature
@@ -82,3 +82,14 @@ commas or semicolons.
conditions in tests. conditions in tests.
* VKD3D_TEST_BUG - set to 0 to disable bug_if() 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,5 +1,5 @@
AC_PREREQ([2.69]) AC_PREREQ([2.69])
AC_INIT([vkd3d],[1.8]) 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])
@@ -27,7 +27,7 @@ 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
VKD3D_PROG_WIDL(3, 20) 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_PROGS([FLEX], [flex], [none]) AC_CHECK_PROGS([FLEX], [flex], [none])
@@ -143,7 +143,8 @@ VKD3D_CHECK_FUNC([HAVE_BUILTIN_ADD_OVERFLOW], [__builtin_add_overflow], [__built
VKD3D_CHECK_FUNC([HAVE_SYNC_ADD_AND_FETCH], [__sync_add_and_fetch], [__sync_add_and_fetch((int *)0, 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_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_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)]) VKD3D_CHECK_FUNC([HAVE_ATOMIC_EXCHANGE_N], [__atomic_exchange_n], [__atomic_exchange_n((int *)0, 0, 0)])
VKD3D_CHECK_FUNC([HAVE_GETTID], [gettid], [gettid()])
dnl Makefiles dnl Makefiles
case $host_os in case $host_os in

View File

@@ -19,7 +19,7 @@
#define VK_NO_PROTOTYPES #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_8 #define VKD3D_UTILS_API_VERSION VKD3D_API_VERSION_1_9
#include "config.h" #include "config.h"
#include <vkd3d.h> #include <vkd3d.h>
#include <vkd3d_utils.h> #include <vkd3d_utils.h>
@@ -113,6 +113,9 @@ struct demo_swapchain
VkDevice vk_device; VkDevice vk_device;
ID3D12CommandQueue *command_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;
ID3D12Resource *buffers[1]; ID3D12Resource *buffers[1];
@@ -529,6 +532,17 @@ 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); ID3D12CommandQueue_AddRef(swapchain->command_queue = command_queue);
@@ -574,6 +588,12 @@ 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;
/* 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); vk_queue = vkd3d_acquire_vk_queue(swapchain->command_queue);
vkQueuePresentKHR(vk_queue, &present_desc); vkQueuePresentKHR(vk_queue, &present_desc);
vkd3d_release_vk_queue(swapchain->command_queue); vkd3d_release_vk_queue(swapchain->command_queue);
@@ -589,6 +609,7 @@ static inline void demo_swapchain_destroy(struct demo_swapchain *swapchain)
unsigned int i; unsigned int i;
ID3D12CommandQueue_Release(swapchain->command_queue); 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]);

51
gitlab/README Normal file
View File

@@ -0,0 +1,51 @@
=====================
vkd3d testing scripts
=====================
These scripts are used by the GitLab CI feature to automatically run
the vkd3d tests on each merge request.
The CI target build-image, in the file image.yml, builds a Docker
image based on Debian bookworm with all the packages required for
testing, and uploads it to the GitLab container registry. The Docker
script is in the file image.docker.
The file build.yml contains the actual testing targets. Currently
vkd3d is tested on Linux, on x86-64 and i386, each architecture with
two different Vulkan drivers (both from Mesa): llvmpipe (a software
implementation) and RADV (a hardware implementation backed by an AMD
GPU); and on macOS, on Intel, using MoltenVK as Vulkan driver. The
testing logs are available as CI artifacts.
Some custom runner configuration is required in order to run the tests
on an AMD GPU. Specifically, a runner tagged with `amd-gpu' must be
available with the following features:
* of course a sufficiently recent AMD GPU must be available to the
host;
* the host kernel must have the appropriate driver and firmware
installed;
* the runner must forward the DRI nodes to the guest; this can be
configured by adding the line
devices = ["/dev/dri"]
to the relevant [runners.docker] section in the config.toml file;
* the DRI render nodes must be readable and writable by GID 800,
either because they belong to that group (e.g. because the group
`render', which typically owns those files, has GID 800) or via a
FS ACL; such stipulation is needed because in Debian group `render'
is created dynamically, therefore has no predictable GID: the use
of a fixed GID enables the guest system to be set up so that the
user running the tests can access the render nodes.
A runner on an Intel macOS system tagged with `mac' must also be
available to run the macOS tests. Unfortunately a system like Docker
is not available in this case to provide an isolated standard
environment for running the tests. All the software required to
compile and run the tests will therefore have to be installed directly
on the host system. Complete instructions to setup the macOS are
currently not available.

19
gitlab/build-linux Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
echo "Building $(git log -1)"
echo "---"
COMMIT=$(git rev-parse --short HEAD)
set -Eeuxo pipefail
./autogen.sh
rm -fr build
mkdir build
cd build
../configure --enable-demos && make -j$(nproc) && make -j$(nproc) crosstest && make -j$(nproc) check || touch ../pipeline_failed
mkdir -p ../artifacts/$COMMIT
rsync -Rr doc/* tests/*.exe test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT
git reset --hard

19
gitlab/build-mac Executable file
View File

@@ -0,0 +1,19 @@
#!/bin/bash
echo "Building $(git log -1)"
echo "---"
COMMIT=$(git rev-parse --short HEAD)
set -Eeuxo pipefail
./autogen.sh
rm -fr build
mkdir build
cd build
../configure && make -j$(sysctl -n hw.ncpu) && make -j$(sysctl -n hw.ncpu) crosstest && make -j$(sysctl -n hw.ncpu) check || touch ../pipeline_failed
mkdir -p ../artifacts/$COMMIT
rsync -Rr tests/*.exe test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT
git reset --hard

93
gitlab/build.yml Normal file
View File

@@ -0,0 +1,93 @@
.build-linux:
stage: build
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
image: $CI_REGISTRY/wine/vkd3d:debian-bookworm
interruptible: true
needs:
- job: build-image
optional: true
dependencies: []
script:
- git config --global --add safe.directory $CI_PROJECT_DIR
- git clean -fdx
- git reset --hard
- rm -fr .git/rebase-merge
- mkdir artifacts
- cat /proc/cpuinfo > artifacts/cpuinfo.txt
- cat /proc/meminfo > artifacts/meminfo.txt
- vulkaninfo > artifacts/vulkaninfo.txt
- git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-linux
- if [ -f pipeline_failed ] ; then exit 1 ; fi
artifacts:
when: always
paths:
- artifacts
build-radv-64:
extends: .build-linux
tags:
- amd-gpu
variables:
VK_LOADER_DRIVERS_SELECT: 'radeon_*'
build-llvmpipe-64:
extends: .build-linux
allow_failure: true
variables:
VK_LOADER_DRIVERS_SELECT: 'lvp_*'
build-radv-32:
extends: .build-linux
tags:
- amd-gpu
variables:
VK_LOADER_DRIVERS_SELECT: 'radeon_*'
CC: 'gcc -m32'
build-llvmpipe-32:
extends: .build-linux
allow_failure: true
variables:
VK_LOADER_DRIVERS_SELECT: 'lvp_*'
CC: 'gcc -m32'
build-mac:
stage: build
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
allow_failure: true
interruptible: true
needs: []
dependencies: []
tags:
- mac
script:
- git config --global --add safe.directory $CI_PROJECT_DIR
- git clean -fdx
- git reset --hard
- rm -fr .git/rebase-merge
# We use a custom ICD which is not marked as a portability driver,
# so that test programs are not confused.
- ./gitlab/patch_moltenvk_icd.sh
- export VK_DRIVER_FILES="$PWD/gitlab/MoltenVK_icd.json"
- mkdir artifacts
- system_profiler SPSoftwareDataType SPHardwareDataType > artifacts/systeminfo.txt
- vulkaninfo > artifacts/vulkaninfo.txt
- export PATH="/usr/local/opt/bison/bin:/usr/local/opt/flex/bin:$PATH"
- git clone --depth 1 --branch wine-3.21 https://gitlab.winehq.org/wine/wine.git
- cd wine
- mkdir build
- cd build
- ../configure --enable-win64 --without-x --without-freetype
- make tools/widl/widl
- cd ../..
- export PATH="$PWD/wine/build/tools/widl:$PATH"
- git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-mac
- if [ -f pipeline_failed ] ; then exit 1 ; fi
variables:
VKD3D_DISABLE_EXTENSIONS: "VK_EXT_descriptor_indexing"
artifacts:
when: always
paths:
- artifacts

41
gitlab/image.docker Normal file
View File

@@ -0,0 +1,41 @@
# FROM line will be added dynamically
WORKDIR /tmp
RUN export DEBIAN_FRONTEND=noninteractive; \
echo 'path-exclude=/usr/share/doc/*' > /etc/dpkg/dpkg.cfg.d/99-exclude-cruft && \
echo 'path-exclude=/usr/share/locale/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft && \
echo 'path-exclude=/usr/share/man/*' >> /etc/dpkg/dpkg.cfg.d/99-exclude-cruft && \
echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf && \
echo '#!/bin/sh' > /usr/sbin/policy-rc.d && \
echo 'exit 101' >> /usr/sbin/policy-rc.d && \
chmod +x /usr/sbin/policy-rc.d && \
dpkg --add-architecture i386 && \
apt-get update && \
apt-get dist-upgrade -y && \
apt-get install -y build-essential pkg-config gcc-multilib gcc-mingw-w64 \
autoconf automake libtool flex bison \
git ca-certificates rsync \
doxygen doxygen-latex graphviz \
mesa-vulkan-drivers mesa-vulkan-drivers:i386 \
vulkan-tools spirv-headers \
libvulkan-dev libvulkan-dev:i386 \
libncurses-dev libncurses-dev:i386 \
libxcb1-dev libxcb1-dev:i386 \
libxcb-util-dev libxcb-util-dev:i386 \
libxcb-icccm4-dev libxcb-icccm4-dev:i386 \
libxcb-keysyms1-dev libxcb-keysyms1-dev:i386 && \
git clone --depth 1 --branch wine-3.21 https://gitlab.winehq.org/wine/wine.git && \
cd wine && \
mkdir build && \
cd build && \
../configure --without-x --without-freetype && \
make tools/widl/widl && \
cp tools/widl/widl /usr/local/bin && \
cd ../.. && \
rm -rf wine && \
apt-get clean && \
groupadd host-render -g 800 && \
useradd -m gitlab -G host-render
USER gitlab

20
gitlab/image.yml Normal file
View File

@@ -0,0 +1,20 @@
build-image:
stage: image
rules:
- if: $CI_PIPELINE_SOURCE == 'push' && $CI_PROJECT_PATH == "wine/vkd3d" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- .gitlab-ci.yml
- gitlab/image.yml
- gitlab/image.docker
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
variables:
IMAGE_SOURCE: "$CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX/debian:bookworm"
IMAGE_LOCAL: "$CI_REGISTRY_IMAGE:debian-bookworm"
DOCKER_FILE: "$CI_PROJECT_DIR/gitlab/image.docker"
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "$CI_REGISTRY_USER" "$CI_REGISTRY_PASSWORD" | base64 | tr -d '\n')\"},\"$CI_DEPENDENCY_PROXY_SERVER\":{\"auth\":\"$(printf "%s:%s" "$CI_DEPENDENCY_PROXY_USER" "$CI_DEPENDENCY_PROXY_PASSWORD" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- sed -i "1iFROM $IMAGE_SOURCE" "$DOCKER_FILE"
- /kaniko/executor --context "$CI_PROJECT_DIR" --dockerfile "$DOCKER_FILE" --destination "$IMAGE_LOCAL"

12
gitlab/patch_moltenvk_icd.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
BASE_PATH="/usr/local/opt/molten-vk/share/vulkan/icd.d"
cp "$BASE_PATH/MoltenVK_icd.json" gitlab/MoltenVK_icd.json
# The driver path is relative
sed -i -e 's|"library_path" *: "|"library_path" : "'"$BASE_PATH/"'|g' gitlab/MoltenVK_icd.json
# We pretend this is not a portability driver, otherwise vkd3d won't
# find it
sed -i -e 's|"is_portability_driver" *: *true|"is_portability_driver" : false|g' gitlab/MoltenVK_icd.json

View File

@@ -20,6 +20,7 @@
#define __VKD3D_COMMON_H #define __VKD3D_COMMON_H
#include "config.h" #include "config.h"
#define WIN32_LEAN_AND_MEAN
#include "vkd3d_windows.h" #include "vkd3d_windows.h"
#include "vkd3d_types.h" #include "vkd3d_types.h"
@@ -28,6 +29,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#ifdef _MSC_VER #ifdef _MSC_VER
#include <intrin.h> #include <intrin.h>
@@ -171,6 +173,11 @@ static inline bool vkd3d_bound_range(size_t start, size_t count, size_t limit)
#endif #endif
} }
static inline bool vkd3d_object_range_overflow(size_t start, size_t count, size_t size)
{
return (~(size_t)0 - start) / size < count;
}
static inline uint16_t vkd3d_make_u16(uint8_t low, uint8_t high) static inline uint16_t vkd3d_make_u16(uint8_t low, uint8_t high)
{ {
return low | ((uint16_t)high << 8); return low | ((uint16_t)high << 8);
@@ -186,6 +193,21 @@ static inline int vkd3d_u32_compare(uint32_t x, uint32_t y)
return (x > y) - (x < y); return (x > y) - (x < y);
} }
static inline bool bitmap_clear(uint32_t *map, unsigned int idx)
{
return map[idx >> 5] &= ~(1u << (idx & 0x1f));
}
static inline bool bitmap_set(uint32_t *map, unsigned int idx)
{
return map[idx >> 5] |= (1u << (idx & 0x1f));
}
static inline bool bitmap_is_set(const uint32_t *map, unsigned int idx)
{
return map[idx >> 5] & (1u << (idx & 0x1f));
}
static inline int ascii_isupper(int c) static inline int ascii_isupper(int c)
{ {
return 'A' <= c && c <= 'Z'; return 'A' <= c && c <= 'Z';

View File

@@ -0,0 +1,67 @@
/*
* Copyright 2023 Conor McCarthy for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* 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.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __VKD3D_SHADER_UTILS_H
#define __VKD3D_SHADER_UTILS_H
#include "vkd3d_shader.h"
#define TAG_DXIL VKD3D_MAKE_TAG('D', 'X', 'I', 'L')
#define TAG_SHDR VKD3D_MAKE_TAG('S', 'H', 'D', 'R')
#define TAG_SHEX VKD3D_MAKE_TAG('S', 'H', 'E', 'X')
static inline enum vkd3d_result vkd3d_shader_parse_dxbc_source_type(const struct vkd3d_shader_code *dxbc,
enum vkd3d_shader_source_type *type, char **messages)
{
struct vkd3d_shader_dxbc_desc desc;
enum vkd3d_result ret;
unsigned int i;
*type = VKD3D_SHADER_SOURCE_NONE;
if ((ret = vkd3d_shader_parse_dxbc(dxbc, 0, &desc, messages)) < 0)
return ret;
for (i = 0; i < desc.section_count; ++i)
{
uint32_t tag = desc.sections[i].tag;
if (tag == TAG_SHDR || tag == TAG_SHEX)
{
*type = VKD3D_SHADER_SOURCE_DXBC_TPF;
#ifndef VKD3D_SHADER_UNSUPPORTED_DXIL
break;
#else
}
else if (tag == TAG_DXIL)
{
*type = VKD3D_SHADER_SOURCE_DXBC_DXIL;
/* Default to DXIL if both are present. */
break;
#endif
}
}
vkd3d_shader_free_dxbc(&desc);
if (*type == VKD3D_SHADER_SOURCE_NONE)
return VKD3D_ERROR_INVALID_SHADER;
return VKD3D_OK;
}
#endif /* __VKD3D_SHADER_UTILS_H */

View File

@@ -77,6 +77,7 @@ enum vkd3d_api_version
VKD3D_API_VERSION_1_6, VKD3D_API_VERSION_1_6,
VKD3D_API_VERSION_1_7, VKD3D_API_VERSION_1_7,
VKD3D_API_VERSION_1_8, VKD3D_API_VERSION_1_8,
VKD3D_API_VERSION_1_9,
VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION), VKD3D_FORCE_32_BIT_ENUM(VKD3D_API_VERSION),
}; };
@@ -207,7 +208,42 @@ VKD3D_API VkPhysicalDevice vkd3d_get_vk_physical_device(ID3D12Device *device);
VKD3D_API struct vkd3d_instance *vkd3d_instance_from_device(ID3D12Device *device); VKD3D_API struct vkd3d_instance *vkd3d_instance_from_device(ID3D12Device *device);
VKD3D_API uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue); VKD3D_API uint32_t vkd3d_get_vk_queue_family_index(ID3D12CommandQueue *queue);
/**
* Acquire the Vulkan queue backing a command queue.
*
* While a queue is acquired by the client, it is locked so that
* neither the vkd3d library nor other threads can submit work to
* it. For that reason it should be released as soon as possible with
* vkd3d_release_vk_queue(). The lock is not reentrant, so the same
* queue must not be acquired more than once by the same thread.
*
* Work submitted through the Direct3D 12 API exposed by vkd3d is not
* always immediately submitted to the Vulkan queue; sometimes it is
* kept in another internal queue, which might not necessarily be
* empty at the time vkd3d_acquire_vk_queue() is called. For this
* reason, work submitted directly to the Vulkan queue might appear to
* the Vulkan driver as being submitted before other work submitted
* though the Direct3D 12 API. If this is not desired, it is
* recommended to synchronize work submission using an ID3D12Fence
* object, by submitting to the queue a signal operation after all the
* Direct3D 12 work is submitted and waiting for it before calling
* vkd3d_acquire_vk_queue().
*
* \since 1.0
*/
VKD3D_API VkQueue vkd3d_acquire_vk_queue(ID3D12CommandQueue *queue); VKD3D_API VkQueue vkd3d_acquire_vk_queue(ID3D12CommandQueue *queue);
/**
* Release the Vulkan queue backing a command queue.
*
* This must be paired to an earlier corresponding
* vkd3d_acquire_vk_queue(). After this function is called, the Vulkan
* queue returned by vkd3d_acquire_vk_queue() must not be used any
* more.
*
* \since 1.0
*/
VKD3D_API void vkd3d_release_vk_queue(ID3D12CommandQueue *queue); VKD3D_API void vkd3d_release_vk_queue(ID3D12CommandQueue *queue);
VKD3D_API HRESULT vkd3d_create_image_resource(ID3D12Device *device, VKD3D_API HRESULT vkd3d_create_image_resource(ID3D12Device *device,

File diff suppressed because it is too large Load Diff

View File

@@ -21,6 +21,92 @@ import "vkd3d_windows.h";
#include "vkd3d_unknown.idl" #include "vkd3d_unknown.idl"
typedef enum D3D_PRIMITIVE
{
D3D_PRIMITIVE_UNDEFINED,
D3D_PRIMITIVE_POINT,
D3D_PRIMITIVE_LINE,
D3D_PRIMITIVE_TRIANGLE,
D3D_PRIMITIVE_LINE_ADJ = 6,
D3D_PRIMITIVE_TRIANGLE_ADJ,
D3D_PRIMITIVE_1_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_2_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_3_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_4_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_5_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_6_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_7_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_8_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_9_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_10_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_11_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_12_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_13_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_14_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_15_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_16_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_17_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_18_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_19_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_20_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_21_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_22_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_23_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_24_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_25_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_26_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_27_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_28_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_29_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_30_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_31_CONTROL_POINT_PATCH,
D3D_PRIMITIVE_32_CONTROL_POINT_PATCH,
D3D10_PRIMITIVE_UNDEFINED = 0,
D3D10_PRIMITIVE_POINT,
D3D10_PRIMITIVE_LINE,
D3D10_PRIMITIVE_TRIANGLE,
D3D10_PRIMITIVE_LINE_ADJ = 6,
D3D10_PRIMITIVE_TRIANGLE_ADJ,
D3D11_PRIMITIVE_UNDEFINED = 0,
D3D11_PRIMITIVE_POINT,
D3D11_PRIMITIVE_LINE,
D3D11_PRIMITIVE_TRIANGLE,
D3D11_PRIMITIVE_LINE_ADJ = 6,
D3D11_PRIMITIVE_TRIANGLE_ADJ,
D3D11_PRIMITIVE_1_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_2_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_3_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_4_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_5_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_6_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_7_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_8_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_9_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_10_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_11_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_12_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_13_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_14_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_15_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_16_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_17_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_18_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_19_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_20_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_21_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_22_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_23_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_24_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_25_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_26_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_27_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_28_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_29_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_30_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_31_CONTROL_POINT_PATCH,
D3D11_PRIMITIVE_32_CONTROL_POINT_PATCH,
} D3D_PRIMITIVE;
typedef enum D3D_PRIMITIVE_TOPOLOGY typedef enum D3D_PRIMITIVE_TOPOLOGY
{ {
D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0, D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,

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