Commit Graph

205 Commits

Author SHA1 Message Date
Józef Kucia
1fbacd5a09 include: Allow using libvkd3d with custom Vulkan headers.
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:14 +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
0f46ae3e55 libs/vkd3d: Add API for creating vkd3d instances.
Makes possible to share a Vulkan instance between multiple devices.

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:27:01 +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
ee8eb9b4e4 libs/vkd3d: Validate miplevel count while creating resources.
vkd3d_log2i() is imported from wined3d.

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-11 22:31:33 +01:00
Józef Kucia
6671e79082 include: Avoid including vkd3d_windows.h when real windows.h is included.
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>
2017-12-15 16:27:36 +01:00
Józef Kucia
abff3ca469 include: Prefix public header file names with vkd3d.
Prevents possible clashes when using vkd3d with external Win32 headers.

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>
2017-12-15 16:27:34 +01:00
Józef Kucia
f8c20beede include: Do not use vkd3d Win32 headers when VKD3D_NO_WIN32_TYPES is defined.
Allows using vkd3d with other Win32 headers.

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>
2017-12-15 16:27:31 +01:00
Józef Kucia
a285b4c842 tests: Explicitly detect if tests are run 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>
2017-12-14 13:40:25 +01:00
Józef Kucia
3956eaf6d0 tests: Detect test platform dynamically.
In order to run cross-compiled tests 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>
2017-12-14 13:40:22 +01:00
Józef Kucia
d100804e91 tests: Make sure that config.h is included before other headers.
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>
2017-12-14 13:13:03 +01:00
Józef Kucia
879c9e43d1 libs/vkd3d: Do not export D3D12* functions.
Move them to libvkd3d-utils.
2017-12-12 13:12:47 +01:00
Józef Kucia
18b285328e libs/vkd3d-shader: Add version argument to vkd3d_shader_serialize_root_signature(). 2017-10-10 16:57:36 +02:00
Józef Kucia
4629cbdf8a libs/vkd3d: Implement D3D12SerializeRootSignature(). 2017-10-10 16:02:09 +02:00
Józef Kucia
6b43a5fe38 libs/vkd3d-shader: Implement root signature serialization. 2017-10-10 16:02:09 +02:00
Józef Kucia
5a020d6673 libs/vkd3d-shader: Implement shader visibility for descriptors. 2017-09-22 16:42:07 +02:00
Józef Kucia
dfab65e568 include: Avoid cpp_quote() for function prototypes. 2017-09-18 15:40:42 +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
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
b19fe74284 libs/vkd3d-shader: Export shader signature parsing. 2017-09-11 22:35:16 +02:00
Józef Kucia
09658e3b9b build: Use __builtin_popcount() if available. 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
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
9eee65c3ab libs/vkd3d: Validate root signature size. 2017-09-05 11:53:55 +02:00
Henri Verbeet
0c08d5630c include: Get rid of some superfluous semicolons. 2017-09-04 16:46:55 +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
Henri Verbeet
3019a3e8f1 libs/vkd3d: Support both native and Win32 wchar_t. 2017-08-29 16:36:05 +02:00
Henri Verbeet
eedac9bdc7 include: Rename DXGI_FORMAT_FORCE_DWORD to DXGI_FORMAT_FORCE_UINT. 2017-08-28 20:36:32 +02:00
Sven Hesse
0379783c29 include: Add struct D3D12_QUERY_DATA_PIPELINE_STATISTICS. 2017-08-28 15:11:30 +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
6c237a91f6 include: Add IDXGIFactory4. 2017-08-15 12:24:44 +02:00
Sven Hesse
c1c7163216 include: Add D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT. 2017-08-09 14:48:14 +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
0859b94833 libs/vkd3d: Implement d3d12_device_CreateConstantBufferView(). 2017-08-04 17:06:33 +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
92fcb9ffa2 libs/vkd3d-shader: Add support for push constants. 2017-07-27 15:24:38 +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
Henri Verbeet
e9fe4da01e include: Respect NOMINMAX. 2017-07-18 19:15:00 +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
8a455b6043 include: Add texture filtering macros. 2017-07-12 13:10:44 +02:00
Józef Kucia
2bbba87ea0 include: Avoid redefining DXGI_ERROR constants.
Fixes build for crosstests.

MinGW-w64 defines DXGI_ERRORs in winerror.h.
2017-07-11 17:23:02 +02:00
Henri Verbeet
893d2e8444 include: Add D3D12_FEATURE_DATA_FORMAT_SUPPORT. 2017-07-11 13:52:54 +02:00
Henri Verbeet
fdd2b456fb include: Add D3D12_FEATURE_DATA_D3D12_OPTIONS. 2017-07-11 13:51:13 +02:00
Henri Verbeet
728f4e6686 include: Add missing D3D12_FILTER enum elements. 2017-07-11 13:50:59 +02:00
Henri Verbeet
45b0fa3346 include: Add the ID3D12QueryHeap interface. 2017-07-11 13:19:41 +02:00
Henri Verbeet
2ebba52bef include: Provide enum flag operators for D3D12_DSV_FLAGS. 2017-07-11 13:13:59 +02:00
Henri Verbeet
f68c1b13be include: Add texture dimension constants. 2017-07-11 12:24:25 +02:00
Henri Verbeet
c633a87dba include: Add missing DXGI formats. 2017-07-11 12:24:25 +02:00
Henri Verbeet
e732713f10 include: Add D3D12_DISPATCH_ARGUMENTS. 2017-07-11 12:24:25 +02:00
Henri Verbeet
634a5aa19f include: Add D3D12_DRAW_INDEXED_ARGUMENTS. 2017-07-11 12:24:21 +02:00
Henri Verbeet
12831d2125 include: Add D3D12_DRAW_ARGUMENTS. 2017-07-11 12:21:19 +02:00
Henri Verbeet
941eefb1c0 include: Provide enum flag operators for D3D12_CLEAR_FLAGS. 2017-07-11 12:21:19 +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
Henri Verbeet
21d853ac3b include: Add D3D12_SHADER_COMPONENT_MAPPING. 2017-07-10 16:57:10 +02:00
Henri Verbeet
dec9b864ef include: Provide enum flag operators for D3D12_RESOURCE_STATES. 2017-07-10 16:57:10 +02:00
Henri Verbeet
7a203b0e5f include: Provide enum flag operators for D3D12_RESOURCE_FLAGS. 2017-07-10 16:57:06 +02:00
Henri Verbeet
7bdc8c3b25 include: Introduce dxgiformat.idl. 2017-07-10 16:32:01 +02:00
Józef Kucia
8f6af1125d libs/vkd3d-shader: Get rid of VKD3D_SHADER_FLIP_Y compiler option.
We use negative viewport height to flip Y.
2017-06-27 22:21:43 +02:00
Józef Kucia
0afe0032b0 libs/vkd3d-shader: Add VKD3D_SHADER_STRIP_DEBUG compiler option. 2017-06-27 22:21:43 +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
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
eff8428c71 libs/vkd3d-common: Move vkd3d_array_reserve() from libvkd3d. 2017-06-19 18:05:53 +02:00
Józef Kucia
97c7bc0a18 libs/vkd3d-common: Provide access to current debug level. 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
7be0b64a0f libs/vkd3d-common: Add debugstr_a() function. 2017-06-16 22:38:21 +02:00
Józef Kucia
93458c8933 libs/vkd3d-shader: Add library. 2017-06-16 22:38:21 +02:00
Józef Kucia
995720f5f5 include: Add align() helper function. 2017-06-16 22:38:21 +02:00
Józef Kucia
ba713c9b37 include: Drop wine prefix from red-black tree functions. 2017-06-16 22:38:21 +02:00
Józef Kucia
69e278e754 include: Import red-black tree implementation from Wine. 2017-06-16 22:38:21 +02:00
Józef Kucia
956c8b03cf include: Import linked list implementation from Wine. 2017-06-16 22:38:21 +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
Henri Verbeet
09f52882ae include: Add the ID3D12CommandSignature interface. 2017-06-15 15:15:36 +02:00
Henri Verbeet
09ff8b57c1 include: Fix the IDXGISwapChain::ResizeBuffers() arguments. 2017-06-15 15:15:26 +02:00
Henri Verbeet
a5b78eea21 include: Fix D3D12_SAMPLER_DESC. 2017-06-12 18:16:05 +02: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
Józef Kucia
2d0c3c871a tests: Introduce debug levels.
The VKD3D_TEST_DEBUG environment variable can be now set to 1 or 2.
VKD3D_TEST_DEBUG=1 is useful for examining Vulkan validation layers
output.
2016-11-09 15:03:46 +01:00
Józef Kucia
3c66c74167 tests: Pass command line arguments to vkd3d_test_main(). 2016-11-09 15:03:46 +01:00
Józef Kucia
2eed0e0ed3 tests: Write test name to debug output.
This is useful when inspecting the output of D3D12 debug layer.
2016-11-09 15:03:46 +01:00
Józef Kucia
4aab207b56 libs/vkd3d: Fix initial state transtion for swapchain images. 2016-10-25 13:23:18 +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