anv: flaky vkd3d-proton test_buffer_feedback_instructions_sm51
You can run that test with :
VKD3D_TEST_FILTER=test_buffer_feedback_instructions_sm51 ./build/tests/d3d12
The test is flaky returning random failures from run to run :
d3d12: 568 tests executed (8 failures, 64 successful todo, 0 skipped, 192 todo, 0 bugs).
d3d12: 568 tests executed (10 failures, 64 successful todo, 0 skipped, 192 todo, 0 bugs).
I've traced this back to device->using_sparse = false
until the first QueueBindSparse is executed.
The problem is that a previous command buffer was recorded and is missing the right flush in cmd_buffer_barrier()
.
I think the solution is to set that boolean at device create time. The problem is that a lot of apps will say they use sparse when they don't actually. One of the solution would be doing what !27773 (027c084f) does, which is to put the sparse queue on its own and set device->using_sparse
depending on whether a sparse queue is created.
Technically that's still slightly outside of spec, because an app could create sparse buffer, never bind it to anything and not create a sparse queue and still expects reading 0s from the buffer after having written to it. But that's probably enough of a corner case that we don't need to care.
/cc @pzanoni