Hi,
Il 06/10/21 18:43, Henri Verbeet ha scritto:
From: Conor McCarthycmccarthy@codeweavers.com
Signed-off-by: Conor McCarthycmccarthy@codeweavers.com Signed-off-by: Henri Verbeethverbeet@codeweavers.com
libs/vkd3d/command.c | 120 +++++++++++++++++++----- libs/vkd3d/device.c | 114 +++++++++++++++++++++++ libs/vkd3d/resource.c | 9 ++ libs/vkd3d/state.c | 181 ++++++++++++++++++++++++++++++++----- libs/vkd3d/vkd3d_private.h | 40 +++++++- tests/d3d12.c | 18 ++-- 6 files changed, 424 insertions(+), 58 deletions(-)
The patch is huge and I don't know the code very much, but it causes tests/d3d12 to hang on my NVIDIA Quadro P2000 Mobile card. Specifically, eventually a thread gets stuck in a busy loop writing
vkd3d_wait_for_gpu_fences Failed to wait for Vulkan fences, vr -4.
in the log.
This happens inside test_unbounded_resource_arrays, but if I run just that test (jumping over the others via goto and return), the symptom is different:
malloc(): invalid size (unsorted)
Doing some additional bisection, it seems that if I run all the tests from (and including) test_clip_distance up to test_unbounded_resource_arrays, then the symptom is failing to wait for Vulkan fences. If I start running after test_clip_distance, then the symptom becomes the invalid malloc size.
But there are other interactions, because if I run just test_clip_distance and test_unbounded_resource_arrays I have the invalid malloc size again. I am not sure that tracking down exactly which test combinations cause one or the other behavior is a better usage of my time than actually tracking down the bug. At the same time, I am not very confident with this area of vkd3d, so if Conor or Henri or whoever have hints, that's appreciated. :-)
Thanks, Giovanni.