mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
vkd3d: Handle multiple fence NULL event waits in d3d12_device_SetEventOnMultipleFenceCompletion().
This commit is contained in:
Notes:
Henri Verbeet
2025-05-06 19:05:21 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1476
@@ -38915,8 +38915,7 @@ static void multi_fence_event_wait_main(void *ctx)
|
||||
|
||||
hr = ID3D12Device1_SetEventOnMultipleFenceCompletion(data->device,
|
||||
data->fences, data->values, data->fence_count, data->flags, NULL);
|
||||
if (vkd3d_test_platform_is_windows() || data->fence_count == 1)
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
signal_event(data->completed);
|
||||
}
|
||||
@@ -39050,7 +39049,7 @@ static void test_multi_fence_event(void)
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
hr = ID3D12Device1_SetEventOnMultipleFenceCompletion(device1, fences,
|
||||
fence_values, 3, D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL, NULL);
|
||||
todo ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ret = wait_event(event, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Device1_SetEventOnMultipleFenceCompletion(device1, fences,
|
||||
@@ -39060,7 +39059,7 @@ static void test_multi_fence_event(void)
|
||||
ok(ret == WAIT_OBJECT_0, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Device1_SetEventOnMultipleFenceCompletion(device1, fences,
|
||||
fence_values, 3, D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY, NULL);
|
||||
todo ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ret = wait_event(event, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Device1_SetEventOnMultipleFenceCompletion(device1, fences,
|
||||
@@ -39100,25 +39099,16 @@ static void test_multi_fence_event(void)
|
||||
ok(thread, "Failed to create thread.\n");
|
||||
ret = wait_event(thread_data.started, INFINITE);
|
||||
ok(ret == WAIT_OBJECT_0, "Got ret %#x.\n", ret);
|
||||
if (vkd3d_test_platform_is_windows())
|
||||
{
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
}
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Fence_Signal(fences[1], 41);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
if (vkd3d_test_platform_is_windows())
|
||||
{
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
}
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Fence_Signal(fences[0], 40);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
if (vkd3d_test_platform_is_windows())
|
||||
{
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
}
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Fence_Signal(fences[2], 42);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ret = wait_event(thread_data.completed, INFINITE);
|
||||
@@ -39154,11 +39144,8 @@ static void test_multi_fence_event(void)
|
||||
ok(thread, "Failed to create thread.\n");
|
||||
ret = wait_event(thread_data.started, INFINITE);
|
||||
ok(ret == WAIT_OBJECT_0, "Got ret %#x.\n", ret);
|
||||
if (vkd3d_test_platform_is_windows())
|
||||
{
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
}
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Fence_Signal(fences[1], 57);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ret = wait_event(thread_data.completed, INFINITE);
|
||||
@@ -39189,11 +39176,8 @@ static void test_multi_fence_event(void)
|
||||
ok(thread, "Failed to create thread.\n");
|
||||
ret = wait_event(thread_data.started, INFINITE);
|
||||
ok(ret == WAIT_OBJECT_0, "Got ret %#x.\n", ret);
|
||||
if (vkd3d_test_platform_is_windows())
|
||||
{
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
}
|
||||
ret = wait_event(thread_data.completed, 0);
|
||||
ok(ret == WAIT_TIMEOUT, "Got ret %#x.\n", ret);
|
||||
hr = ID3D12Fence_Signal(fences[1], 67);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ret = wait_event(thread_data.completed, INFINITE);
|
||||
@@ -39211,7 +39195,7 @@ static void test_multi_fence_event(void)
|
||||
|
||||
hr = ID3D12Device1_SetEventOnMultipleFenceCompletion(device1, fences,
|
||||
fence_values, 3, D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY, NULL);
|
||||
todo ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
ok(hr == S_OK, "Got hr %#x.\n", hr);
|
||||
|
||||
destroy_event(thread_data.completed);
|
||||
destroy_event(thread_data.started);
|
||||
|
Reference in New Issue
Block a user