From c282ba0d101cca41ecdbad992bf6f643e7e9a2f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A1bio?= Date: Thu, 5 Oct 2023 15:52:35 +0100 Subject: [PATCH] Add validation layer support for nullptr events (#929) This commit adds checks in the validation layer for the case where the event wait list parameter in urEnqueue entrypoints contains a nullptr event. --- scripts/templates/helper.py | 11 + scripts/templates/valddi.cpp.mako | 10 + source/loader/layers/validation/ur_valddi.cpp | 232 ++++++++++++++++++ .../enqueue/urEnqueueEventsWait.cpp | 4 + .../urEnqueueEventsWaitWithBarrier.cpp | 5 + .../enqueue/urEnqueueKernelLaunch.cpp | 6 + .../enqueue/urEnqueueMemBufferCopy.cpp | 5 + .../enqueue/urEnqueueMemBufferCopyRect.cpp | 7 + .../enqueue/urEnqueueMemBufferFill.cpp | 6 + .../enqueue/urEnqueueMemBufferMap.cpp | 6 + .../enqueue/urEnqueueMemBufferRead.cpp | 6 + .../enqueue/urEnqueueMemBufferReadRect.cpp | 7 + .../enqueue/urEnqueueMemBufferWrite.cpp | 6 + .../enqueue/urEnqueueMemBufferWriteRect.cpp | 7 + .../enqueue/urEnqueueMemImageCopy.cpp | 6 + .../enqueue/urEnqueueMemImageRead.cpp | 6 + .../enqueue/urEnqueueMemImageWrite.cpp | 6 + .../conformance/enqueue/urEnqueueMemUnmap.cpp | 5 + .../enqueue/urEnqueueReadHostPipe.cpp | 6 + test/conformance/enqueue/urEnqueueUSMFill.cpp | 5 + .../enqueue/urEnqueueUSMFill2D.cpp | 6 + .../enqueue/urEnqueueUSMMemcpy.cpp | 5 + .../enqueue/urEnqueueUSMMemcpy2D.cpp | 5 + .../enqueue/urEnqueueUSMPrefetch.cpp | 6 + .../enqueue/urEnqueueWriteHostPipe.cpp | 6 + 25 files changed, 380 insertions(+) diff --git a/scripts/templates/helper.py b/scripts/templates/helper.py index e6e3a8569e..4fbb2ca47b 100644 --- a/scripts/templates/helper.py +++ b/scripts/templates/helper.py @@ -1328,3 +1328,14 @@ def get_create_retain_release_functions(specs, namespace, tags): ) return {"create": create_funcs, "retain": retain_funcs, "release": release_funcs} + + +def get_event_wait_list_functions(specs, namespace, tags): + funcs = [] + for s in specs: + for obj in s['objects']: + if re.match(r"function", obj['type']): + if any(x['name'] == 'phEventWaitList' for x in obj['params']) and any( + x['name'] == 'numEventsInWaitList' for x in obj['params']): + funcs.append(make_func_name(namespace, tags, obj)) + return funcs diff --git a/scripts/templates/valddi.cpp.mako b/scripts/templates/valddi.cpp.mako index e778d01833..c99328727d 100644 --- a/scripts/templates/valddi.cpp.mako +++ b/scripts/templates/valddi.cpp.mako @@ -60,6 +60,16 @@ namespace ur_validation_layer %endfor %endfor + %if func_name in th.get_event_wait_list_functions(specs, n, tags): + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } + %endif + } ${x}_result_t result = ${th.make_pfn_name(n, tags, obj)}( ${", ".join(th.make_param_lines(n, tags, obj, format=["name"]))} ); diff --git a/source/loader/layers/validation/ur_valddi.cpp b/source/loader/layers/validation/ur_valddi.cpp index f6ae024c27..b4298dacf3 100644 --- a/source/loader/layers/validation/ur_valddi.cpp +++ b/source/loader/layers/validation/ur_valddi.cpp @@ -3964,6 +3964,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueKernelLaunch( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnKernelLaunch( @@ -4006,6 +4014,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueEventsWait( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4048,6 +4064,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueEventsWaitWithBarrier( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnEventsWaitWithBarrier(hQueue, numEventsInWaitList, @@ -4101,6 +4125,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferRead( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4157,6 +4189,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferWrite( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4263,6 +4303,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferReadRect( 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnMemBufferReadRect( @@ -4374,6 +4422,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferWriteRect( 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnMemBufferWriteRect( @@ -4429,6 +4485,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferCopy( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4528,6 +4592,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferCopyRect( 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnMemBufferCopyRect( @@ -4603,6 +4675,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferFill( if (offset % patternSize != 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4666,6 +4746,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemImageRead( if (region.width == 0 || region.height == 0 || region.depth == 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnMemImageRead( @@ -4730,6 +4818,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemImageWrite( if (region.width == 0 || region.height == 0 || region.depth == 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnMemImageWrite( @@ -4794,6 +4890,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemImageCopy( if (region.width == 0 || region.height == 0 || region.depth == 0) { return UR_RESULT_ERROR_INVALID_SIZE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4854,6 +4958,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemBufferMap( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnMemBufferMap(hQueue, hBuffer, blockingMap, mapFlags, @@ -4906,6 +5018,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemUnmap( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -4979,6 +5099,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMFill( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5036,6 +5164,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMMemcpy( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5092,6 +5228,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMPrefetch( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5225,6 +5369,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMFill2D( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5303,6 +5455,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueUSMMemcpy2D( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5366,6 +5526,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableWrite( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnDeviceGlobalVariableWrite( @@ -5429,6 +5597,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueDeviceGlobalVariableRead( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnDeviceGlobalVariableRead( @@ -5495,6 +5671,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueReadHostPipe( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5561,6 +5745,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueWriteHostPipe( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = @@ -5982,6 +6174,14 @@ __urdlllocal ur_result_t UR_APICALL urBindlessImagesImageCopyExp( if (pImageDesc && UR_MEM_TYPE_IMAGE1D_BUFFER < pImageDesc->type) { return UR_RESULT_ERROR_INVALID_IMAGE_FORMAT_DESCRIPTOR; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnImageCopyExp( @@ -6348,6 +6548,14 @@ __urdlllocal ur_result_t UR_APICALL urBindlessImagesWaitExternalSemaphoreExp( if (NULL == hSemaphore) { return UR_RESULT_ERROR_INVALID_NULL_HANDLE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnWaitExternalSemaphoreExp( @@ -6388,6 +6596,14 @@ __urdlllocal ur_result_t UR_APICALL urBindlessImagesSignalExternalSemaphoreExp( if (NULL == hSemaphore) { return UR_RESULT_ERROR_INVALID_NULL_HANDLE; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnSignalExternalSemaphoreExp( @@ -7252,6 +7468,14 @@ __urdlllocal ur_result_t UR_APICALL urCommandBufferEnqueueExp( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnEnqueueExp( @@ -7322,6 +7546,14 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueCooperativeKernelLaunchExp( if (phEventWaitList != NULL && numEventsInWaitList == 0) { return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; } + + if (phEventWaitList != NULL && numEventsInWaitList > 0) { + for (uint32_t i = 0; i < numEventsInWaitList; ++i) { + if (phEventWaitList[i] == NULL) { + return UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST; + } + } + } } ur_result_t result = pfnCooperativeKernelLaunchExp( diff --git a/test/conformance/enqueue/urEnqueueEventsWait.cpp b/test/conformance/enqueue/urEnqueueEventsWait.cpp index a80c884e87..0b7db213dc 100644 --- a/test/conformance/enqueue/urEnqueueEventsWait.cpp +++ b/test/conformance/enqueue/urEnqueueEventsWait.cpp @@ -80,4 +80,8 @@ TEST_P(urEnqueueEventsWaitTest, InvalidNullPtrEventWaitList) { ASSERT_EQ_RESULT(urEnqueueEventsWait(queue1, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueEventsWait(queue1, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueEventsWaitWithBarrier.cpp b/test/conformance/enqueue/urEnqueueEventsWaitWithBarrier.cpp index ca465e937e..a107ed7b9c 100644 --- a/test/conformance/enqueue/urEnqueueEventsWaitWithBarrier.cpp +++ b/test/conformance/enqueue/urEnqueueEventsWaitWithBarrier.cpp @@ -89,4 +89,9 @@ TEST_P(urEnqueueEventsWaitWithBarrierTest, InvalidNullPtrEventWaitList) { ASSERT_EQ_RESULT( urEnqueueEventsWaitWithBarrier(queue1, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT( + urEnqueueEventsWaitWithBarrier(queue1, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueKernelLaunch.cpp b/test/conformance/enqueue/urEnqueueKernelLaunch.cpp index 0bca070da9..a75c8a3706 100644 --- a/test/conformance/enqueue/urEnqueueKernelLaunch.cpp +++ b/test/conformance/enqueue/urEnqueueKernelLaunch.cpp @@ -56,6 +56,12 @@ TEST_P(urEnqueueKernelLaunchTest, InvalidNullPtrEventWaitList) { &global_offset, &global_size, nullptr, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueKernelLaunch(queue, kernel, n_dimensions, + &global_offset, &global_size, + nullptr, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueKernelLaunchTest, InvalidWorkDimension) { diff --git a/test/conformance/enqueue/urEnqueueMemBufferCopy.cpp b/test/conformance/enqueue/urEnqueueMemBufferCopy.cpp index 3eb2308702..f226e7597a 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferCopy.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferCopy.cpp @@ -74,6 +74,11 @@ TEST_P(urEnqueueMemBufferCopyTest, InvalidNullPtrEventWaitList) { ASSERT_EQ_RESULT(urEnqueueMemBufferCopy(queue, src_buffer, dst_buffer, 0, 0, size, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemBufferCopy(queue, src_buffer, dst_buffer, 0, 0, + size, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemBufferCopyTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemBufferCopyRect.cpp b/test/conformance/enqueue/urEnqueueMemBufferCopyRect.cpp index f330503211..873c4953a7 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferCopyRect.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferCopyRect.cpp @@ -219,6 +219,13 @@ TEST_P(urEnqueueMemBufferCopyRectTest, InvalidNullPtrEventWaitList) { src_region, size, size, size, size, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemBufferCopyRect(queue, src_buffer, dst_buffer, + src_origin, dst_origin, + src_region, size, size, size, + size, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } using urEnqueueMemBufferCopyRectMultiDeviceTest = diff --git a/test/conformance/enqueue/urEnqueueMemBufferFill.cpp b/test/conformance/enqueue/urEnqueueMemBufferFill.cpp index cbeae5e85c..d1002960fb 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferFill.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferFill.cpp @@ -183,6 +183,12 @@ TEST_P(urEnqueueMemBufferFillNegativeTest, InvalidNullPtrEventWaitList) { sizeof(uint32_t), 0, size, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemBufferFill(queue, buffer, &pattern, + sizeof(uint32_t), 0, size, 1, + &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemBufferFillNegativeTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemBufferMap.cpp b/test/conformance/enqueue/urEnqueueMemBufferMap.cpp index 5ed576d6f3..fc44360c22 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferMap.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferMap.cpp @@ -187,6 +187,12 @@ TEST_P(urEnqueueMemBufferMapTest, InvalidNullPtrEventWaitList) { 0, size, 0, &validEvent, nullptr, &map), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemBufferMap(queue, buffer, true, + UR_MAP_FLAG_READ | UR_MAP_FLAG_WRITE, + 0, size, 1, &inv_evt, nullptr, &map), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemBufferMapTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemBufferRead.cpp b/test/conformance/enqueue/urEnqueueMemBufferRead.cpp index 0192333783..6410d6feed 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferRead.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferRead.cpp @@ -49,6 +49,12 @@ TEST_P(urEnqueueMemBufferReadTest, InvalidNullPtrEventWaitList) { output.data(), 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemBufferRead(queue, buffer, true, 0, size, + output.data(), 1, &inv_evt, + nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemBufferReadTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemBufferReadRect.cpp b/test/conformance/enqueue/urEnqueueMemBufferReadRect.cpp index ae0cc05332..28e373104c 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferReadRect.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferReadRect.cpp @@ -176,6 +176,13 @@ TEST_P(urEnqueueMemBufferReadRectTest, InvalidNullPtrEventWaitList) { host_offset, region, size, size, size, size, dst.data(), 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT( + urEnqueueMemBufferReadRect(queue, buffer, true, buffer_offset, + host_offset, region, size, size, size, size, + dst.data(), 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } using urEnqueueMemBufferReadRectMultiDeviceTest = diff --git a/test/conformance/enqueue/urEnqueueMemBufferWrite.cpp b/test/conformance/enqueue/urEnqueueMemBufferWrite.cpp index 913d583058..aea6b8face 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferWrite.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferWrite.cpp @@ -61,6 +61,12 @@ TEST_P(urEnqueueMemBufferWriteTest, InvalidNullPtrEventWaitList) { input.data(), 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemBufferWrite(queue, buffer, true, 0, size, + input.data(), 1, &inv_evt, + nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemBufferWriteTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemBufferWriteRect.cpp b/test/conformance/enqueue/urEnqueueMemBufferWriteRect.cpp index e41991e727..d3c7e5c7a3 100644 --- a/test/conformance/enqueue/urEnqueueMemBufferWriteRect.cpp +++ b/test/conformance/enqueue/urEnqueueMemBufferWriteRect.cpp @@ -183,6 +183,13 @@ TEST_P(urEnqueueMemBufferWriteRectTest, InvalidNullPtrEventWaitList) { host_offset, region, size, size, size, size, src.data(), 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT( + urEnqueueMemBufferWriteRect(queue, buffer, true, buffer_offset, + host_offset, region, size, size, size, size, + src.data(), 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemBufferWriteRectTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemImageCopy.cpp b/test/conformance/enqueue/urEnqueueMemImageCopy.cpp index e75ab38976..2e29dab482 100644 --- a/test/conformance/enqueue/urEnqueueMemImageCopy.cpp +++ b/test/conformance/enqueue/urEnqueueMemImageCopy.cpp @@ -233,6 +233,12 @@ TEST_P(urEnqueueMemImageCopyTest, InvalidNullPtrEventWaitList) { {0, 0, 0}, size, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemImageCopy(queue, srcImage, dstImage, {0, 0, 0}, + {0, 0, 0}, size, 1, &inv_evt, + nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemImageCopyTest, InvalidSize) { diff --git a/test/conformance/enqueue/urEnqueueMemImageRead.cpp b/test/conformance/enqueue/urEnqueueMemImageRead.cpp index d40625c3e1..daebe0865d 100644 --- a/test/conformance/enqueue/urEnqueueMemImageRead.cpp +++ b/test/conformance/enqueue/urEnqueueMemImageRead.cpp @@ -69,6 +69,12 @@ TEST_P(urEnqueueMemImageReadTest, InvalidNullPtrEventWaitList) { region1D, 0, 0, output.data(), 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemImageRead(queue, image1D, true, origin, + region1D, 0, 0, output.data(), 1, + &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemImageReadTest, InvalidOrigin1D) { diff --git a/test/conformance/enqueue/urEnqueueMemImageWrite.cpp b/test/conformance/enqueue/urEnqueueMemImageWrite.cpp index 7f7968bdff..76b5f0b4dd 100644 --- a/test/conformance/enqueue/urEnqueueMemImageWrite.cpp +++ b/test/conformance/enqueue/urEnqueueMemImageWrite.cpp @@ -66,6 +66,12 @@ TEST_P(urEnqueueMemImageWriteTest, InvalidNullPtrEventWaitList) { region1D, 0, 0, input.data(), 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueMemImageWrite(queue, image1D, true, origin, + region1D, 0, 0, input.data(), 1, + &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } TEST_P(urEnqueueMemImageWriteTest, InvalidOrigin1D) { diff --git a/test/conformance/enqueue/urEnqueueMemUnmap.cpp b/test/conformance/enqueue/urEnqueueMemUnmap.cpp index a205ded3b9..046d3088d9 100644 --- a/test/conformance/enqueue/urEnqueueMemUnmap.cpp +++ b/test/conformance/enqueue/urEnqueueMemUnmap.cpp @@ -50,4 +50,9 @@ TEST_P(urEnqueueMemUnmapTest, InvalidNullPtrEventWaitList) { ASSERT_EQ_RESULT( urEnqueueMemUnmap(queue, buffer, map, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT( + urEnqueueMemUnmap(queue, buffer, map, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueReadHostPipe.cpp b/test/conformance/enqueue/urEnqueueReadHostPipe.cpp index 93e82b6531..379ee23f9d 100644 --- a/test/conformance/enqueue/urEnqueueReadHostPipe.cpp +++ b/test/conformance/enqueue/urEnqueueReadHostPipe.cpp @@ -76,4 +76,10 @@ TEST_P(urEnqueueReadHostPipeTest, InvalidEventWaitList) { urEnqueueReadHostPipe(queue, program, pipe_symbol, /*blocking*/ true, &buffer, size, 0, &validEvent, nullptr)); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueReadHostPipe(queue, program, pipe_symbol, + /*blocking*/ true, &buffer, size, 1, + &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueUSMFill.cpp b/test/conformance/enqueue/urEnqueueUSMFill.cpp index e595056035..24a6a240fb 100644 --- a/test/conformance/enqueue/urEnqueueUSMFill.cpp +++ b/test/conformance/enqueue/urEnqueueUSMFill.cpp @@ -203,4 +203,9 @@ TEST_P(urEnqueueUSMFillNegativeTest, InvalidEventWaitList) { ASSERT_EQ_RESULT(urEnqueueUSMFill(queue, ptr, pattern_size, pattern.data(), size, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueUSMFill(queue, ptr, pattern_size, pattern.data(), + size, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueUSMFill2D.cpp b/test/conformance/enqueue/urEnqueueUSMFill2D.cpp index 9cd5bc7591..d43a758827 100644 --- a/test/conformance/enqueue/urEnqueueUSMFill2D.cpp +++ b/test/conformance/enqueue/urEnqueueUSMFill2D.cpp @@ -273,4 +273,10 @@ TEST_P(urEnqueueUSMFill2DNegativeTest, InvalidNullPtrEventWaitList) { pattern.data(), width, 1, 0, &validEvent, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueUSMFill2D(queue, ptr, pitch, pattern_size, + pattern.data(), width, 1, 1, &inv_evt, + nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueUSMMemcpy.cpp b/test/conformance/enqueue/urEnqueueUSMMemcpy.cpp index e1af65896c..a2c14a5a92 100644 --- a/test/conformance/enqueue/urEnqueueUSMMemcpy.cpp +++ b/test/conformance/enqueue/urEnqueueUSMMemcpy.cpp @@ -158,6 +158,11 @@ TEST_P(urEnqueueUSMMemcpyTest, InvalidNullPtrEventWaitList) { allocation_size, 0, &memset_event, nullptr), UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueUSMMemcpy(queue, true, device_dst, device_src, + allocation_size, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } UUR_INSTANTIATE_DEVICE_TEST_SUITE_P(urEnqueueUSMMemcpyTest); diff --git a/test/conformance/enqueue/urEnqueueUSMMemcpy2D.cpp b/test/conformance/enqueue/urEnqueueUSMMemcpy2D.cpp index e56d2a02c9..d64b499966 100644 --- a/test/conformance/enqueue/urEnqueueUSMMemcpy2D.cpp +++ b/test/conformance/enqueue/urEnqueueUSMMemcpy2D.cpp @@ -183,5 +183,10 @@ TEST_P(urEnqueueUSMMemcpy2DNegativeTest, InvalidEventWaitList) { urEnqueueUSMMemcpy2D(queue, true, pDst, pitch, pSrc, pitch, width, height, 0, &event, nullptr)); + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueUSMMemcpy2D(queue, true, pDst, pitch, pSrc, pitch, + width, height, 1, &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); + ASSERT_SUCCESS(urEventRelease(event)); } diff --git a/test/conformance/enqueue/urEnqueueUSMPrefetch.cpp b/test/conformance/enqueue/urEnqueueUSMPrefetch.cpp index 70b93a55b7..cd7b087876 100644 --- a/test/conformance/enqueue/urEnqueueUSMPrefetch.cpp +++ b/test/conformance/enqueue/urEnqueueUSMPrefetch.cpp @@ -122,4 +122,10 @@ TEST_P(urEnqueueUSMPrefetchTest, InvalidEventWaitList) { urEnqueueUSMPrefetch(queue, ptr, allocation_size, UR_USM_MIGRATION_FLAG_DEFAULT, 0, &validEvent, nullptr)); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueUSMPrefetch(queue, ptr, allocation_size, + UR_USM_MIGRATION_FLAG_DEFAULT, 1, + &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); } diff --git a/test/conformance/enqueue/urEnqueueWriteHostPipe.cpp b/test/conformance/enqueue/urEnqueueWriteHostPipe.cpp index 917a94a672..86e3b99fe3 100644 --- a/test/conformance/enqueue/urEnqueueWriteHostPipe.cpp +++ b/test/conformance/enqueue/urEnqueueWriteHostPipe.cpp @@ -76,4 +76,10 @@ TEST_P(urEnqueueWriteHostPipeTest, InvalidEventWaitList) { urEnqueueWriteHostPipe(queue, program, pipe_symbol, /*blocking*/ true, &buffer, size, 0, &validEvent, nullptr)); + + ur_event_handle_t inv_evt = nullptr; + ASSERT_EQ_RESULT(urEnqueueWriteHostPipe(queue, program, pipe_symbol, + /*blocking*/ true, &buffer, size, 1, + &inv_evt, nullptr), + UR_RESULT_ERROR_INVALID_EVENT_WAIT_LIST); }