Hi, Il 06/10/21 18:43, Henri Verbeet ha scritto:
From: Conor McCarthy<cmccarthy(a)codeweavers.com>
Signed-off-by: Conor McCarthy<cmccarthy(a)codeweavers.com> Signed-off-by: Henri Verbeet<hverbeet(a)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.