Skip to content

Commit 9c19dbb

Browse files
committed
Support null kernel arg update
1 parent 85476e1 commit 9c19dbb

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

test/conformance/exp_command_buffer/exp_command_buffer_adapter_native_cpu.match

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
{{OPT}}InvalidUpdateTest.NotUpdatableCommandBuffer/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
1616
{{OPT}}InvalidUpdateTest.InvalidDimensions/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
1717
{{OPT}}USMFillCommandTest.UpdateParameters/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
18+
{{OPT}}USMFillCommandTest.UpdateNull/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
1819
{{OPT}}USMFillCommandTest.UpdateBeforeEnqueue/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
1920
{{OPT}}USMMultipleFillCommandTest.UpdateAllKernels/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}
2021
{{OPT}}BufferSaxpyKernelTest.UpdateParameters/SYCL_NATIVE_CPU___SYCL_Native_CPU__{{.*}}

test/conformance/exp_command_buffer/update/usm_fill_kernel_update.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,46 @@ TEST_P(USMFillCommandTest, UpdateBeforeEnqueue) {
199199
Validate((uint32_t *)new_shared_ptr, global_size, new_val);
200200
}
201201

202+
// Test using a different global size to fill and larger USM output buffer
203+
TEST_P(USMFillCommandTest, UpdateNull) {
204+
// Run command-buffer prior to update an verify output
205+
ASSERT_SUCCESS(urCommandBufferEnqueueExp(updatable_cmd_buf_handle, queue, 0,
206+
nullptr, nullptr));
207+
ASSERT_SUCCESS(urQueueFinish(queue));
208+
Validate((uint32_t *)shared_ptr, global_size, val);
209+
210+
// Set nullptr as kernel output at index 0
211+
void *null_ptr = nullptr;
212+
ur_exp_command_buffer_update_pointer_arg_desc_t new_output_desc = {
213+
UR_STRUCTURE_TYPE_EXP_COMMAND_BUFFER_UPDATE_POINTER_ARG_DESC, // stype
214+
nullptr, // pNext
215+
0, // argIndex
216+
nullptr, // pProperties
217+
&null_ptr, // pArgValue
218+
};
219+
220+
ur_exp_command_buffer_update_kernel_launch_desc_t update_desc = {
221+
UR_STRUCTURE_TYPE_EXP_COMMAND_BUFFER_UPDATE_KERNEL_LAUNCH_DESC, // stype
222+
nullptr, // pNext
223+
kernel, // hNewKernel
224+
0, // numNewMemObjArgs
225+
1, // numNewPointerArgs
226+
0, // numNewValueArgs
227+
n_dimensions, // newWorkDim
228+
nullptr, // pNewMemObjArgList
229+
&new_output_desc, // pNewPointerArgList
230+
nullptr, // pNewValueArgList
231+
nullptr, // pNewGlobalWorkOffset
232+
nullptr, // pNewGlobalWorkSize
233+
nullptr, // pNewLocalWorkSize
234+
};
235+
236+
// Verify update kernel succeeded but don't run to avoid dereferencing
237+
// the nullptr.
238+
ASSERT_SUCCESS(
239+
urCommandBufferUpdateKernelLaunchExp(command_handle, &update_desc));
240+
}
241+
202242
// Test updating a command-buffer with multiple USM fill kernel commands
203243
struct USMMultipleFillCommandTest
204244
: uur::command_buffer::urUpdatableCommandBufferExpExecutionTest {

0 commit comments

Comments
 (0)