Commit Graph

738 Commits

Author SHA1 Message Date
Józef Kucia 89a2dc46dd libs/vkd3d: Set names for internal threads.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-27 22:43:48 +02:00
Józef Kucia 6df54305e6 libs/vkd3d: Add support for 2D array render target views.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-06-26 21:58:54 +02:00
Józef Kucia f0a1e14113 libs/vkd3d: Mark device as removed when command list in recording state is executed.
Fixes a GPU hang in test_device_removed_reason() on RADV.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-16 21:59:57 +02:00
Józef Kucia 2a430ae991 libs/vkd3d: Return early if there are no descriptors to update.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:12 +02:00
Józef Kucia 277cdd4e95 libs/vkd3d: Fix memory leak in d3d12_command_queue_ExecuteCommandLists().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:09 +02:00
Józef Kucia 830f7c1e49 libs/vkd3d: Propagate error code in vkd3d_fence_worker_stop().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-13 19:08:01 +02:00
Józef Kucia 0e86a6b353 libs/vkd3d: Use HRESULT as preferred error code.
For consistency.

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-11 18:56:25 +02:00
Józef Kucia bfd20ef1c8 libs/vkd3d: Add support for custom PRESENT state transitions.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-30 14:10:55 +02:00
Józef Kucia 26cbfbe647 libs/vkd3d: Implement d3d12_command_list_CopyResource() for textures.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-28 19:48:23 +02:00
Józef Kucia abcd0348a0 libs/vkd3d: Fix single descriptor handles in d3d12_command_list_OMSetRenderTargets().
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-13 18:39:47 +01:00
Józef Kucia dd6dedd9d1 libs/vkd3d: Add remaining helper functions for CPU descriptor handles.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-08 21:59:04 +01:00
Józef Kucia 55025f7bec libs/vkd3d: Get rid of vkd3d_get_vk_queue().
Replaced by vkd3d_acquire_vk_queue().

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-16 20:11:12 +01:00
Józef Kucia 12ca2bbcf6 libs/vkd3d: Add thread-safe API for accessing Vulkan command queues.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-15 17:51:39 +01:00
Józef Kucia db2e1d402e libs/vkd3d: Synchronize access to Vulkan queues.
Access to VkQueue must be externally synchronized.

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

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

Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-09 20:37:12 +01:00
Józef Kucia f2b37c732a libs/vkd3d: Use if-else in d3d12_command_list_get_fb_extent(). 2017-10-24 12:10:48 +02:00
Józef Kucia c70a023aeb libs/vkd3d: Remove FIXME comment from vk_barrier_parameters_from_d3d12_resource_state(). 2017-10-24 12:10:48 +02:00
Józef Kucia b211df683e libs/vkd3d: Implement copying between depth/stencil and color textures.
This could be implemented more efficiently, but ideally we would get
a Vulkan extension for copying between depth/stencil and color textures.
2017-10-20 18:27:17 +02:00
Józef Kucia 853068c84d libs/vkd3d: Get rid of host writes memory dependency for intial state transitions. 2017-10-06 17:06:31 +02:00
Józef Kucia 97bfba1167 libs/vkd3d: Avoid read access bits in source access masks.
A memory dependency is used to make memory writes available
and visible.
2017-10-06 17:06:31 +02:00
Józef Kucia 67aed755ab libs/vkd3d: Implement d3d12_command_list_ClearUnorderedAccessViewUint() for R32_UINT buffer views.
Ideally, we would store additional informations only in CPU descriptors.
2017-10-04 13:55:33 +02:00
Józef Kucia fecc94cebc libs/vkd3d: Add helpers for dereferencing descriptor handles. 2017-10-04 13:55:33 +02:00
Józef Kucia 14d975da8d libs/vkd3d: Unroll descriptor copies for SRVs and UAVs.
Consecutive binding updates need to have the same descriptor type
according to validation layers.
2017-09-22 16:42:07 +02:00
Józef Kucia 6ef1961ed0 libs/vkd3d: Avoid recording invalid vkCmdCopyImage() commands. 2017-09-21 15:12:13 +02:00
Józef Kucia 54cd424daf libs/vkd3d: Implement d3d12_command_list_SetGraphicsRootShaderResourceView(). 2017-09-19 17:29:20 +02:00
Józef Kucia eb8eba02bd libs/vkd3d: Implement d3d12_command_list_SetComputeRootShaderResourceView(). 2017-09-19 17:29:20 +02:00
Józef Kucia 90cf804d9b libs/vkd3d: Use Vulkan pipeline cache for graphics pipelines. 2017-09-19 10:58:04 +02:00
Józef Kucia acfd64c20e libs/vkd3d: Avoid copying descriptors for dirty root descriptor tables. 2017-09-18 15:40:42 +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 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 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 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 a780b7a11c libs/vkd3d: Implement reference counting for Vulkan views and samplers. 2017-09-04 18:33:09 +02:00
Józef Kucia 62bd4e6e63 libs/vkd3d: Add support for OffsetInDescriptorsFromTableStart. 2017-08-31 11:21:34 +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 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
Sven Hesse 4aa534914b libs/vkd3d: Implement CopyTextureRegion() for texture to texture. 2017-08-30 16:53:29 +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 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
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
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 65f63d14fa libs/vkd3d: Implement d3d12_command_queue_GetTimestampFrequency(). 2017-08-25 15:16:02 +02:00
Józef Kucia d443e0eb00 libs/vkd3d: Add support for buffer SRVs. 2017-08-22 12:39:56 +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 92bb7969a5 libs/vkd3d: Create push descriptor set only if needed. 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 1f22a9bb6b libs/vkd3d: Fix draws with no render targets. 2017-08-18 14:52:40 +02:00
Józef Kucia 1d5b8b7d32 libs/vkd3d: Implement depth/stencil resource views. 2017-08-16 17:38:33 +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 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 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 b0e47baebf libs/vkd3d: Implement d3d12_command_list_Set{Compute,Graphics}RootUnorderedAccessView(). 2017-08-09 18:44:16 +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 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 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
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 85dc44e4ba libs/vkd3d: Remove double semicolons. 2017-07-28 12:56:18 +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
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 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 bd437d547f libs/vkd3d: Add support for compute command allocators. 2017-07-25 11:22:34 +02:00
Sven Hesse dadce84a4b libs/vkd3d: Create a compute queue family. 2017-07-21 15:24:57 +02:00
Józef Kucia 02506b24c4 libs/vkd3d: Partially implement d3d12_command_list_SetGraphicsRootDescriptorTable().
A very naive implementation. Mainly to unblock some shader translation
work.
2017-07-17 16:25:29 +02:00
Józef Kucia 2dfbc88a89 libs/vkd3d: Implement copying from buffers to images. 2017-07-14 13:44:35 +02:00
Henri Verbeet d61b6a3545 include: Add the missing "values" parameter to ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat(). 2017-07-11 12:21:15 +02:00
Henri Verbeet 99d2ba411e include: Add the missing ClearUnorderedAccessViewUint() method to the ID3D12GraphicsCommandList interface. 2017-07-11 12:21:11 +02:00
Józef Kucia be9849ace4 libs/vkd3d: Avoid race condition when destroying fences. 2017-06-26 17:03:31 +02:00
Józef Kucia ae8d869013 libs/vkd3d: Use VK_NULL_HANDLE instead of NULL.
Fixes a compiler warning for 32-bit builds.
2017-06-26 17:03:31 +02:00
Józef Kucia 9a59184e9f libs/vkd3d: Reset current root signature in d3d12_command_list_Reset(). 2017-06-23 22:24:33 +02:00
Józef Kucia 532da7d4e1 libs/vkd3d: Clear current descriptor set when descriptor pool is destroyed. 2017-06-23 22:24:33 +02:00
Józef Kucia fa52702774 libs/vkd3d: Always update current root signature in d3d12_command_list_SetGraphicsRootSignature(). 2017-06-23 22:24:33 +02:00
Józef Kucia c0b5cf3df6 libs/vkd3d: Avoid updating descriptor sets bound to recording command buffer.
Fixes GPU memory page faults in gears demo on Nvidia.

The Vulkan spec says:

  "The descriptor set contents bound by a call to
  vkCmdBindDescriptorSets may be consumed during host execution of the
  command, or during shader execution of the resulting draws, or any
  time in between. Thus, the contents must not be altered (overwritten
  by an update command, or freed) between when the command is recorded
  and when the command completes executing on the queue."
2017-06-23 22:24:33 +02:00
Józef Kucia 4e5fcb5141 libs/vkd3d: Use negative viewport height to flip along y-axis.
Requires VK_KHR_maintenance1.
2017-06-21 22:00:19 +02:00
Józef Kucia ec4ab656df libs/vkd3d: Add trailing newline to WARN() message in d3d12_command_list_begin_render_pass(). 2017-06-16 23:29:37 +02:00
Józef Kucia 84889646f6 Update license to LGPL v2.1. 2017-06-16 22:11:21 +02:00
Józef Kucia a680fdd91b libs/vkd3d: Implement d3d12_command_list_OMSetStencilRef(). 2017-03-05 22:23:37 +01:00
Henri Verbeet cd4f4a2976 libs/vkd3d: Implement d3d12_command_list_SetGraphicsRootConstantBufferView(). 2016-11-13 00:51:52 +01:00
Henri Verbeet 0b2702d96e libs/vkd3d: Implement d3d12_command_list_SetGraphicsRootSignature(). 2016-11-13 00:45:25 +01:00
Henri Verbeet d97df34093 libs/vkd3d: Implement depth/stencil pipeline state attachments. 2016-11-13 00:42:31 +01:00
Henri Verbeet fa4072a892 libs/vkd3d: Implement d3d12_command_list_DrawIndexedInstanced(). 2016-11-10 16:49:22 +01:00
Henri Verbeet 9bb9e63f23 libs/vkd3d: Implement d3d12_command_list_IASetIndexBuffer(). 2016-11-10 16:47:12 +01:00
Henri Verbeet 2213e126cf libs/vkd3d: Implement d3d12_command_list_ClearDepthStencilView(). 2016-11-10 16:43:33 +01:00
Henri Verbeet 2e10db6f8e libs/vkd3d: Add support for D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA. 2016-11-10 16:41:01 +01:00
Józef Kucia 4aab207b56 libs/vkd3d: Fix initial state transtion for swapchain images. 2016-10-25 13:23:18 +02:00
Józef Kucia b9da47ebe2 libs/vkd3d: Implement naive initial state transition.
This is not a complete solution yet. In order to allow recording
multiple command list and executing them in any order we have to fix up
the current image layout when submitting a command list instead of when
a command list is being recorded.
2016-10-25 13:23:18 +02:00
Józef Kucia 0d1550788e libs/vkd3d: Rename variables in d3d12_command_list_CopyBufferRegion(). 2016-10-25 13:23:18 +02:00
Józef Kucia ec23554b54 libs/vkd3d: Fix memory leak in d3d12_command_allocator_Release(). 2016-10-24 15:43:12 +02:00
Henri Verbeet c79584ed92 libs/vkd3d: Export a function to get the Vulkan queue family index from a d3d12 command queue. 2016-10-24 13:57:05 +02:00
Józef Kucia eea8617b9b libs/vkd3d: GPU virtual address for texture resources is always 0. 2016-10-24 13:20:09 +02:00
Józef Kucia fd9f1abb4f libs/vkd3d: Fix command list resetting.
A command list can be resetted to the same command allocator when it is
in use.
2016-10-20 16:38:04 +02:00
Józef Kucia 2189859532 libs/vkd3d: Command allocator can be used with one command list at a time. 2016-10-20 16:38:04 +02:00
Józef Kucia 384bb26ea5 libs/vkd3d: Naming conventions. 2016-10-20 16:38:04 +02:00
Józef Kucia 52211e6c40 libs/vkd3d: Free command buffers on command allocator reset. 2016-10-20 16:38:04 +02:00
Józef Kucia 278cb0103c libs/vkd3d: Add support for D3D12_RESOURCE_STATE_RESOLVE_* barriers. 2016-10-20 16:38:04 +02:00
Józef Kucia c41ad774de libs/vkd3d: Implement UAV barriers. 2016-10-19 16:39:48 +02:00
Józef Kucia 0944475c6a libs/vkd3d: Implement transition barriers. 2016-10-19 16:39:48 +02:00
Józef Kucia f2c980af56 libs/vkd3d: Validate resource state for resource barriers. 2016-10-19 16:39:48 +02:00
Henri Verbeet e0ba2fd2d3 libs/vkd3d: Export a function to get the Vulkan queue from a d3d12 command queue. 2016-10-19 10:02:53 +02:00
Józef Kucia f503954a77 libs/vkd3d: Ignore draw calls when pipeline state is not set. 2016-10-11 13:43:04 +02:00
Józef Kucia a1082ec954 libs/vkd3d: Use "< 0" to test VkResult for errors.
For consistency.
2016-10-11 13:43:04 +02:00
Henri Verbeet 4a558d5a4a libs/vkd3d: Implement d3d12_command_list_DrawInstanced(). 2016-10-10 17:26:46 +02:00
Henri Verbeet a0ccb1c581 libs/vkd3d: Implement d3d12_command_list_SetPipelineState(). 2016-10-10 17:26:13 +02:00
Henri Verbeet 74fe2ec411 libs/vkd3d: Implement d3d12_command_list_OMSetRenderTargets(). 2016-10-10 17:26:03 +02:00
Henri Verbeet 7add62e552 libs/vkd3d: Implement d3d12_command_list_IASetVertexBuffers(). 2016-10-10 17:25:55 +02:00
Henri Verbeet ce509dc70e libs/vkd3d: Implement d3d12_command_list_IASetPrimitiveTopology(). 2016-10-10 17:25:40 +02:00
Henri Verbeet d24982c5f1 libs/vkd3d: Destroy Vulkan render passes and framebuffers on command allocator reset. 2016-10-10 17:25:36 +02:00
Henri Verbeet 3ba5fd949b libs/vkd3d: Store Vulkan render passes and framebuffers in the command allocator.
We should destroy these on resets, but command list resets don't need to wait
for command list execution to complete.
2016-10-10 17:25:31 +02:00
Józef Kucia 59d466af2d libs/vkd3d: Use PRIx64 to print 64-bit integers. 2016-10-10 11:22:50 +02:00
Józef Kucia 4153810c00 libs/vkd3d: Partially implement d3d12_command_list_CopyTextureRegion(). 2016-10-08 14:31:57 +02:00
Józef Kucia b112ec1942 libs/vkd3d: Implement d3d12_command_queue_Signal(). 2016-10-08 14:31:57 +02:00
Józef Kucia 2a7b614278 libs/vkd3d: Wait for GPU fences in worker thread.
This could be implemented without a worker thread, if event objects
would be tightly coupled with ID3D12Fences.
2016-10-08 14:31:57 +02:00
Józef Kucia 2f76260857 libs/vkd3d: Create fence worker thread per device. 2016-10-08 14:31:57 +02:00
Józef Kucia ef6a3d78a2 libs/vkd3d: Pass signal event function pointer to vkd3d_create_device(). 2016-10-07 13:26:39 +02:00
Józef Kucia c558118f70 libs/vkd3d: Re-use vkd3d_array_reserve() in d3d12_fence_SetEventOnCompletion(). 2016-10-05 19:01:57 +02:00
Józef Kucia b224b6372c libs/vkd3d: Fix ID3D12Device reference count leak in d3d12_command_list_init(). 2016-10-05 18:40:25 +02:00
Józef Kucia a763bef615 libs/vkd3d: Do not leak "passes". 2016-10-05 18:40:25 +02:00
Józef Kucia 1cabd851b8 libs/vkd3d: Do not leak "framebuffers". 2016-10-05 18:40:25 +02:00
Henri Verbeet 3fe56457f9 libs/vkd3d: Set the initial pipeline state on command list creation/reset. 2016-10-05 17:53:52 +02:00
Henri Verbeet b7d594349f libs/vkd3d: Delay destroying framebuffers until the command list is destroyed.
Like render passes, these should only be destroyed after all submitted
commands referring to them have completed execution.
2016-10-05 17:53:19 +02:00
Henri Verbeet fb6071d108 libs/vkd3d: Delay destroying render passes until the command list is destroyed.
Render passes should only be destroyed after all submitted commands referring
to them have completed execution.
2016-10-05 17:52:45 +02:00
Józef Kucia 8ab2ebdd22 libs/vkd3d: Implement d3d12_fence_SetEventOnCompletion(). 2016-10-05 15:56:27 +02:00
Józef Kucia a5e13cf53e libs/vkd3d: Implement d3d12_fence_Signal(). 2016-10-05 15:56:27 +02:00
Józef Kucia 8e2d4dc70f libs/vkd3d: Implement d3d12_command_list_CopyBufferRegion(). 2016-10-05 11:34:07 +02:00
Henri Verbeet 42c1e0c0fb libs/vkd3d: Implement d3d12_command_list_RSSetScissorRects(). 2016-09-30 13:35:07 +02:00
Henri Verbeet c7f6dc53b3 libs/vkd3d: Implement d3d12_command_list_RSSetViewports(). 2016-09-30 13:34:50 +02:00
Henri Verbeet ad811fb418 libs/vkd3d: Implement d3d12_command_list_ClearRenderTargetView(). 2016-09-30 13:34:33 +02:00
Henri Verbeet 7db62fe3d8 libs/vkd3d: Implement d3d12_command_queue_ExecuteCommandLists(). 2016-09-29 11:54:44 +02:00
Józef Kucia b4305f94f0 libs/vkd3d: Fix typo in FIXME() message. 2016-09-29 10:46:42 +02:00
Józef Kucia 31f1d703a9 libs/vkd3d: Add ID3D12Fence interface stub. 2016-09-28 15:24:03 +02:00
Józef Kucia 623e1a8233 libs/vkd3d: Store VkQueue in d3d12_command_queue. 2016-09-28 09:42:49 +02:00
Józef Kucia 09d24d6934 libs/vkd3d: Implement d3d12_command_list_Reset(). 2016-09-28 09:42:49 +02:00
Józef Kucia 335bde6550 libs/vkd3d: Implement d3d12_command_allocator_Reset(). 2016-09-28 09:42:49 +02:00
Józef Kucia 00fec8232b libs/vkd3d: Track command list recording state. 2016-09-28 09:42:49 +02:00
Józef Kucia 8341c975a0 libs/vkd3d: Implement d3d12_command_list_Close(). 2016-09-27 12:13:37 +02:00
Józef Kucia 60fc7ee157 libs/vkd3d: Allocate VkCommandBuffer when creating ID3D12CommandList. 2016-09-27 12:13:37 +02:00
Józef Kucia 6e68570498 libs/vkd3d: Create VkCommandPool when creating ID3D12CommandAllocator. 2016-09-27 12:13:37 +02:00
Józef Kucia 6bdc509e4d libs/vkd3d: Add ID3D12GraphicsCommandList interface stub. 2016-09-21 17:46:03 +02:00
Józef Kucia 4636663bd5 libs/vkd3d: Add ID3D12CommandAllocator interface stub. 2016-09-21 17:46:03 +02:00
Józef Kucia aea273550a libs/vkd3d: Add ID3D12CommandQueue interface stub. 2016-09-21 17:46:03 +02:00