Philip Rebohle
da07275b16
vkd3d: Implement d3d12_device_CreatePipelineLibrary.
...
Needed by Claybook.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
9647109559
vkd3d: Add stubs for ID3D12PipelineLibrary1.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
50b5959e64
vkd3d: Implement better stub for GetCachedBlob.
...
We currently can't implement this in a meaningful way, but we
should return an empty blob in order to not crash applications.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
20aa3c3c26
vkd3d: Make ID3DBlob implementation more accessible.
...
We're going to need this to implement other parts of the
API, so it should be in common code.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-08 14:23:28 +02:00
Philip Rebohle
7f91484c28
vkd3d: Enable EXT_shader_stencil_export if available.
...
Allows us to expose PSSpecifiedStencilRefSupported.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
56df26d845
vkd3d-shader: Implement support for stencil export.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
4c1cc5732c
vkd3d: Enable VK_EXT_shader_viewport_index_layer if available.
...
And expose the following feature cap on capable GPUs:
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
3ee4ab56d7
vkd3d-shader: Enable SPV_EXT_shader_viewport_index_layer if necessary.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
c07f46f09c
vkd3d-shader: Look up existing register fpr built-in outputs.
...
Otherwise, if two built-in outputs share the same register, we
may end up multiple redundant private variables, only one of
which gets initialized, leading to uninitialized outputs.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-06 11:53:09 +02:00
Philip Rebohle
4e3ea62e79
vkd3d: Implement depth bounds test.
...
Used by Resident Evil 2 and 3 if available.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 16:04:39 +02:00
Philip Rebohle
960e6f85fd
vkd3d: Support multiple viewports.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:57:23 +02:00
Philip Rebohle
ae789d9ba8
vkd3d: Pass dynamic state struct to get_or_create_pipeline.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:57:23 +02:00
Philip Rebohle
0cc33cb823
vkd3d: Move vertex strides and primitive topology to dynamic_state.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:57:23 +02:00
Philip Rebohle
9cb863f84a
vkd3d: Only enable dynamic states if necessary.
...
Avoids some unnecessary API calls.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
d48794408a
vkd3d: Refactor dynamic state updates.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
e08580f178
vkd3d: Refactor dynamic state enablement.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
d8a6d71038
vkd3d: Introduce vkd3d_dynamic_state.
...
And add a function to (re-)apply dynamic state as necessary. This
will allow us to ignore dynamic state not needed by the pipeline,
and may become necessary if we implement shader-based copies etc.
Currently unused; the following commits will subsequently change
state setting methods over.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 15:39:33 +02:00
Philip Rebohle
6fbc38118a
vkd3d: Implement support for logic op.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 13:54:10 +02:00
Philip Rebohle
1d8afd85d4
vkd3d: Signal fence in EnqueueMakeResident.
...
Resident Evil 2 needs this method. Since we don't really have a concept
of explicit memory residency in Vulkan, we're fine not doing anything else.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
11ca844bef
vkd3d: Implement CreatePipelineState.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
f032702a74
vkd3d: Extend graphics pipeline description.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
5ba09a9ab4
vkd3d: Implement D3D12_FEATURE_EXISTING_HEAPS feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
0a5c618e9e
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS3 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
34180e4073
vkd3d: Implement D3D12_FEATURE_COMMAND_QUEUE_PRIORITY feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
ef937713e3
vkd3d: Implement D3D12_FEATURE_SHADER_CACHE feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
1ab7dd67a0
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS2 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
8687969a2a
vkd3d: Implement D3D12_FEATURE_ARCHITECTURE1 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
3dc9f7c585
vkd3d: Implement D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
90a22df2a4
vkd3d: Implement D3D12_FEATURE_D3D12_OPTIONS1 feature query.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
7c7db3c77c
vkd3d: Optionally enable VK_EXT_subgroup_size_control.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
0273292224
vkd3d: Optionally enable VK_NV_shader_sm_builtins.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
ebcc18583c
vkd3d: Optionally enable VK_AMD_shader_core_properties{_2}.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
70ac2f147e
vkd3d: Upgrade ID3D12Device to ID3D12Device3.
...
Stubs for now, will implement new functionality as needed.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
6b113bb629
vkd3d: Introduce d3d12_command_list_iface type alias.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
b6d5a407ce
vkd3d: Define d3d12_device_iface type alias.
...
This way we don't have to change all function parameter types
every time we upgrade the interface version.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-04-01 10:35:40 +02:00
Philip Rebohle
c41275478c
vkd3d: Refactor pipeline state creation.
...
We need a more extensible struct to contain the pipeline
descriptions in order to be able to support new rendering
features.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-31 18:28:18 +02:00
Hans-Kristian Arntzen
fce6838870
vkd3d: Fix compilation warning on 32-bit.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 17:27:33 +02:00
Hans-Kristian Arntzen
09885f799c
vkd3d: Implement stricter checking for timeline semaphores.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 12:51:05 +02:00
Hans-Kristian Arntzen
855c59eae5
vkd3d: Implement timeline semaphores.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 12:51:05 +02:00
Hans-Kristian Arntzen
afdbf6edcd
vkd3d: Enable VK_KHR_timeline_semaphore extension.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2020-03-31 12:51:05 +02:00
Philip Rebohle
8344e8224e
vkd3d: Only add feature structs to pNext chain if extension is supported.
...
RenderDoc will sometimes report extensions as unsupported, but still
fill out and accept the respective feature structs. Since we assume
extensions to be supported if the feature is enabled, we sometimes
try to use functionality that RenderDoc disables and crash.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
00d88454ee
vkd3d: Factor out extension enumeration.
...
Besides cleaning up the code, this also allows us to
use information about the available extensions earlier.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
34f9cae1c6
vkd3d: Disable unused BufferDeviceAddress features.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
cf759d4d76
vkd3d: Only set memory device address bit if extension is supported.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 11:07:53 +02:00
Philip Rebohle
f5dc3fa8c8
vkd3d: Skip redundant descriptor copies.
...
Greatly improves performance in Control.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
78034ecef1
vkd3d: Simplify checks whether a descriptor has a view.
...
SaVes a few CPU cycles on a potentially very hot code path.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
1836815222
vkd3d: Rework descriptor magic.
...
Changes the magic to a three-character string with flags
in the highest byte.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
33a2ace768
vkd3d: Don't copy entire descriptor when destroying view.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:51:14 +02:00
Philip Rebohle
09b7013f59
vkd3d: Don't use push descriptors if we exceed the device limit.
...
This can in theory happen if we have 32 root descriptors and
bindless UAV counters.
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:47:47 +02:00
Philip Rebohle
29d1a5e089
vkd3d: Remove unused root descriptor count from root signature.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2020-03-30 10:47:47 +02:00