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
Józef Kucia
ea6b35ef58
libs/vkd3d-shader: Translate udiv instructions.
2017-07-21 14:14:42 +02:00
Józef Kucia
c73b201110
libs/vkd3d-shader: Do not print FIXMEs for known global flags.
2017-07-21 14:14:42 +02:00
Józef Kucia
95b6b7b91b
libs/vkd3d-shader: Clean up vkd3d_dxbc_compiler_emit_control_flow_instruction().
2017-07-21 14:14:42 +02:00
Józef Kucia
18c06c8022
libs/vk3d-shader: Translate break instructions for loops.
2017-07-20 13:32:40 +02:00
Józef Kucia
1cbf6ebddf
libs/vk3d-shader: Fix return instructions in if/else blocks.
2017-07-20 13:32:40 +02:00
Józef Kucia
2022702858
libs/vkd3d-shader: Translate breakc instructions.
2017-07-20 13:32:40 +02:00
Józef Kucia
98c307cdbc
libs/vkd3d-shader: Implement loops.
2017-07-20 13:32:40 +02:00
Józef Kucia
f6f70d8c02
libs/vkd3d-shader: Add support for nested control flow.
2017-07-20 13:32:40 +02:00
Józef Kucia
1e9a38005b
libs/vkd3d-shader: Use vkd3d_spirv_build_once mechanism for SPIR-V constants.
2017-07-19 14:45:54 +02:00
Józef Kucia
ab78c23170
libs/vkd3d-shader: Translate round_{ni,pi} instructions.
2017-07-19 13:53:59 +02:00
Józef Kucia
fed8155d08
libs/vkd3d-shader: Translate rcp instructions.
2017-07-19 13:53:59 +02:00