Józef Kucia
d2e7fcdf77
libs/vkd3d: Add environment variable for disabling Vulkan extensions.
...
It's useful for testing, e.g. VKD3D_DISABLE_EXTENSIONS=VK_KHR_push_descriptor
2017-09-18 15:40:42 +02:00
Józef Kucia
acfd64c20e
libs/vkd3d: Avoid copying descriptors for dirty root descriptor tables.
2017-09-18 15:40:42 +02:00
Józef Kucia
67641a8999
libs/vkd3d: Initialize device feature options in vkd3d_init_device_caps().
2017-09-14 15:38:19 +02:00
Józef Kucia
554d07df06
libs/vkd3d: Warn about unmet feature level 11_0 requirements.
...
This isn't necessarily exhaustive.
2017-09-14 15:38:19 +02:00
Józef Kucia
602f9780f8
libs/vkd3d-shader: Implement "sample" interpolation qualifier.
2017-09-14 15:38:19 +02:00
Józef Kucia
2ea8ffb554
libs/vkd3d: Avoid vkCmdCopyQueryPoolResults() for not issued queries.
...
The Vulkan spec states:
* "If the query does not become available in a finite amount of time
(e.g. due to not issuing a query since the last reset), a
VK_ERROR_DEVICE_LOST error may occur."
* "If queries will never finish (e.g. due to being reset but not
issued), then vkGetQueryPoolResults may not return in finite time."
2017-09-14 14:57:09 +02:00
Józef Kucia
334c532401
libs/vkd3d: Implement d3d12_command_list_CopyResource() for buffers.
2017-09-14 14:57:09 +02:00
Józef Kucia
6b757f3002
libs/vkd3d-shader: Subtract BaseInstance from InstanceIndex.
...
Depends on SPV_KHR_shader_draw_parameters extension.
2017-09-12 17:42:42 +02:00
Józef Kucia
a77376121d
libs/vkd3d: Require VK_KHR_shader_draw_parameters device extension.
2017-09-12 17:42:42 +02:00
Józef Kucia
2425e2939a
libs/vkd3d: Match input layout elements with vertex shader inputs.
2017-09-11 22:35:16 +02:00
Józef Kucia
b19fe74284
libs/vkd3d-shader: Export shader signature parsing.
2017-09-11 22:35:16 +02:00
Józef Kucia
b61c785bd0
libs/vkd3d-shader: Implement SV_InstanceID.
2017-09-11 22:35:16 +02:00
Józef Kucia
cd99601b3c
libs/vkd3d: Implement offset computation for D3D12_APPEND_ALIGNED_ELEMENT.
2017-09-11 22:35:16 +02:00
Józef Kucia
8e802ed0af
libs/vkd3d: Update descriptor table ranges only with matching descriptor types.
2017-09-11 22:35:16 +02:00
Józef Kucia
a78fe60ef8
Revert "libs/vkd3d: Skip unbound UAV counters."
...
This reverts commit d9bc635d1a
.
We should not need to handle this invalid behavior. It was triggered
by the bug in d3d12_command_list_update_descriptor_table().
2017-09-11 22:35:16 +02:00
Józef Kucia
1cde37d341
libs/vkd3d: Fix updating descriptor sets for descriptor tables with gaps.
...
Fixes 9afaed918d
.
2017-09-11 22:35:16 +02:00
Józef Kucia
32966338df
libs/vkd3d: Get rid of UAV counter count from d3d12_pipeline_state.
2017-09-08 15:30:48 +02:00
Józef Kucia
e8868affc0
libs/vkd3d: Clear UAV counters dirty mask after updating descriptors.
2017-09-08 15:30:48 +02:00
Józef Kucia
d9bc635d1a
libs/vkd3d: Skip unbound UAV counters.
2017-09-08 15:04:30 +02:00
Józef Kucia
9afaed918d
libs/vkd3d: Bind descriptor set for UAV counters.
2017-09-08 15:04:30 +02:00
Józef Kucia
19dc6c412e
libs/vkd3d: Constify root signature pointers.
2017-09-08 15:04:30 +02:00
Józef Kucia
0d28036d2a
libs/vkd3d: Add UAV counter support for compute pipelines.
...
UAV counter descriptors are stored in a separate VkDescriptorSet.
A VkPipelineLayout created for compute pipeline is compatible for all
other descriptor sets with the VkPipelineLayout created for the root
signature. This ensures that only UAV counter bindings in the last
descriptor set may be disturbed when switching between pipelines with
compatible root signatures.
The implementation of vkd3d_popcount() is based on
https://graphics.stanford.edu/~seander/bithacks.html
2017-09-08 15:04:30 +02:00
Józef Kucia
37f4c9d2a3
libs/vkd3d: Print only TRACE() messages for not initialized descriptors.
...
A descriptor do not have to be initialized if it is not used by shaders.
2017-09-07 17:48:43 +02:00
Józef Kucia
30cd4cc59f
libs/vkd3d-shader: Always declare format for raw/structured image variables.
2017-09-07 17:48:43 +02:00
Józef Kucia
6dfb4ad520
libs/vkd3d-shader: Mark imm_atomic_alloc as UAV read instruction.
2017-09-07 17:48:43 +02:00
Józef Kucia
4af15035df
libs/vkd3d-shader: Improve some debug messages.
2017-09-07 17:48:43 +02:00
Józef Kucia
3191e1eaa9
libs/vkd3d-shader: Implement UAV counters instructions.
2017-09-07 17:15:54 +02:00
Józef Kucia
5ef6f71996
libs/vkd3d-shader: Emit declarations for UAV counters.
2017-09-07 17:15:54 +02:00
Józef Kucia
7416c83ae2
libs/vkd3d-shader: Rename vkd3d_descriptor_type to vkd3d_shader_descriptor_type.
2017-09-07 17:15:54 +02:00
Józef Kucia
efdf2ec691
libs/vkd3d-shader: Rename vkd3d_shader_push_constant to vkd3d_shader_push_constant_buffer.
...
This should be clearer. Multiple constant buffers can be assigned to
a single push constant range.
2017-09-07 17:15:54 +02:00
Józef Kucia
bd0c886281
libs/vkd3d: Store push constant ranges in root signatures.
...
In prep for UAV counters support.
2017-09-07 17:15:54 +02:00
Józef Kucia
ce8a0290b4
libs/vkd3d: Factor out vkd3d_create_pipeline_layout() function.
2017-09-07 17:15:54 +02:00
Józef Kucia
22b019137b
libs/vkd3d: Factor out vkd3d_create_descriptor_set_layout() function.
2017-09-07 17:15:53 +02:00
Józef Kucia
f587670445
libs/vkd3d: Drop support for SPIR-V shaders.
2017-09-07 17:15:53 +02:00
Józef Kucia
495bd6fddc
libs/vkd3d: Create Vulkan buffer views for UAV counter resources.
2017-09-07 17:15:53 +02:00
Józef Kucia
23150f6050
libs/vkd3d: Update Vulkan descriptor sets just before draw call.
2017-09-05 11:53:55 +02:00
Józef Kucia
36d7578093
libs/vkd3d: Move descriptor set functions closer to top of file.
...
In prep for the next commit.
2017-09-05 11:53:55 +02:00
Józef Kucia
9eee65c3ab
libs/vkd3d: Validate root signature size.
2017-09-05 11:53:55 +02:00
Józef Kucia
603a44fb46
libs/vkd3d: Implement d3d12_device_CopyDescriptors().
...
There is no easy way to duplicate or copy Vulkan views and samplers.
Therefore, we use reference counting for Vulkan views and samplers when
copying them between descriptor heaps.
2017-09-04 18:33:09 +02:00
Józef Kucia
a780b7a11c
libs/vkd3d: Implement reference counting for Vulkan views and samplers.
2017-09-04 18:33:09 +02:00
Józef Kucia
ea8e5eaaba
libs/vkd3d-shader: Introduce vkd3d_dxbc_compiler_emit_store_dst_swizzled() helper function.
2017-09-04 18:33:09 +02:00
Józef Kucia
3a4a71905e
libs/vkd3d-shader: Implement texel offset for gather4.
2017-09-04 12:46:52 +02:00
Józef Kucia
293ce313ac
libs/vkd3d-shader: Translate gather4 instructions.
2017-09-04 12:46:52 +02:00
Józef Kucia
5bdc928908
libs/vkd3d-shader: Export shader scan function.
...
For UAV counters support in libvkd3d.
2017-09-01 11:27:58 +02:00
Józef Kucia
e11b5fd566
libs/vkd3d-shader: Implement scanning for UAV counters.
2017-09-01 11:27:58 +02:00
Józef Kucia
df0e4bf9cd
libs/vkd3d: Fix default SRVs for 2D array textures.
2017-09-01 11:27:58 +02:00
Józef Kucia
62bd4e6e63
libs/vkd3d: Add support for OffsetInDescriptorsFromTableStart.
2017-08-31 11:21:34 +02:00
Józef Kucia
39a2c0e5f1
libs/vkd3d: Fix width and height for DSV descriptors.
2017-08-31 09:42:50 +02:00
Józef Kucia
7917b84ce9
libs/vkd3d: Fix width and height for RTV descriptors.
2017-08-31 09:42:50 +02:00
Józef Kucia
d8847aa462
libs/vkd3d: Fix texture region copying for miplevels other than 0.
2017-08-31 09:42:50 +02:00
Józef Kucia
0dca9909d9
libs/vkd3d: Copy single layer for array textures in d3d12_command_list_CopyTextureRegion().
2017-08-31 09:42:50 +02:00
Józef Kucia
660ee7b090
libs/vkd3d: Do not use PlaneSlice as layer index.
2017-08-31 09:42:50 +02:00
Józef Kucia
f3862db04d
libs/vkd3d: Use VK_PIPELINE_BIND_POINT_RANGE_SIZE.
2017-08-31 09:29:02 +02:00
Józef Kucia
72b109d380
libs/vkd3d-shader: Factor out vkd3d_spirv_build_image_instruction() function.
2017-08-31 09:29:02 +02:00
Józef Kucia
d42f46cab6
libs/vkd3d: Use d3d12_resource_is_buffer() in d3d12_command_list_ResolveQueryData().
2017-08-31 09:29:02 +02:00
Józef Kucia
904858f4a9
libs/vkd3d: Introduce d3d12_resource_is_texture() helper function.
...
Makes some code easier to read.
2017-08-30 18:31:52 +02:00
Henri Verbeet
f1aa742569
libs/vkd3d: Support D3D12_FEATURE_D3D12_OPTIONS in d3d12_device_CheckFeatureSupport().
2017-08-30 18:11:38 +02:00
Henri Verbeet
6f14c77a7a
libs/vkd3d: Explicitly initialise the queue timestamp bits variables in vkd3d_create_vk_device().
...
Avoids -Wmaybe-uninitialized warnings with gcc 4.9.2. More recent
versions of gcc are able to figure it out by themselves.
2017-08-30 18:11:34 +02:00
Józef Kucia
489abe870c
libs/vkd3d: Implement d3d12_resource_GetHeapProperties().
2017-08-30 17:57:23 +02:00
Sven Hesse
4aa534914b
libs/vkd3d: Implement CopyTextureRegion() for texture to texture.
2017-08-30 16:53:29 +02:00
Józef Kucia
f8ef6630df
libs/vkd3d: Implement d3d12_device_CopyDescriptorsSimple().
2017-08-30 16:41:41 +02:00
Józef Kucia
7c67665032
libs/vkd3d-shader: Implement ld_{raw, structured} for UAVs.
2017-08-30 16:41:41 +02:00
Józef Kucia
87a2fec426
libs/vkd3d-shader: Translate discard instructions.
2017-08-30 16:41:41 +02:00
Józef Kucia
99b72d4db1
libs/vkd3d-shader: Implement sample_l.
2017-08-30 16:41:41 +02:00
Józef Kucia
5b8d1fbdd5
libs/vkd3d-shader: Implement sample_c_lz.
2017-08-30 16:41:41 +02:00
Henri Verbeet
3019a3e8f1
libs/vkd3d: Support both native and Win32 wchar_t.
2017-08-29 16:36:05 +02:00
Sven Hesse
1f51eebe12
libs/vkd3d: Fail in GetTimestampFrequency() for queues without timestamp support.
2017-08-29 15:17:39 +02:00
Sven Hesse
5b6bd40464
libs/vkd3d: Cache the number of valid bits in queue timestamp queries.
2017-08-29 15:16:41 +02:00
Sven Hesse
4bfa651561
libs/vkd3d: Reset the queries before use.
2017-08-29 14:05:49 +02:00
Sven Hesse
531875d924
libs/vkd3d: Add a FIXME for binary occlusion queries.
2017-08-29 13:38:39 +02:00
Sven Hesse
027cc05209
libs/vkd3d: Set VK_QUERY_CONTROL_PRECISE_BIT for occlusion queries.
2017-08-29 13:38:39 +02:00
Józef Kucia
6800dc8e40
libs/vkd3d: Use switch instead of multiple ifs in vk_write_descriptor_set_from_d3d12_desc().
2017-08-29 12:43:04 +02:00
Józef Kucia
7864ac4d67
libs/vkd3d: Merge if statements in vk_write_descriptor_set_from_d3d12_desc().
2017-08-29 12:43:04 +02:00
Józef Kucia
61044c462b
libs/vkd3d: Add FIXME() for ignored max command count.
2017-08-29 10:32:24 +02:00
Henri Verbeet
a624787479
libs/vkd3d: Simplify d3d12_command_list_ResolveQueryData().
2017-08-28 20:38:17 +02:00
Henri Verbeet
040082d965
libs/vkd3d: Simplify d3d12_command_list_EndQuery().
2017-08-28 20:38:05 +02:00
Henri Verbeet
9af2876958
libs/vkd3d: Simplify d3d12_command_list_BeginQuery().
2017-08-28 20:37:51 +02:00
Henri Verbeet
7e5af314f1
libs/vkd3d: Validation should happen in the d3d12/Vulkan validation layers.
...
Unless we have tests that say otherwise.
2017-08-28 20:37:17 +02:00
Henri Verbeet
e228d776be
libs/vkd3d: Fix the d3d12_query_heap_create() argument order.
2017-08-28 20:37:03 +02:00
Henri Verbeet
da54bd0278
libs/vkd3d: Implement indirect dispatches.
2017-08-28 19:29:35 +02:00
Henri Verbeet
b000952e4f
libs/vkd3d: Implement indirect draws.
2017-08-28 19:26:31 +02:00
Henri Verbeet
b4d6aa0dbd
libs/vkd3d: Explicitly handle VK_ERROR_DEVICE_LOST in hresult_from_vk_result().
2017-08-28 19:21:17 +02:00
Józef Kucia
9b8260a246
libs/vkd3d-shader: Translate ld_uav_typed instructions.
2017-08-28 19:10:23 +02:00
Józef Kucia
d107538df8
libs/vkd3d: Implement UAVs for 2D array textures.
2017-08-28 19:10:23 +02:00
Sven Hesse
3001ad5a4f
libs/vkd3d: Implement ResolveQueryData() for QUERY_TYPE_PIPELINE_STATISTICS.
2017-08-28 15:15:26 +02:00
Sven Hesse
08c5b5ec2e
libs/vkd3d: Implement EndQuery() for QUERY_TYPE_PIPELINE_STATISTICS.
2017-08-28 15:13:41 +02:00
Sven Hesse
5d5587b917
libs/vkd3d: Implement BeginQuery() for QUERY_TYPE_PIPELINE_STATISTICS.
2017-08-28 15:13:01 +02:00
Józef Kucia
8f8eb71ff8
libs/vkd3d: Avoid calling vkGetPhysicalDeviceProperties() in d3d12_command_queue_GetTimestampFrequency().
2017-08-28 13:03:37 +02:00
Józef Kucia
b8c31b771d
libs/vkd3d: Add missing return statement in d3d12_command_list_ResolveQueryData().
2017-08-28 13:03:37 +02:00
Józef Kucia
faf86ebc58
libs/vkd3d: Add missing trace messages.
2017-08-28 13:03:37 +02:00
Józef Kucia
b5c89fa89f
libs/vkd3d-shader: Implement atomic compare exchange instructions.
2017-08-28 11:01:23 +02:00
Józef Kucia
482af89416
libs/vkd3d-shader: Implement remaining binary atomic instructions.
2017-08-28 11:01:23 +02:00
Sven Hesse
f8b7b26372
libs/vkd3d: Implement ResolveQueryData() for QUERY_TYPE_TIMESTAMP.
2017-08-25 15:16:06 +02:00
Sven Hesse
988e1a96de
libs/vkd3d: Implement EndQuery() for QUERY_TYPE_TIMESTAMP.
2017-08-25 15:16:05 +02:00
Sven Hesse
67587f81e4
libs/vkd3d: Remember the Query Heap creation properties.
2017-08-25 15:16:03 +02:00
Sven Hesse
65f63d14fa
libs/vkd3d: Implement d3d12_command_queue_GetTimestampFrequency().
2017-08-25 15:16:02 +02:00
Józef Kucia
4e300ab1d4
libs/vkd3d-shader: Translate imm_atomic_iadd instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
cb166fbd5a
libs/vkd3d-shader: Translate atomic_umax instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
d464c9033f
libs/vkd3d-shader: Translate atomic_umin instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
a836cc2fe3
libs/vkd3d-shader: Translate atomic_or instructions.
2017-08-24 17:00:16 +02:00
Józef Kucia
1c4b9be079
libs/vkd3d-shader: Implement store_{raw,structured} for TGSM.
2017-08-24 15:13:38 +02:00
Józef Kucia
f7f7c6d889
libs/vkd3d-shader: Implement ld_raw.
2017-08-24 15:13:38 +02:00
Józef Kucia
a94751398b
libs/vkd3d-shader: Add support for atomic instructions on TGSM.
2017-08-24 15:13:38 +02:00
Józef Kucia
61dd701284
libs/vkd3d-shader: Translate imm_atomic_exch instructions.
2017-08-24 15:13:38 +02:00
Józef Kucia
eba87fa55b
libs/vkd3d-shader: Implement ld_structured for TGSM.
2017-08-24 15:13:38 +02:00
Józef Kucia
cf5fb3fbc2
libs/vkd3d-shader: Fix swizzle for raw/structured instructions.
2017-08-24 15:13:38 +02:00
Józef Kucia
4bfd0456e5
libs/vkd3d-shader: Refactor raw/structured buffer addressing.
...
In prep for TGSM support.
2017-08-24 15:13:38 +02:00
Józef Kucia
4d0b4f4f71
libs/vkd3d-shader: Add vkd3d_spirv_build_op_composite_extract1() function.
2017-08-24 11:11:16 +02:00
Józef Kucia
cef35c7c76
libs/vkd3d-shader: Translate dcl_tgsm_structured instructions.
2017-08-24 11:11:16 +02:00
Józef Kucia
9ed0feed12
libs/vkd3d-shader: Translate dcl_tgsm_raw instructions.
2017-08-24 11:11:16 +02:00
Józef Kucia
19c1b81a71
libs/vkd3d-shader: Translate sync instructions.
2017-08-24 11:11:16 +02:00
Sven Hesse
3a966cf38e
libs/vkd3d: Mark D3D12_QUERY_HEAP_TYPE_SO_STATISTICS with a FIXME()
2017-08-23 17:31:12 +02:00
Sven Hesse
79cbc900bc
libs/vkd3d: Create Vulkan Query Pools for D3D12 Query Heaps.
2017-08-23 16:18:15 +02:00
Józef Kucia
6c5d8da24d
libs/vkd3d-shader: Store structure stride in symbol table.
2017-08-22 14:53:33 +02:00
Józef Kucia
eb5e7a4412
libs/vkd3d-shader: Implement ld_structured for SRVs.
2017-08-22 12:39:56 +02:00
Józef Kucia
d5697448eb
libs/vkd3d-shader: Translate dcl_resource_structured instructions.
2017-08-22 12:39:56 +02:00
Józef Kucia
77e47eddb9
libs/vkd3d-shader: Translate dcl_resource_raw instructions.
2017-08-22 12:39:56 +02:00
Józef Kucia
d443e0eb00
libs/vkd3d: Add support for buffer SRVs.
2017-08-22 12:39:56 +02:00
Józef Kucia
6ffe54b9ec
libs/vkd3d-shader: Translate round_z instructions.
2017-08-22 12:39:56 +02:00
Józef Kucia
694c20b1da
libs/vkd3d: Implement structured UAVs.
2017-08-21 16:30:33 +02:00
Józef Kucia
0f7c86e2bd
libs/vkd3d-shader: Translate store_structured instructions.
2017-08-21 16:30:33 +02:00
Józef Kucia
fbc5861728
libs/vkd3d: Track resource usage for UAV clears.
2017-08-21 12:41:07 +02:00
Józef Kucia
03e189386a
libs/vkd3d-shader: Translate atomic_iadd instructions.
2017-08-21 12:41:07 +02:00
Józef Kucia
d287591889
libs/vkd3d-shader: Set image format for UAV typed reads and atomic instructions.
2017-08-21 12:41:07 +02:00
Józef Kucia
a90c7c5f12
libs/vkd3d-shader: Add basic shader scan functionality.
2017-08-21 12:41:07 +02:00
Józef Kucia
49a877df86
libs/vkd3d: Allow creating UAVs with no desc for textures.
2017-08-21 12:41:07 +02:00
Józef Kucia
92bb7969a5
libs/vkd3d: Create push descriptor set only if needed.
2017-08-18 17:08:56 +02:00
Józef Kucia
b3d2b36afb
libs/vkd3d: Prohibit compressed formats for buffer views.
2017-08-18 17:08:56 +02:00
Józef Kucia
08284f0f85
libs/vkd3d: Fix draw calls with no framebuffer attachments.
2017-08-18 17:08:56 +02:00
Józef Kucia
41b7c46c3e
libs/vkd3d-shader: Translate dcl_uav_structured instructions.
2017-08-18 14:52:40 +02:00
Józef Kucia
cc0cce7d8e
libs/vkd3d: Add DXGI_FORMAT_R32_SINT format.
2017-08-18 14:52:40 +02:00
Józef Kucia
1f22a9bb6b
libs/vkd3d: Fix draws with no render targets.
2017-08-18 14:52:40 +02:00
Józef Kucia
8f631c8b0c
libs/vkd3d-shader: Make bytecode parser responsible for setting scalar register write masks.
2017-08-18 14:52:40 +02:00
Józef Kucia
ca9cc355b4
libs/vkd3d-shader: Recognize oDepth register.
2017-08-18 14:52:40 +02:00
Józef Kucia
dc7f65122d
libs/vkd3d-shader: Silence push constant size mismatch FIXMEs().
...
This generally doesn't mean anything. It may only be an issue
for out of bounds accesses.
2017-08-17 12:13:50 +02:00
Józef Kucia
ef2f490b20
libs/vkd3d-shader: Do not try to find matching signature element for system-value inputs.
...
Silences false-positive FIXME() messages.
2017-08-17 12:13:50 +02:00
Józef Kucia
242ef52d8b
libs/vkd3d-shader: Translate sample_c instructions.
...
Nvidia expects that the D_ref is packed together with texture
coordinates. The D_ref parameter is ignored.
This isn't a problem for glslang because in GLSL D_ref is generally
passed together with texture coordinates.
2017-08-16 17:38:33 +02:00
Józef Kucia
2527f820cd
libs/vkd3d-shader: Cleanup vkd3d_dxbc_compiler_prepare[_sampled]_image() functions.
2017-08-16 17:38:33 +02:00
Józef Kucia
c9426e939e
libs/vkd3d: Reduce width of format tables.
2017-08-16 17:38:33 +02:00
Józef Kucia
39ff9e4829
libs/vkd3d: Add more depth/stencil formats.
2017-08-16 17:38:33 +02:00
Józef Kucia
1d5b8b7d32
libs/vkd3d: Implement depth/stencil resource views.
2017-08-16 17:38:33 +02:00
Józef Kucia
67697f2b8f
libs/vkd3d: Factor out vkd3d_enable_extensions() function.
2017-08-16 17:38:33 +02:00
Józef Kucia
043d4d0acf
libs/vkd3d: Factor out vkd3d_check_extensions() function.
2017-08-16 17:38:33 +02:00
Józef Kucia
1857fdc1bc
libs/vkd3d-shader: Translate ld instructions.
2017-08-16 13:11:52 +02:00
Józef Kucia
f5515c46df
libs/vkd3d: Create default sampler for each root signature.
...
We need a sampler for SpvOpImageFetch aka texelFetch().
2017-08-16 13:11:52 +02:00
Józef Kucia
e3d6bac31b
libs/vkd3d-shader: Introduce vkd3d_shader_interface structure.
2017-08-16 13:11:52 +02:00
Józef Kucia
e6f6d01489
libs/vkd3d-shader: Implement resinfo for SRVs.
2017-08-16 13:11:52 +02:00
Józef Kucia
dc081f6f9e
libs/vkd3d: Set VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT only for typeless formats.
2017-08-15 13:10:05 +02:00
Henri Verbeet
26edc3c545
libs/vkd3d: Add typeless formats.
2017-08-15 13:10:05 +02:00
Józef Kucia
f82a90ff78
libs/vkd3d-shader: Fix write mask for vPrim register.
2017-08-15 11:25:10 +02:00
Józef Kucia
32e69fa945
libs/vkd3d: Use KHR_push_descriptor for root descriptors.
...
Thanks to KHR_push_descriptor, we do not have to allocate descriptor
sets for subsequent root descriptor parameters updates.
2017-08-11 13:58:04 +02:00
Józef Kucia
4a767a8f11
libs/vkd3d: Enable VK_KHR_get_physical_device_properties2 instance extension.
...
Required for VK_KHR_push_descriptor. Validation layers complain when
required extensions are not enabled.
2017-08-11 13:58:04 +02:00
Józef Kucia
9b54e0df17
libs/vkd3d: Add VK_KHR_push_descriptor extension.
2017-08-11 13:58:04 +02:00
Józef Kucia
5a9b625522
libs/vkd3d: Factor out d3d12_root_signature_init_root_descriptor_tables() function.
2017-08-11 13:58:04 +02:00
Józef Kucia
cc0cfb5a81
libs/vkd3d: Factor out d3d12_root_signature_init_root_descriptors() function.
...
Root descriptors are going to be assigned to a separate descriptor set
in order to be used with VK_KHR_push_descriptor.
2017-08-11 13:58:04 +02:00
Józef Kucia
e3cdf5226f
libs/vkd3d: Factor out d3d12_root_signature_init_static_samplers() function.
2017-08-11 13:58:04 +02:00
Józef Kucia
1261c7ea0f
libs/vkd3d: Do not update bound descriptor sets.
2017-08-11 13:58:04 +02:00
Józef Kucia
6ae3f1ee29
libs/vkd3d: Introduce vkd3d_pipeline_bindings structure.
2017-08-11 13:58:04 +02:00
Józef Kucia
9c2b126f38
libs/vkd3d: Factor out d3d12_root_signature_init_descriptor_pool_size().
2017-08-11 13:58:04 +02:00
Józef Kucia
17e49dc6c6
libs/vkd3d-shader: Translate store_raw instructions.
2017-08-11 13:58:04 +02:00
Józef Kucia
5aefd2c9e4
libs/vkd3d-shader: Translate dcl_uav_raw instructions.
2017-08-11 13:58:04 +02:00
Józef Kucia
69745d1c08
libs/vkd3d: Fix mapping for SRV/UAV root descriptors.
2017-08-11 13:58:04 +02:00
Józef Kucia
3b854a0023
libs/vkd3d: Get rid of bool parameter to d3d12_command_allocator_free_resources().
2017-08-11 13:58:04 +02:00
Józef Kucia
e01cc64d82
libs/vkd3d: Fix d3d12_device_GetCopyableFootprints() for 3D textures.
2017-08-09 19:38:06 +02:00
Józef Kucia
624699f5e6
libs/vkd3d: Add FIXME comment about sharing D3D12_RESOURCE_DESC validation code.
2017-08-09 19:38:06 +02:00
Józef Kucia
0075c87a38
libs/vkd3d: Drop VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT.
...
We do not use input attachments.
2017-08-09 18:44:16 +02:00
Józef Kucia
b0e47baebf
libs/vkd3d: Implement d3d12_command_list_Set{Compute,Graphics}RootUnorderedAccessView().
2017-08-09 18:44:16 +02:00
Sven Hesse
4d540d5b45
libs/vkd3d: Delete DXGI_FORMAT_UNKNOWN from the formats table again.
...
Put it into a local in GetCopyableFootprints() instead.
2017-08-09 17:15:05 +02:00
Sven Hesse
ae63b4f0a5
libs/vkd3d: Implement GetCopyableFootprints for DIMENSION_TEXTURE3D.
2017-08-09 15:16:08 +02:00
Sven Hesse
eebad15d62
libs/vkd3d: Implement GetCopyableFootprints for DIMENSION_TEXTURE1D.
2017-08-09 15:11:20 +02:00
Sven Hesse
3353643772
libs/vkd3d: Implement GetCopyableFootprints for DIMENSION_BUFFER.
2017-08-09 15:08:52 +02:00
Sven Hesse
1a7cabdde7
libs/vkd3d: Add DXGI_FORMAT_UNKNOWN.
2017-08-09 14:50:00 +02:00
Józef Kucia
2665cbe522
libs/vkd3d: Duplicate Vulkan descriptors for SRVs and UAVs.
...
Vulkan has different descriptor types for buffers and textures.
Therefore, we do not know the exact Vulkan descriptor type for D3D12 SRV
and UAV descriptors up front. This information can be extracted from
shaders when creating PSOs but creating incompatible Vulkan descriptor
set layouts for PSOs with the same root signature would introduce a lot
of complexity.
In order to preserve compatibility between resource bindings for PSOs
with the same root signature we duplicate Vulkan descriptors for SRVs
and UAVs (a buffer view and an image view descriptor). This strategy may
be reasonable for small root signatures.
2017-08-08 17:09:35 +02:00
Józef Kucia
1b02322c1d
libs/vkd3d: Overallocate descriptors for SRV and UAV descriptor ranges.
2017-08-08 17:09:35 +02:00
Józef Kucia
3eb5e59e37
libs/vkd3d: Count buffer SRVs and UAVs separately.
...
SRV and UAV root parameters are buffer views.
2017-08-08 17:09:35 +02:00
Józef Kucia
cb86c9c8d0
libs/vkd3d-shader: Implement resinfo for UAVs.
2017-08-08 17:09:35 +02:00
Józef Kucia
190115d3f8
libs/vkd3d: Implement creating 2D texture UAVs.
2017-08-08 17:09:35 +02:00
Józef Kucia
cdc5cd499f
libs/vkd3d: Avoid potential double free.
2017-08-07 14:53:51 +02:00
Józef Kucia
5825acc3a0
libs/vkd3d: Downgrade some FIXMEs() to WARNs().
...
These should be performance warnings at most.
2017-08-04 17:06:33 +02:00
Józef Kucia
1c69c504f6
libs/vkd3d: Mark d3d12_command_list_SetDescriptorHeaps() as implemented.
2017-08-04 17:06:33 +02:00
Józef Kucia
074513dc4d
libs/vkd3d: Add support for sampler descriptors in root descriptor tables.
2017-08-04 17:06:33 +02:00
Józef Kucia
0a0e29fbbf
libs/vkd3d: Add support for multiple descriptors in root descriptor tables.
2017-08-04 17:06:33 +02:00
Józef Kucia
fa0a2eab21
libs/vkd3d: Store Vulkan bindings for descriptor table root parameters in root signature.
2017-08-04 17:06:33 +02:00
Józef Kucia
db3a112fb5
libs/vkd3d: Add support for CBV descriptors in d3d12_command_list_set_descriptor_table().
2017-08-04 17:06:33 +02:00
Józef Kucia
0859b94833
libs/vkd3d: Implement d3d12_device_CreateConstantBufferView().
2017-08-04 17:06:33 +02:00
Sven Hesse
6de74f6cc3
libs/vkd3d: Don't calculate footprints for unaligned compressed textures.
2017-08-04 14:36:19 +02:00
Sven Hesse
a0675d1ba7
libs/vkd3d: Calculate footprint total size using row count, not height.
2017-08-04 14:35:02 +02:00
Józef Kucia
573460550e
libs/vkd3d: Do not assume CBV root parameter index is equal to Vulkan descriptor binding.
2017-08-02 15:30:15 +02:00
Józef Kucia
fb4e86b292
libs/vkd3d: Implement d3d12_command_list_SetComputeRootConstantBufferView().
2017-08-02 15:30:15 +02:00
Józef Kucia
ef0f90c0c7
libs/vkd3d: Factor out vkd3d_create_buffer_view() function.
2017-08-02 15:30:15 +02:00
Józef Kucia
de2024d235
libs/vkd3d: Do not try to create buffer views for block-compressed formats.
2017-08-02 15:30:15 +02:00
Sven Hesse
6629301ece
libs/vkd3d: Implement GetCopyableFootprints() for compressed formats.
2017-08-02 14:04:31 +02:00
Sven Hesse
47b92c3d37
libs/vkd3d: Add compressed texture formats.
2017-08-02 14:04:26 +02:00
Sven Hesse
1decba1a99
libs/vkd3d: Add block size information to the texture format array.
2017-08-02 14:03:39 +02:00
Józef Kucia
ab63423c80
libs/vkd3d: Factor out vkd3d_create_texture_view() function.
2017-08-01 16:56:44 +02:00
Józef Kucia
eb4c98db17
libs/vkd3d-shader: Add support for switch breaks nested in conditional branches.
2017-08-01 13:55:49 +02:00
Józef Kucia
6b93e6ce99
libs/vkd3d-shader: Add support for switch fall-through blocks.
2017-08-01 13:55:49 +02:00
Józef Kucia
fbeaf0ba95
libs/vkd3d-shader: Make sure that inserted chunks are sorted.
...
The list is expected to be empty or very small so insertion sort should
be fine.
2017-08-01 13:55:49 +02:00
Józef Kucia
3effb4b18c
libs/vkd3d-shader: Get rid of artificial limit for switch case blocks.
2017-08-01 11:38:10 +02:00
Józef Kucia
cd75aab7ba
libs/vkd3d: Factor out d3d12_root_signature_init_push_constants() helper function.
2017-08-01 10:51:45 +02:00
Józef Kucia
40cb21353e
libs/vkd3d: Extract descriptors counting to helper function.
2017-08-01 10:51:45 +02:00
Józef Kucia
ae8d8036c6
libs/vkd3d-shader: Implement switch control flow instructions.
2017-08-01 10:51:45 +02:00
Józef Kucia
5061dbaf0c
libs/vkd3d-shader: Add mechanism for inserting words into SPIR-V streams.
...
Allows inserting SPIR-V instructions at arbitrary locations in SPIR-V
streams.
2017-08-01 10:51:45 +02:00
Józef Kucia
c1c94e248c
libs/vkd3d-shader: Allow multiple push constant buffers.
2017-08-01 10:51:45 +02:00
Józef Kucia
3e91bc7c2d
libs/vkd3d: Fix push constant ranges allocation.
...
Any two push constant ranges must not include the same stage.
2017-08-01 10:51:45 +02:00
Józef Kucia
d75966ab9e
libs/vkd3d: Assign non-overlapping push constant ranges for root constants.
2017-08-01 10:51:45 +02:00
Józef Kucia
fec337a03c
libs/vkd3d-shader: Fix memory leak in vkd3d_dxbc_compiler_destroy().
2017-07-28 12:56:18 +02:00
Józef Kucia
85dc44e4ba
libs/vkd3d: Remove double semicolons.
2017-07-28 12:56:18 +02:00
Józef Kucia
9725eb3763
libs/vkd3d-shader: Remove double semicolons.
2017-07-28 12:56:18 +02:00
Józef Kucia
e074c30dc7
libs/vkd3d: Pass push constants mapping to shader compiler.
2017-07-28 10:19:37 +02:00
Józef Kucia
56b68c486c
libs/vkd3d: Implement d3d12_command_list_SetGraphicsRoot32BitConstants().
2017-07-28 10:19:37 +02:00
Józef Kucia
33eae49eda
libs/vkd3d: Implement d3d12_command_list_SetComputeRoot32BitConstants().
2017-07-28 10:19:37 +02:00
Józef Kucia
21e2633b10
libs/vkd3d: Implement d3d12_command_list_SetGraphicsRoot32BitConstant().
2017-07-28 10:19:37 +02:00
Józef Kucia
72f723522e
libs/vkd3d: Implement d3d12_command_list_SetComputeRoot32BitConstant().
2017-07-28 10:19:37 +02:00
Henri Verbeet
605a02274e
libs/vkd3d: Allocate GPU virtual addresses for resources.
...
Direct3D 12 resources, buffers in particular, are bound to the pipeline
by their GPU virtual address. In Vulkan, these addresses are not visible
to the application. We previously handled this by returning the VkBuffer
handle as virtual address, but this can't work when the application
binds anything other than the resource's base GPU VA. Instead, we
allocate ranges of GPU address space and associate resources with it.
This uses the (naive) approach of simply allocating subsequent ranges,
and never reclaiming them. Eventually we'll have to revisit that.
2017-07-27 16:28:46 +02:00
Henri Verbeet
1acd3d44b1
Implement d3d12_device_CreateQueryHeap().
2017-07-27 16:28:29 +02:00
Henri Verbeet
e9046a81cc
Implement d3d12_device_CreateCommandSignature().
2017-07-27 16:28:24 +02:00
Henri Verbeet
863a8f3f6f
libs/vkd3d: Add DXGI_FORMAT_BC3_UNORM_SRGB.
2017-07-27 16:27:41 +02:00
Henri Verbeet
2a3d121c74
libs/vkd3d: Add DXGI_FORMAT_R8_SNORM.
2017-07-27 16:26:36 +02:00
Henri Verbeet
abff100287
libs/vkd3d: Add DXGI_FORMAT_R16G16B16A16_UINT.
2017-07-27 16:25:34 +02:00
Józef Kucia
92fcb9ffa2
libs/vkd3d-shader: Add support for push constants.
2017-07-27 15:24:38 +02:00
Józef Kucia
7aaa801768
libs/vkd3d: Allow root signatures with no descriptors.
...
A root signature can have no descriptors when it is empty,
or it has only root constants.
2017-07-27 14:19:41 +02:00
Józef Kucia
bb80c759fc
libs/vkd3d: Introduce d3d12_root_signature_cleanup() helper function.
...
Reduces code duplication.
2017-07-27 14:19:41 +02:00
Józef Kucia
e3d3819789
libs/vkd3d: Fix copy-paste error in d3d12_root_signature_init().
2017-07-26 16:09:40 +02:00
Józef Kucia
1589ce7682
libs/vkd3d: Fix Vulkan bindings assignment.
...
Fixes 6d569fcbc6
,
2017-07-26 14:50:39 +02:00
Józef Kucia
a2e38b5672
libs/vkd3d: Set VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT only if width and height are equal.
2017-07-26 13:45:25 +02:00
Józef Kucia
6d569fcbc6
libs/vkd3d: Assign consecutive Vulkan bindings for D3D12 descriptors.
2017-07-26 13:45:25 +02:00
Józef Kucia
edd1e9602d
libs/vkd3d-shader: Implement arbitrary mappings from D3D shader register to Vulkan descriptors.
...
An arbitrary mapping can be passed to vkd3d_shader_compile_dxbc().
2017-07-26 13:45:25 +02:00
Józef Kucia
d39d0e4c9f
libs/vkd3d: Fix memory leak in d3d12_root_signature_init().
2017-07-25 18:47:42 +02:00
Sven Hesse
3328be8c87
libs/vkd3d: Unroll descriptor tables and fill in push constants
2017-07-25 17:41:58 +02:00
Józef Kucia
6c174beb4b
libs/vkd3d-shader: Use component types from input signatures for shader inputs.
...
Fixes Vulkan validation layers errors.
2017-07-25 14:23:27 +02:00
Józef Kucia
5a2ebc62f6
libs/vkd3d-shader: Use component types from output signatures for shader outputs.
...
Fixes Vulkan validation layers errors.
2017-07-25 14:23:27 +02:00
Józef Kucia
bb18c171bf
libs/vkd3d: Implement d3d12_command_list_Dispatch().
2017-07-25 12:50:14 +02:00
Józef Kucia
47cb8ba80f
libs/vkd3d: Bind compute pipeline.
2017-07-25 12:50:14 +02:00
Józef Kucia
982075db60
libs/vkd3d: Partially implement d3d12_command_list_SetComputeRootDescriptorTable().
2017-07-25 12:50:14 +02:00
Józef Kucia
5ac8dbfc64
libs/vkd3d: Implement d3d12_device_CreateUnorderedAccessView().
2017-07-25 12:50:14 +02:00
Józef Kucia
73cdf0164a
libs/vkd3d: Implement d3d12_command_list_SetComputeRootSignature().
2017-07-25 12:50:14 +02:00
Józef Kucia
3f4ef37b88
libs/vkd3d: Introduce d3d12_command_list_allocate_descriptor_set() helper function.
2017-07-25 12:50:14 +02:00
Józef Kucia
055b27da12
libs/vkd3d: Rename current_descriptor_set to graphics_descriptor_set.
2017-07-25 12:50:14 +02:00
Józef Kucia
d0a4238e39
libs/vkd3d: Allocate Vulkan descriptors for UAVs.
2017-07-25 12:50:14 +02:00
Józef Kucia
bd437d547f
libs/vkd3d: Add support for compute command allocators.
2017-07-25 11:22:34 +02:00
Józef Kucia
a0e82064dc
libs/vkd3d-shader: Mask coordinates for OpImageWrite instructions.
2017-07-24 19:43:50 +02:00
Józef Kucia
046afde8db
libs/vkd3d-shader: Store resource type info in table.
2017-07-24 19:43:50 +02:00
Józef Kucia
aa3465ac83
libs/vkd3d-shader: Fix bitcasts for shader inputs.
2017-07-24 19:43:50 +02:00
Józef Kucia
c71d609fb6
libs/vkd3d-shader: Fix write mask for vThreadIDInGroupFlattened.
2017-07-24 19:43:50 +02:00
Józef Kucia
6bbd6c948a
libs/vkd3d-shader: Translate store_uav_typed instructions.
2017-07-24 19:43:50 +02:00
Józef Kucia
4746833a6f
libs/vkd3d-shader: Translate dcl_uav_typed instructions.
2017-07-24 19:43:50 +02:00
Józef Kucia
00606b7dff
libs/vkd3d: Fix logic for choosing compute-only queue family index.
2017-07-21 22:29:12 +02:00
Józef Kucia
d35ffe53ad
libs/vkd3d: Initialize device->compute_queue_family_index.
...
Fixes dadce84a4b
.
2017-07-21 22:29:12 +02:00
Sven Hesse
dadce84a4b
libs/vkd3d: Create a compute queue family.
2017-07-21 15:24:57 +02:00