Józef Kucia
694c20b1da
libs/vkd3d: Implement structured UAVs.
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
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
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
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
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
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
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
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
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
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
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
85dc44e4ba
libs/vkd3d: 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
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
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
Józef Kucia
d1de972430
libs/vkd3d: Allocate Vulkan descriptors for samplers.
2017-07-17 16:25:29 +02:00
Józef Kucia
593a13402d
libs/vkd3d: Add support for static samplers.
...
We still do not implement any reasonable mapping between D3D registers
and Vulkan bindings.
2017-07-17 16:25:29 +02:00
Józef Kucia
02506b24c4
libs/vkd3d: Partially implement d3d12_command_list_SetGraphicsRootDescriptorTable().
...
A very naive implementation. Mainly to unblock some shader translation
work.
2017-07-17 16:25:29 +02:00
Józef Kucia
733775fbad
libs/vkd3d: Implement d3d12_descriptor_heap_GetGPUDescriptorHandleForHeapStart().
2017-07-17 16:25:29 +02:00
Józef Kucia
091ac41f79
libs/vkd3d: Partially handle descriptor table root parameters.
2017-07-17 16:25:29 +02:00
Józef Kucia
2dfbc88a89
libs/vkd3d: Implement copying from buffers to images.
2017-07-14 13:44:35 +02:00
Józef Kucia
1c79831873
libs/vkd3d: Implement d3d12_device_CreateShaderResourceView().
2017-07-14 13:44:35 +02:00
Józef Kucia
8bb54c17f3
libs/vkd3d: Simplify d3d12_resource_destroy().
2017-07-14 13:44:35 +02:00
Józef Kucia
f4f803c7bb
libs/vkd3d: Add initial implementation for d3d12_device_GetCopyableFootprints().
2017-07-13 11:56:30 +02:00
Józef Kucia
f3d297574a
libs/vkd3d: Implement d3d12_device_CreateSampler().
2017-07-12 13:10:44 +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
3f546c8782
libs/vkd3d: Add DXGI_FORMAT_R32_UINT.
2017-07-10 15:33:34 +02:00
Józef Kucia
3f03cd1ec8
libs/vkd3d-shader: Implement root signature parsing.
2017-06-27 13:16:47 +02:00
Józef Kucia
d220ae4bfb
libs/vkd3d: Add ID3D12RootSignatureDeserializer interface stub.
2017-06-27 13:16:47 +02:00
Józef Kucia
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
d515e3d047
libs/vkd3d: Require VK_KHR_maintenance1 device extension.
2017-06-21 22:00:19 +02:00
Józef Kucia
9948abda96
libs/vkd3d: Flip SV_Position.y in last vertex processing shader stage.
...
The handwritten GLSL shaders do this.
2017-06-21 12:22:20 +02:00
Józef Kucia
c270d9a859
libs/vkd3d: Accept DXBC shaders.
2017-06-19 19:49:11 +02:00
Józef Kucia
6f6d5c7850
libs/vkd3d: Use depth aspect mask for DXGI_FORMAT_D16_UNORM.
2017-06-19 18:19:19 +02:00
Józef Kucia
eff8428c71
libs/vkd3d-common: Move vkd3d_array_reserve() from libvkd3d.
2017-06-19 18:05:53 +02:00
Henri Verbeet
5808c280f7
libs/vkd3d: Add DXGI_FORMAT_D16_UNORM.
2017-06-19 14:44:48 +02:00
Henri Verbeet
fc67a3b7fa
libs/vkd3d: Add DXGI_FORMAT_R8G8B8A8_UNORM_SRGB.
2017-06-19 14:44:41 +02:00
Henri Verbeet
d029dc995c
libs/vkd3d: Add DXGI_FORMAT_R8_UINT.
2017-06-19 14:44:33 +02:00
Henri Verbeet
79d731de8a
libs/vkd3d: Add DXGI_FORMAT_R16_FLOAT.
2017-06-19 14:44:19 +02:00
Henri Verbeet
70dbeed14c
libs/vkd3d: Add DXGI_FORMAT_R8_UNORM.
2017-06-19 14:44:07 +02:00
Henri Verbeet
00f514cf1c
libs/vkd3d: Add DXGI_FORMAT_R16_UNORM.
2017-06-19 14:43:55 +02:00
Henri Verbeet
07f12c2947
libs/vkd3d: Add DXGI_FORMAT_R16G16B16A16_FLOAT.
2017-06-19 14:43:45 +02:00
Józef Kucia
ec4ab656df
libs/vkd3d: Add trailing newline to WARN() message in d3d12_command_list_begin_render_pass().
2017-06-16 23:29:37 +02:00
Józef Kucia
84889646f6
Update license to LGPL v2.1.
2017-06-16 22:11:21 +02:00
Henri Verbeet
f604f25aba
libs/vkd3d: Add DXGI_FORMAT_R11G11B10_FLOAT.
2017-06-15 15:16:07 +02:00
Henri Verbeet
39d95dcd7f
libs/vkd3d: Add DXGI_FORMAT_R10G10B10A2_UNORM.
2017-06-15 15:15:57 +02:00
Henri Verbeet
39e8b8de25
libs/vkd3d: Add DXGI_FORMAT_R32G32_FLOAT.
2017-06-15 15:15:46 +02:00
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
0f38858996
libs/vkd3d: Implement D3D12_ROOT_PARAMETER_TYPE_CBV root signature parameters.
2016-11-13 00:44:19 +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
f252d6cd31
libs/vkd3d: Implement d3d12_device_CreateDepthStencilView().
2016-11-10 16:42:24 +01:00
Henri Verbeet
2e10db6f8e
libs/vkd3d: Add support for D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA.
2016-11-10 16:41:01 +01:00
Henri Verbeet
4142c477ef
build: Add some standard files.
2016-10-28 12:34:12 +02: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
b011f0b972
libs/vkd3d: Introduce resource flags.
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
Józef Kucia
e42a9da943
libs/vkd3d: Use VK_KHR_*_EXTENSION_NAME defines.
2016-10-24 15:28:08 +02:00
Henri Verbeet
fa5b972371
demos/triangle: Add a demo program.
2016-10-24 13:57:05 +02:00
Henri Verbeet
6cbe8626c2
libs/vkd3d: Add DXGI_FORMAT_B8G8R8A8_UNORM_SRGB.
2016-10-24 13:57:05 +02:00
Henri Verbeet
6babf11214
libs/vkd3d: Export a function to get the Vulkan format from a DXGI format.
2016-10-24 13:57:05 +02:00
Henri Verbeet
b760b52859
libs/vkd3d: Export a function to get the Vulkan physical device from a d3d12 device.
2016-10-24 13:57:05 +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
a5fbcb28f0
libs/vkd3d: Set initial image layout to VK_IMAGE_LAYOUT_UNDEFINED for CPU inaccessible images.
2016-10-24 13:20:09 +02:00
Józef Kucia
e19e428ed0
libs/vkd3d: Check if device memory is CPU accessible in d3d12_resource_Map().
2016-10-24 13:20:09 +02:00
Józef Kucia
3161f346b6
libs/vkd3d: Try to allocate coherent host visible memory for CUSTOM heap.
2016-10-24 13:20:09 +02:00
Józef Kucia
33ef8688ab
libs/vkd3d: Initialize "resource->external" before possible call to d3d12_resource_destroy().
2016-10-20 16:38:04 +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
Józef Kucia
69cd100d48
libs/vkd3d: Validate initial resource state.
2016-10-19 13:10:12 +02:00
Józef Kucia
f601cbc04a
libs/vkd3d: Validate "optimized_clear_value" for buffer resources.
2016-10-19 13:10:12 +02:00
Józef Kucia
60959ecf3c
libs/vkd3d: Add partial support for D3D12_FEATURE_ARCHITECTURE.
2016-10-19 13:10:12 +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
Henri Verbeet
7568a9793c
libs/vkd3d: Export a function to get the Vulkan device from a d3d12 device.
2016-10-19 10:02:27 +02:00
Henri Verbeet
feacd1af50
libs/vkd3d: Export a function to get the Vulkan instance from a d3d12 device.
2016-10-19 10:02:04 +02:00
Henri Verbeet
2a49173b60
libs/vkd3d: Export a function to create a d3d12 resource from a Vulkan image.
2016-10-19 09:59:42 +02:00
Henri Verbeet
fcc9f9b294
libs/vkd3d: Merge vkd3d_vulkan.h into vkd3d_private.h.
2016-10-19 09:58:53 +02:00
Henri Verbeet
9d5e4daf84
libs/vkd3d-utils: Get rid of unnecessary WINAPI.
2016-10-19 09:48:26 +02:00
Józef Kucia
5f187d9e68
libs/vkd3d: Improve diagnostic message for device memory allocation failures.
2016-10-17 14:24:22 +02:00
Józef Kucia
6b681a4037
libs/vkd3d: Return E_INVALIDARG in d3d12_resource_Map() for textures.
2016-10-17 14:24:22 +02:00
Józef Kucia
1e73f2956a
libs/vkd3d: Return S_OK from d3d12_device_GetDeviceRemovedReason().
2016-10-17 14:24:22 +02:00
Józef Kucia
e3fb82d544
libs/vkd3d: Forbid creating textures on UPLOAD/READBACK heaps.
2016-10-17 14:24:22 +02:00
Józef Kucia
fc1c9d914d
libs/vkd3d: Validate initial resource state for UPLOAD/READBACK heaps.
2016-10-17 14:24:22 +02:00
Józef Kucia
1fad443900
libs/vkd3d: Introduce vkd3d_select_physical_device() helper function.
2016-10-13 12:21:00 +02:00
Józef Kucia
f5ecb635fe
libs/vkd3d: Ignore blending parameters when blending is disabled.
2016-10-12 11:46:57 +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
5c9ea3ede3
libs/vkd3d: Implement d3d12_device_CreateGraphicsPipelineState().
2016-10-10 17:26:38 +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
ed033b40d0
libs/vkd3d: Fix InterlockedIncrement() and InterlockedDecrement() signatures.
2016-10-10 11:22:50 +02:00
Józef Kucia
a22b594c0a
libs/vkd3d: Accept D3D12_ROOT_SIGNATURE_DESC directly only when all bits of "bytecode_length" are set.
2016-10-10 11:22:50 +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
99efb9abe3
libs/vkd3d: Get rid of vk_format_from_dxgi_format().
...
Use vkd3d_get_format() instead.
2016-10-08 14:31:57 +02:00
Józef Kucia
ab883caaff
libs/vkd3d: Introduce vkd3d_format.
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
c7d123b122
libs/vkd3d: Move event objects implementation to libvkd3d-utils.
...
The libvkd3d is not the best place for event objects implementation.
2016-10-07 13:26:39 +02:00
Józef Kucia
0c1432e671
libs/vkd3d: Move D3D12CreateDevice() to libvkd3d-utils.
2016-10-07 13:26:39 +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
544c2668ca
libs/vkd3d: Introduce vkd3d_create_device().
...
We need to pass additional parameters to libvkd3d during initialization.
2016-10-07 13:26:39 +02:00
Józef Kucia
12ea3309f0
libs/vkd3d-utils: Add library.
2016-10-07 13:26:39 +02:00
Józef Kucia
49cac8005c
libs/vkd3d-common: Add convenience library for shared code.
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
4c517454b6
libs/vkd3d: Debug output should go to stderr.
2016-10-05 17:53:36 +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
733f720ee4
libs/vkd3d: Add simple replacement for event objects.
...
This naming convention for exported functions is used to be consistent
with other D3D12* functions().
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
1b8be72657
libs/vkd3d: Implement d3d12_device_CreateRenderTargetView().
2016-09-30 13:34:17 +02:00
Henri Verbeet
3cc207c28e
libs/vkd3d: Implement d3d12_descriptor_heap_GetCPUDescriptorHandleForHeapStart().
2016-09-30 13:34:00 +02:00
Henri Verbeet
9262f87249
libs/vkd3d: Allocate CPU memory for descriptors.
2016-09-30 13:33:28 +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
Henri Verbeet
5f91e2ded9
libs/vkd3d: Implement d3d12_resource_GetGPUVirtualAddress().
2016-09-28 15:05:13 +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
f7a54c4653
libs/vkd3d: Rename "VKD3DDEBUG" environment variable to "VKD3D_DEBUG".
2016-09-28 09:42:49 +02:00
Józef Kucia
ef80cdedc3
libs/vkd3d: Make vkd3d debug compatible with MinGW headers.
2016-09-28 09:42:49 +02:00
Józef Kucia
2976d7798d
libs/vkd3d: Implement d3d12_resource_Unmap() for committed buffers.
2016-09-28 09:42:49 +02:00
Józef Kucia
c078e79235
libs/vkd3d: Implement d3d12_resource_Map() for committed buffers.
2016-09-28 09:42:49 +02:00
Józef Kucia
fc1492766e
libs/vkd3d: Implement committed buffer resources.
2016-09-27 12:13:37 +02:00
Józef Kucia
fec147c2cb
libs/vkd3d: Implement committed texture resources.
2016-09-27 12:13:37 +02:00
Józef Kucia
e43af70de1
libs/vkd3d: Disable nameless unions.
2016-09-27 12:13:37 +02:00
Józef Kucia
5e266f70a2
libs/vkd3d: Store VkPhysicalDeviceMemoryProperties in "d3d12_device".
2016-09-27 12:13:37 +02:00
Józef Kucia
7701228cd7
libs/vkd3d: Print "0x" prefix before UINT64 hexadecimal values.
2016-09-27 12:13:37 +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
2424137c0b
libs/vkd3d: Implement compute pipeline state.
2016-09-26 11:46:45 +02:00
Józef Kucia
fdf8eb775f
libs/vkd3d: Implement empty root signature.
2016-09-26 11:46:45 +02:00
Józef Kucia
a524488c78
libs/vkd3d: Fix memory leak in d3d12_device_create().
2016-09-26 11:46:45 +02:00
Józef Kucia
471a58b4b8
libs/vkd3d: Add ID3D12PipelineState interface stub.
2016-09-26 11:22:33 +02:00
Józef Kucia
aec10bd682
libs/vkd3d: Add ID3D12RootSignature interface stub.
2016-09-26 11:22:33 +02:00
Józef Kucia
13ccddd6e4
libs/vkd3d: Add ID3D12DescriptorHeap interface stub.
2016-09-26 11:22:33 +02:00
Józef Kucia
4175bec471
libs/vkd3d: Add ID3D12Resource interface stub.
2016-09-26 11:22:33 +02:00
Józef Kucia
2a99c21534
libs/vkd3d: Create Vulkan device when creating D3D12 device.
2016-09-22 17:15:41 +02:00
Józef Kucia
f86ca50443
libs/vkd3d: Create Vulkan instance when creating D3D12 device.
...
We link directly to the Vulkan loader library and use few exported
procedures. According to the documentation the loader library
exports all core Vulkan procedures on Windows, Linux and Android.
2016-09-22 16:56:58 +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
4426e099ab
libs/vkd3d: Partially implement d3d12_device_CheckFeatureSupport().
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
Józef Kucia
0444bb72b5
libs/vkd3d: Introduce debugstr_uint64() to print UINT64 values.
2016-09-21 17:46:03 +02:00
Józef Kucia
4503e8b23a
libs/vkd3d: Add D3D12GetDebugInterface() stub.
2016-09-21 13:16:55 +02:00
Józef Kucia
d6e2fe97a4
libs/vkd3d: Add ID3D12Device interface stub.
2016-09-21 12:57:24 +02:00
Józef Kucia
52164aa79b
libs/vkd3d: Implement simple debug logs.
2016-09-21 12:57:24 +02:00
Józef Kucia
db41f92040
libs/vkd3d: Add vkd3d_common.h.
2016-09-21 12:57:24 +02:00
Józef Kucia
40c42f7237
build: Add pkg-config file.
2016-09-21 12:57:24 +02:00
Józef Kucia
f8090a33dd
libs/vkd3d: Add library.
2016-09-21 12:57:24 +02:00