Hans-Kristian Arntzen
826bb341b5
tests: Add test for freeing underlying memory of a reserved resource.
...
As long as the reserved regions are not used, this is okay.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-15 13:28:27 +02:00
Hans-Kristian Arntzen
c0856f3702
idl: Fix const correctness of UpdateTileMappings.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-14 12:20:06 +02:00
Hans-Kristian Arntzen
c3036fa85c
vkd3d: Demote patching logs to TRACE.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-14 11:48:33 +02:00
Hans-Kristian Arntzen
010db2bb7b
tests: Fix compiler warnings in various tests.
...
Mostly related to casting vec4 struct to float where array[4] is expected.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-13 14:20:49 +02:00
Hans-Kristian Arntzen
ce5df40f01
vkd3d-shader: Workaround trivial compiler warning.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-13 14:19:56 +02:00
Hans-Kristian Arntzen
24de683375
vkd3d: Use index type LUT.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-10 15:36:18 +02:00
Hans-Kristian Arntzen
d23f5f4343
vkd3d: Attempt to reuse application indirect command buffer.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-10 14:51:37 +02:00
Hans-Kristian Arntzen
538c3c1f19
vkd3d: Attempt to pack indirect command buffer tighter if we can.
...
If implementation reports 4 alignment on offset, it must be able to
handle 4 byte offset on VAs.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-10 14:51:37 +02:00
Hans-Kristian Arntzen
bc922b8dd9
tests: Test both aligned and "unaligned" argument buffer offsets.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-10 14:51:37 +02:00
Hans-Kristian Arntzen
e497e56aa1
vkd3d: Don't synchronize against PREPROCESS stages.
...
They are implied when using isPreprocessed = VK_FALSE.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-09 15:28:16 +02:00
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
0ea5a17797
dxil-spirv: Update submodule.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-08 14:35:22 +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
2078912c26
common: Assert that alignment is > 0.
...
Found bug when allocating device generated commands.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-08 12:32:46 +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
a9583f4358
tests: Add large root constant CBV to execute indirect advanced.
...
Tests that we can handle > 128 byte push constant blocks.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
1591134b7e
tests: Add test for early and late indirect patching.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:25 +02:00
Hans-Kristian Arntzen
dd840e2004
tests: Remove TODOs from ExecuteIndirect state test.
...
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
33bad640ab
tests: Add test for advanced ExecuteIndirect features.
...
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
c3fb6a6c5e
dxil-spirv: Update submodule.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:53:02 +02:00
Hans-Kristian Arntzen
e8f1936ee2
vkd3d: Convert VKD3D_CONFIG flags to 64-bit constants.
...
We're soon running out of 32-bit space.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:31:48 +02:00
Hans-Kristian Arntzen
4166eb042b
tests: Add exploratory test for accessing root descriptors with overflow.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:31:38 +02:00
Hans-Kristian Arntzen
7a002698f3
vkd3d-shader: Prefer InBounds access chains for root descriptors.
...
Gets better codegen, since compiler no longer has to assume
that negative indices can be generated, which means full 64-bit sign
extension and addressing math (slow).
Based on experiments, no native driver lets -1 indices work,
so it's safe to make the u32 assumption.
See test_root_descriptor_offset_sign as a justification for this change.
Also, see https://gitlab.freedesktop.org/mesa/mesa/-/issues/6562
for discussion on InBounds.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-06-01 15:31:38 +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
8989360087
dxil-spirv: Update submodule.
...
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
3b0d7e043d
tests: Add more small resource tests to get_resource_tiling test.
...
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
2022-05-31 16:00:11 +02:00