@@ -3393,8 +3393,9 @@ class Context
33933393 }
33943394
33953395 object_ = CL_ (clCreateContext)(
3396- properties, (cl_uint) numDevices,
3397- deviceIDs.data (),
3396+ properties,
3397+ (cl_uint)deviceIDs.size (),
3398+ deviceIDs.empty () ? nullptr : deviceIDs.data (),
33983399 notifyFptr, data, &error);
33993400
34003401 detail::errHandler (error, __CREATE_CONTEXT_ERR);
@@ -6463,10 +6464,11 @@ class Kernel : public detail::Wrapper<cl_kernel>
64636464 /* ! \brief setArg overload taking a vector type.
64646465 */
64656466 template <typename T, class Alloc >
6466- cl_int setArg (cl_uint index, const cl::vector<T, Alloc> &argPtr )
6467+ cl_int setArg (cl_uint index, const cl::vector<T, Alloc> &arg )
64676468 {
64686469 return detail::errHandler (
6469- CL_ (clSetKernelArgSVMPointer)(object_, index, argPtr.data ()),
6470+ CL_ (clSetKernelArgSVMPointer)(object_, index,
6471+ arg.empty () ? nullptr : arg.data ()),
64706472 __SET_KERNEL_ARGS_ERR);
64716473 }
64726474
@@ -6515,8 +6517,8 @@ class Kernel : public detail::Wrapper<cl_kernel>
65156517 CL_ (clSetKernelExecInfo)(
65166518 object_,
65176519 CL_KERNEL_EXEC_INFO_SVM_PTRS,
6518- sizeof (void *)* pointerList.size (),
6519- pointerList.data ()));
6520+ sizeof (void *) * pointerList.size (),
6521+ pointerList.empty () ? nullptr : pointerList. data ()));
65206522 }
65216523
65226524 /* !
@@ -6530,8 +6532,8 @@ class Kernel : public detail::Wrapper<cl_kernel>
65306532 CL_ (clSetKernelExecInfo)(
65316533 object_,
65326534 CL_KERNEL_EXEC_INFO_SVM_PTRS,
6533- sizeof (void *)* pointerList.size (),
6534- pointerList.data ()));
6535+ sizeof (void *) * pointerList.size (),
6536+ pointerList.empty () ? nullptr : pointerList. data ()));
65356537 }
65366538
65376539 /* ! \brief Enable fine-grained system SVM.
@@ -6597,7 +6599,7 @@ class Kernel : public detail::Wrapper<cl_kernel>
65976599 CL_ (clSetKernelExecInfo)(
65986600 object_,
65996601 CL_KERNEL_EXEC_INFO_SVM_PTRS,
6600- sizeof (void *)* (1 + sizeof ...(Ts)),
6602+ sizeof (void *) * (1 + sizeof ...(Ts)),
66016603 pointerList.data ()));
66026604 }
66036605
@@ -6969,11 +6971,14 @@ class Program : public detail::Wrapper<cl_program>
69696971 }
69706972
69716973 object_ = CL_ (clCreateProgramWithBinary)(
6972- context (), (cl_uint) devices.size (),
6973- deviceIDs.data (),
6974- lengths.data (), images.data (), (binaryStatus != nullptr && numDevices > 0 )
6974+ context (),
6975+ (cl_uint)deviceIDs.size (),
6976+ deviceIDs.empty () ? nullptr : deviceIDs.data (),
6977+ lengths.data (), images.data (),
6978+ (binaryStatus != nullptr && numDevices > 0 )
69756979 ? &binaryStatus->front ()
6976- : nullptr , &error);
6980+ : nullptr ,
6981+ &error);
69776982
69786983 detail::errHandler (error, __CREATE_PROGRAM_WITH_BINARY_ERR);
69796984 if (err != nullptr ) {
@@ -6995,7 +7000,6 @@ class Program : public detail::Wrapper<cl_program>
69957000 {
69967001 cl_int error;
69977002
6998-
69997003 size_type numDevices = devices.size ();
70007004 vector<cl_device_id> deviceIDs (numDevices);
70017005 for ( size_type deviceIndex = 0 ; deviceIndex < numDevices; ++deviceIndex ) {
@@ -7004,8 +7008,8 @@ class Program : public detail::Wrapper<cl_program>
70047008
70057009 object_ = CL_ (clCreateProgramWithBuiltInKernels)(
70067010 context (),
7007- (cl_uint) devices .size (),
7008- deviceIDs.data (),
7011+ (cl_uint)deviceIDs .size (),
7012+ deviceIDs.empty () ? nullptr : deviceIDs. data (),
70097013 kernelNames.c_str (),
70107014 &error);
70117015
@@ -7058,9 +7062,8 @@ class Program : public detail::Wrapper<cl_program>
70587062
70597063 cl_int buildError = CL_ (clBuildProgram)(
70607064 object_,
7061- (cl_uint)
7062- devices.size (),
7063- deviceIDs.data (),
7065+ (cl_uint)deviceIDs.size (),
7066+ deviceIDs.empty () ? nullptr : deviceIDs.data (),
70647067 options,
70657068 notifyFptr,
70667069 data);
@@ -7168,18 +7171,20 @@ class Program : public detail::Wrapper<cl_program>
71687171 {
71697172 static_assert (sizeof (cl::Program) == sizeof (cl_program),
71707173 " Size of cl::Program must be equal to size of cl_program" );
7174+
71717175 vector<const char *> headerIncludeNamesCStr;
71727176 for (const string& name: headerIncludeNames) {
71737177 headerIncludeNamesCStr.push_back (name.c_str ());
71747178 }
7179+
71757180 cl_int error = CL_ (clCompileProgram)(
71767181 object_,
71777182 0 ,
71787183 nullptr ,
71797184 options,
71807185 static_cast <cl_uint>(inputHeaders.size ()),
7181- reinterpret_cast <const cl_program*>(inputHeaders.data ()),
7182- reinterpret_cast <const char **>(headerIncludeNamesCStr.data ()),
7186+ reinterpret_cast <const cl_program*>(inputHeaders.empty () ? nullptr : inputHeaders. data ()),
7187+ reinterpret_cast <const char **>(headerIncludeNamesCStr.empty () ? nullptr : headerIncludeNamesCStr. data ()),
71837188 notifyFptr,
71847189 data);
71857190 return detail::buildErrHandler (error, __COMPILE_PROGRAM_ERR, getBuildInfo<CL_PROGRAM_BUILD_LOG>());
@@ -7198,30 +7203,33 @@ class Program : public detail::Wrapper<cl_program>
71987203
71997204 cl_int compile (
72007205 const char * options,
7201- const vector<Device>& deviceList ,
7206+ const vector<Device>& devices ,
72027207 const vector<Program>& inputHeaders = vector<Program>(),
72037208 const vector<string>& headerIncludeNames = vector<string>(),
72047209 void (CL_CALLBACK * notifyFptr)(cl_program, void *) = nullptr,
72057210 void* data = nullptr) const
72067211 {
72077212 static_assert (sizeof (cl::Program) == sizeof (cl_program),
72087213 " Size of cl::Program must be equal to size of cl_program" );
7214+
7215+ vector<cl_device_id> deviceIDs;
7216+ for (const Device& device: devices) {
7217+ deviceIDs.push_back (device ());
7218+ }
7219+
72097220 vector<const char *> headerIncludeNamesCStr;
72107221 for (const string& name: headerIncludeNames) {
72117222 headerIncludeNamesCStr.push_back (name.c_str ());
72127223 }
7213- vector<cl_device_id> deviceIDList;
7214- for (const Device& device: deviceList) {
7215- deviceIDList.push_back (device ());
7216- }
7224+
72177225 cl_int error = CL_ (clCompileProgram)(
72187226 object_,
7219- static_cast <cl_uint>(deviceList .size ()),
7220- reinterpret_cast <const cl_device_id*>(deviceIDList .data ()),
7227+ static_cast <cl_uint>(deviceIDs .size ()),
7228+ reinterpret_cast <const cl_device_id*>(deviceIDs. empty () ? nullptr : deviceIDs .data ()),
72217229 options,
72227230 static_cast <cl_uint>(inputHeaders.size ()),
7223- reinterpret_cast <const cl_program*>(inputHeaders.data ()),
7224- reinterpret_cast <const char **>(headerIncludeNamesCStr.data ()),
7231+ reinterpret_cast <const cl_program*>(inputHeaders.empty () ? nullptr : inputHeaders. data ()),
7232+ reinterpret_cast <const char **>(headerIncludeNamesCStr.empty () ? nullptr : headerIncludeNamesCStr. data ()),
72257233 notifyFptr,
72267234 data);
72277235 return detail::buildErrHandler (error, __COMPILE_PROGRAM_ERR, getBuildInfo<CL_PROGRAM_BUILD_LOG>());
@@ -7325,9 +7333,11 @@ class Program : public detail::Wrapper<cl_program>
73257333 }
73267334
73277335 vector<cl_kernel> value (numKernels);
7328-
73297336 err = CL_ (clCreateKernelsInProgram)(
7330- object_, numKernels, value.data (), nullptr );
7337+ object_,
7338+ numKernels,
7339+ value.empty () ? nullptr : value.data (),
7340+ nullptr );
73317341 if (err != CL_SUCCESS) {
73327342 return detail::errHandler (err, __CREATE_KERNELS_IN_PROGRAM_ERR);
73337343 }
@@ -7478,7 +7488,7 @@ inline Program linkProgram(
74787488 nullptr ,
74797489 options,
74807490 static_cast <cl_uint>(inputPrograms.size ()),
7481- reinterpret_cast <const cl_program *>(inputPrograms.data ()),
7491+ reinterpret_cast <const cl_program *>(inputPrograms.empty () ? nullptr : inputPrograms. data ()),
74827492 notifyFptr,
74837493 data,
74847494 &error_local);
@@ -8921,12 +8931,13 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
89218931 return detail::errHandler (CL_INVALID_VALUE,__ENQUEUE_COPY_SVM_ERR);
89228932 }
89238933 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMemcpy)(
8924- object_, blocking, static_cast <void *>(dst_container.data ()),
8925- static_cast <const void *>(src_container.data ()),
8934+ object_, blocking,
8935+ dst_container.empty () ? nullptr : dst_container.data (),
8936+ src_container.empty () ? nullptr : src_container.data (),
89268937 dst_container.size () * sizeof (T),
89278938 (events != nullptr ) ? (cl_uint) events->size () : 0 ,
89288939 (events != nullptr && events->size () > 0 ) ? (const cl_event *) &events->front () : nullptr ,
8929- (event != NULL ) ? &tmp : nullptr ), __ENQUEUE_COPY_SVM_ERR);
8940+ (event != nullptr ) ? &tmp : nullptr ), __ENQUEUE_COPY_SVM_ERR);
89308941
89318942 if (event != nullptr && err == CL_SUCCESS)
89328943 *event = tmp;
@@ -8997,8 +9008,11 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
89979008 {
89989009 cl_event tmp;
89999010 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMemFill)(
9000- object_, static_cast <void *>(container.data ()), static_cast <void *>(&pattern),
9001- sizeof (PatternType), container.size () * sizeof (T),
9011+ object_,
9012+ container.empty () ? nullptr : container.data (),
9013+ &pattern,
9014+ sizeof (PatternType),
9015+ container.size () * sizeof (T),
90029016 (events != nullptr ) ? (cl_uint) events->size () : 0 ,
90039017 (events != nullptr && events->size () > 0 ) ? (const cl_event *) &events->front () : nullptr ,
90049018 (event != nullptr ) ? &tmp : NULL ), __ENQUEUE_FILL_SVM_ERR);
@@ -9078,7 +9092,9 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
90789092 {
90799093 cl_event tmp;
90809094 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMap)(
9081- object_, blocking, flags, static_cast <void *>(container.data ()), container.size ()*sizeof (T),
9095+ object_, blocking, flags,
9096+ container.empty () ? nullptr : container.data (),
9097+ container.size () * sizeof (T),
90829098 (events != nullptr ) ? (cl_uint)events->size () : 0 ,
90839099 (events != nullptr && events->size () > 0 ) ? (const cl_event*)&events->front () : nullptr ,
90849100 (event != nullptr ) ? &tmp : nullptr ),
@@ -9177,7 +9193,8 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
91779193 cl_event tmp;
91789194 cl_int err = detail::errHandler (
91799195 CL_ (clEnqueueSVMUnmap)(
9180- object_, static_cast <void *>(container.data ()),
9196+ object_,
9197+ container.empty () ? nullptr : container.data (),
91819198 (events != nullptr ) ? (cl_uint)events->size () : 0 ,
91829199 (events != nullptr && events->size () > 0 ) ? (const cl_event*)&events->front () : nullptr ,
91839200 (event != nullptr ) ? &tmp : nullptr ),
@@ -9274,7 +9291,7 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
92749291 CL_ (clEnqueueMigrateMemObjects)(
92759292 object_,
92769293 (cl_uint)memObjects.size (),
9277- localMemObjects.data (),
9294+ localMemObjects.empty () ? nullptr : localMemObjects. data (),
92789295 flags,
92799296 (events != nullptr ) ? (cl_uint) events->size () : 0 ,
92809297 (events != nullptr && events->size () > 0 ) ? (const cl_event*) &events->front () : nullptr ,
@@ -9306,8 +9323,9 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
93069323 cl_event tmp;
93079324 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMigrateMem)(
93089325 object_,
9309- svmRawPointers.size (), static_cast <void **>(svmRawPointers.data ()),
9310- sizes.data (), // array of sizes not passed
9326+ svmRawPointers.size (),
9327+ svmRawPointers.empty () ? nullptr : svmRawPointers.data (),
9328+ sizes.empty () ? nullptr : sizes.data (),
93119329 flags,
93129330 (events != nullptr ) ? (cl_uint)events->size () : 0 ,
93139331 (events != nullptr && events->size () > 0 ) ? (const cl_event*)&events->front () : nullptr ,
@@ -9676,7 +9694,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)(
96769694 err = pfn_clEnqueueAcquireExternalMemObjectsKHR (
96779695 object_,
96789696 static_cast <cl_uint>(mem_objects.size ()),
9679- (mem_objects. size () > 0 ) ? reinterpret_cast <const cl_mem *>(mem_objects.data ()) : nullptr ,
9697+ reinterpret_cast <const cl_mem *>(mem_objects.empty () ? nullptr : mem_objects. data ()) ,
96809698 (events_wait != nullptr ) ? static_cast <cl_uint>(events_wait->size ()) : 0 ,
96819699 (events_wait != nullptr && events_wait->size () > 0 ) ? reinterpret_cast <const cl_event*>(events_wait->data ()) : nullptr ,
96829700 &tmp);
@@ -9705,7 +9723,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)(
97059723 err = pfn_clEnqueueReleaseExternalMemObjectsKHR (
97069724 object_,
97079725 static_cast <cl_uint>(mem_objects.size ()),
9708- (mem_objects. size () > 0 ) ? reinterpret_cast <const cl_mem *>(mem_objects.data ()) : nullptr ,
9726+ reinterpret_cast <const cl_mem *>(mem_objects.empty () ? nullptr : mem_objects. data ()) ,
97099727 (events_wait != nullptr ) ? static_cast <cl_uint>(events_wait->size ()) : 0 ,
97109728 (events_wait != nullptr && events_wait->size () > 0 ) ? reinterpret_cast <const cl_event*>(events_wait->data ()) : nullptr ,
97119729 &tmp);
@@ -11337,7 +11355,7 @@ class Semaphore : public detail::Wrapper<cl_semaphore_khr>
1133711355 {
1133811356 object_ = pfn_clCreateSemaphoreWithPropertiesKHR (
1133911357 context (),
11340- sema_props.data (),
11358+ sema_props.empty () ? nullptr : sema_props. data (),
1134111359 &error);
1134211360 }
1134311361
@@ -11931,7 +11949,7 @@ class CommandBufferKhr : public detail::Wrapper<cl_command_buffer_khr>
1193111949 nullptr , // Properties
1193211950#endif
1193311951 image (),
11934- static_cast < void *>( &fillColor) ,
11952+ &fillColor,
1193511953 origin.data (),
1193611954 region.data (),
1193711955 (sync_points_vec != nullptr ) ? (cl_uint) sync_points_vec->size () : 0 ,
@@ -12010,8 +12028,11 @@ class CommandBufferKhr : public detail::Wrapper<cl_command_buffer_khr>
1201012028 __UPDATE_MUTABLE_COMMANDS_KHR_ERR);
1201112029 }
1201212030 return detail::errHandler (
12013- pfn_clUpdateMutableCommandsKHR (object_, static_cast <cl_uint>(configs.size ()),
12014- config_types.data (), configs.data ()),
12031+ pfn_clUpdateMutableCommandsKHR (
12032+ object_,
12033+ static_cast <cl_uint>(configs.size ()),
12034+ config_types.empty () ? nullptr : config_types.data (),
12035+ configs.empty () ? nullptr : configs.data ()),
1201512036 __UPDATE_MUTABLE_COMMANDS_KHR_ERR);
1201612037 }
1201712038#endif /* CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_VERSION */
0 commit comments