Hans-Kristian Arntzen
6434db2c82
vkd3d: Add quirk option to range check every raw VA CBV.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-08 15:30:59 +02:00
Hans-Kristian Arntzen
b77091ba6b
vkd3d: Don't suballocate scratch buffers.
...
Scratch buffers are 1 MiB blocks which will end
up being suballocated. This was not intended and a fallout from the
earlier change where VA_SIZE was bumped to 2 MiB for Elden Ring.
Introduce a memory allocation flag INTERNAL_SCRATCH which disables
suballocation and VA map insert.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-08 13:19:29 +02:00
Hans-Kristian Arntzen
ab071fb208
vkd3d: Don't use zero alignment for preprocess buffer.
...
Horrible bug where we'd end up always allocating from offset 0.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-08 12:34:25 +02:00
Hans-Kristian Arntzen
6ac298929d
vkd3d: Take memory requirement for preprocess buffer into account.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-08 12:34:01 +02:00
Hans-Kristian Arntzen
d7567cbb97
vkd3d: Do patch barrier after ending render pass.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
eb1e3ae656
debug: Add concept of implicit instance index to debug ring.
...
For internal debug shaders, it is helpful to ensure in-order logs when
sorted for later inspection.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
0229889217
debug: Make Instance sorting easier.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
5b33483ce9
debug: Pretty-print execute template debug messages.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
8140b26c93
vkd3d: Encode in detail which commands we're emitting in template.
...
Feed this back to debug ring for less cryptic logs.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
4aeca16468
vkd3d: Refactor out patch command token enum.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
c2d516e688
vkd3d: Clamp command count in execute indirect path.
...
Shouldn't be required, but take no chances.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
ebbf4b5338
vkd3d: Add debug ring path for execute indirect template patches.
...
Somehow inspect draw parameters this way.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
1b6f7d4c68
vkd3d: Enable FORCE_RAW_VA_CBV for Halo Infinite as well.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
caa9b0ae24
vkd3d: Add workaround for forced clearing of certain buffers.
...
If game uses NOT_ZEROED, it might still rely on buffers being properly
cleared to 0.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
458391e794
vkd3d: Trace breadcrumbs for execute indirect templates.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
186b45a61f
vkd3d: Pass down required memory types to scratch allocators.
...
Separate scratch pools by their intended usage. Allows e.g. preprocess buffers to be
allocated differently from normal buffers. Potentially can also allow
for separate pools for host visible scratch memory etc down the line.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
124768c1d6
vkd3d: Optimize ExecuteIndirect() if no INDIRECT transitions happened.
...
The D3D12 docs outline this as an implementation detail explicitly, so
we should do the same thing.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
4a507c3a2b
vkd3d: Ignore unsupported execute indirect calls.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
a8e46bbff1
vkd3d: Add VKD3D_CONFIG option to force raw VA CBV descriptors.
...
For certain ExecuteIndirect() uses, we're forced to use this path
since we have no way to update push descriptors indirectly yet.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
59b75b5b1d
vkd3d: Implement some advanced use cases of ExecuteIndirect.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
e72fd1414f
vkd3d: Enable NV_device_generated_commands extension.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
e3f8889b24
vkd3d: Store the raw VA index in root signature for root descriptors.
...
Needed when building device generated commands later.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
4ade0d37b8
meta: Add ExecuteIndirect patch meta shader.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
1f1b6c0093
vkd3d: Add helper to invalidate all state.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
f46d175935
vkd3d: Refactor index buffer state to be flushed late.
...
With ExecuteIndirect state we'll need to modify or refresh index buffer
state.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
102e2dac3a
vkd3d: Add more stringent validation for CreateCommandSignature.
...
The runtime is specified to validate certain things.
Also, be more robust against unsupported command signatures, since we
might need to draw/dispatch at an offset. Avoids hard GPU crashes.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
896e6fb868
vkd3d-shader: Enable native 16-bit path for min16float DXIL.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:31:22 +02:00
Hans-Kristian Arntzen
f804ddc4c7
vkd3d: Allow integer dot product unconditionally.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:31:22 +02:00
Hans-Kristian Arntzen
0f9d7dd10d
vkd3d: Force RT count to 0 when PS does not exist.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-31 16:00:11 +02:00
Hans-Kristian Arntzen
7acc33ae39
vkd3d: Always return tile shape.
...
Docs are lying. :\
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-31 16:00:11 +02:00
Hans-Kristian Arntzen
7916d2a6d8
vkd3d: Enable and use VK_KHR_fragment_shader_barycentric.
...
For now, just keep the NV path as well. It's the exact same extension
basically as the KHR one.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-31 15:59:49 +02:00
Hans-Kristian Arntzen
467db76f90
vkd3d: Remove obsolete COLOR -> COMPUTE workaround for Deathloop.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-31 15:59:35 +02:00
Hans-Kristian Arntzen
f964532619
vkd3d: Implement extended DXR queries.
...
Requires ray_tracing_maintenance1.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-30 20:26:50 +02:00
Philip Rebohle
910f15dff8
vkd3d: Only set VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT for color attachments.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-05-23 17:17:17 +02:00
Hans-Kristian Arntzen
a94e9b8b6a
vkd3d: Don't create user descriptors until we have observed a pipeline.
...
If we don't get a swapchain on first frame for whatever reason, defer
creating the descriptors.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-23 16:58:15 +02:00
Hans-Kristian Arntzen
4ac0a3b455
vkd3d: Robustly fall back to user buffers if we fail to present twice.
...
If we fail to present after a swapchain recreation, force a SURFACE_LOST
scenario and try again later when things hopefully stabilize.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-23 16:58:15 +02:00
Hans-Kristian Arntzen
300058d9a7
vkd3d: Handle all errors after present, not just OUT_OF_DATE.
...
Can have SURFACE_LOST here as well for example.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-23 16:58:15 +02:00
Hans-Kristian Arntzen
2e16a777ca
vkd3d: Get rid of redundant recreate swapchain call.
...
It just called create_vulkan_swapchain anyways.
Also, add in extra parameter to support temporary user buffer fallbacks.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-23 16:58:15 +02:00
Hans-Kristian Arntzen
ac211d5f6a
vkd3d: Remove direct calls to d3d12_swapchain_destroy_views.
...
Refactor destroy_buffers to destroy_resources as it's more obvious what
it's doing that way.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-23 16:58:15 +02:00
Hans-Kristian Arntzen
1dc4bbe5f2
utils: Report Wine segfault VkResult directly.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-23 16:58:15 +02:00
Robin Kertels
cdabda7805
vkd3d: Implement indirect ray tracing.
...
Signed-off-by: Robin Kertels <robin.kertels@gmail.com>
2022-05-11 19:11:01 +02:00
Robin Kertels
8ac7aaca99
vkd3d: Enable VK_KHR_ray_tracing_maintenance1.
...
Signed-off-by: Robin Kertels <robin.kertels@gmail.com>
2022-05-11 19:11:01 +02:00
Hans-Kristian Arntzen
71940797d1
vkd3d: Check for redundant dynamic state in some cases.
...
Some dynamic state is at risk of being spammed with same arguments many
times. For the dynamic state that is trivial to check, do so.
Ghostwire: Tokyo has been observed to spam the same OMSetStencilRef
value causing some context rolls, also RSSetShadingRate has been set
redundantly.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-03 16:30:42 +02:00
Hans-Kristian Arntzen
97201b8e93
vkd3d: Clean up straggling getenv() calls.
...
Replace with the new vkd3d_get_env wrapper.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-04-25 16:42:41 +02:00
Hans-Kristian Arntzen
51199752dd
vkd3d: Fix queue creation for queue family -1.
...
Fixes validation error on Intel where we are trying to create
CONCURRENT family with {0, -1}.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-04-25 15:54:13 +02:00
Hans-Kristian Arntzen
55a6847c61
vkd3d: Fix MSVC warning about redundant snprintf argument.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-04-25 14:41:44 +02:00
Dean Beeler
063ce7e4bd
Use Windows specific environment calls for better Windows compatibility.
...
Signed-off-by: David McCloskey <davmcclo@gmail.com>
2022-04-22 17:40:21 +02:00
Philip Rebohle
bb2e35c539
vkd3d: Use vkGetDevice{Buffer,Image}MemoryRequirementsKHR in vkd3d_memory_info_init.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-04-22 11:36:02 +02:00
Philip Rebohle
d5ad5bb1de
vkd3d: Use vkGetDeviceImageMemoryRequirementsKHR in vkd3d_get_image_allocation_info.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-04-22 11:36:02 +02:00
Philip Rebohle
beb58f8472
vkd3d: Enable and require VK_KHR_maintenance4.
...
Signed-off-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-04-22 11:36:02 +02:00