@@ -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
@@ -6753,7 +6755,10 @@ class Program : public detail::Wrapper<cl_program>
67536755 }
67546756
67556757 object_ = CL_ (clCreateProgramWithSource)(
6756- context (), (cl_uint)n, strings.data (), lengths.data (), &error);
6758+ context (), (cl_uint)n,
6759+ strings.empty () ? nullptr : strings.data (),
6760+ lengths.empty () ? nullptr : lengths.data (),
6761+ &error);
67576762
67586763 detail::errHandler (error, __CREATE_PROGRAM_WITH_SOURCE_ERR);
67596764 if (err != nullptr ) {
@@ -6788,7 +6793,10 @@ class Program : public detail::Wrapper<cl_program>
67886793 }
67896794
67906795 object_ = CL_ (clCreateProgramWithSource)(
6791- context (), (cl_uint)n, strings.data (), lengths.data (), &error);
6796+ context (), (cl_uint)n,
6797+ strings.empty () ? nullptr : strings.data (),
6798+ lengths.empty () ? nullptr : lengths.data (),
6799+ &error);
67926800
67936801 detail::errHandler (error, __CREATE_PROGRAM_WITH_SOURCE_ERR);
67946802 if (err != nullptr ) {
@@ -6969,11 +6977,15 @@ class Program : public detail::Wrapper<cl_program>
69696977 }
69706978
69716979 object_ = CL_ (clCreateProgramWithBinary)(
6972- context (), (cl_uint) devices.size (),
6973- deviceIDs.data (),
6974- lengths.data (), images.data (), (binaryStatus != nullptr && numDevices > 0 )
6980+ context (),
6981+ (cl_uint)deviceIDs.size (),
6982+ deviceIDs.empty () ? nullptr : deviceIDs.data (),
6983+ lengths.empty () ? nullptr : lengths.data (),
6984+ images.empty () ? nullptr : images.data (),
6985+ (binaryStatus != nullptr && numDevices > 0 )
69756986 ? &binaryStatus->front ()
6976- : nullptr , &error);
6987+ : nullptr ,
6988+ &error);
69776989
69786990 detail::errHandler (error, __CREATE_PROGRAM_WITH_BINARY_ERR);
69796991 if (err != nullptr ) {
@@ -6995,7 +7007,6 @@ class Program : public detail::Wrapper<cl_program>
69957007 {
69967008 cl_int error;
69977009
6998-
69997010 size_type numDevices = devices.size ();
70007011 vector<cl_device_id> deviceIDs (numDevices);
70017012 for ( size_type deviceIndex = 0 ; deviceIndex < numDevices; ++deviceIndex ) {
@@ -7004,8 +7015,8 @@ class Program : public detail::Wrapper<cl_program>
70047015
70057016 object_ = CL_ (clCreateProgramWithBuiltInKernels)(
70067017 context (),
7007- (cl_uint) devices .size (),
7008- deviceIDs.data (),
7018+ (cl_uint)deviceIDs .size (),
7019+ deviceIDs.empty () ? nullptr : deviceIDs. data (),
70097020 kernelNames.c_str (),
70107021 &error);
70117022
@@ -7058,9 +7069,8 @@ class Program : public detail::Wrapper<cl_program>
70587069
70597070 cl_int buildError = CL_ (clBuildProgram)(
70607071 object_,
7061- (cl_uint)
7062- devices.size (),
7063- deviceIDs.data (),
7072+ (cl_uint)deviceIDs.size (),
7073+ deviceIDs.empty () ? nullptr : deviceIDs.data (),
70647074 options,
70657075 notifyFptr,
70667076 data);
@@ -7168,18 +7178,20 @@ class Program : public detail::Wrapper<cl_program>
71687178 {
71697179 static_assert (sizeof (cl::Program) == sizeof (cl_program),
71707180 " Size of cl::Program must be equal to size of cl_program" );
7181+
71717182 vector<const char *> headerIncludeNamesCStr;
71727183 for (const string& name: headerIncludeNames) {
71737184 headerIncludeNamesCStr.push_back (name.c_str ());
71747185 }
7186+
71757187 cl_int error = CL_ (clCompileProgram)(
71767188 object_,
71777189 0 ,
71787190 nullptr ,
71797191 options,
71807192 static_cast <cl_uint>(inputHeaders.size ()),
7181- reinterpret_cast <const cl_program*>(inputHeaders.data ()),
7182- reinterpret_cast <const char **>(headerIncludeNamesCStr.data ()),
7193+ reinterpret_cast <const cl_program*>(inputHeaders.empty () ? nullptr : inputHeaders. data ()),
7194+ reinterpret_cast <const char **>(headerIncludeNamesCStr.empty () ? nullptr : headerIncludeNamesCStr. data ()),
71837195 notifyFptr,
71847196 data);
71857197 return detail::buildErrHandler (error, __COMPILE_PROGRAM_ERR, getBuildInfo<CL_PROGRAM_BUILD_LOG>());
@@ -7198,30 +7210,33 @@ class Program : public detail::Wrapper<cl_program>
71987210
71997211 cl_int compile (
72007212 const char * options,
7201- const vector<Device>& deviceList ,
7213+ const vector<Device>& devices ,
72027214 const vector<Program>& inputHeaders = vector<Program>(),
72037215 const vector<string>& headerIncludeNames = vector<string>(),
72047216 void (CL_CALLBACK * notifyFptr)(cl_program, void *) = nullptr,
72057217 void* data = nullptr) const
72067218 {
72077219 static_assert (sizeof (cl::Program) == sizeof (cl_program),
72087220 " Size of cl::Program must be equal to size of cl_program" );
7221+
7222+ vector<cl_device_id> deviceIDs;
7223+ for (const Device& device: devices) {
7224+ deviceIDs.push_back (device ());
7225+ }
7226+
72097227 vector<const char *> headerIncludeNamesCStr;
72107228 for (const string& name: headerIncludeNames) {
72117229 headerIncludeNamesCStr.push_back (name.c_str ());
72127230 }
7213- vector<cl_device_id> deviceIDList;
7214- for (const Device& device: deviceList) {
7215- deviceIDList.push_back (device ());
7216- }
7231+
72177232 cl_int error = CL_ (clCompileProgram)(
72187233 object_,
7219- static_cast <cl_uint>(deviceList .size ()),
7220- reinterpret_cast <const cl_device_id*>(deviceIDList .data ()),
7234+ static_cast <cl_uint>(deviceIDs .size ()),
7235+ reinterpret_cast <const cl_device_id*>(deviceIDs. empty () ? nullptr : deviceIDs .data ()),
72217236 options,
72227237 static_cast <cl_uint>(inputHeaders.size ()),
7223- reinterpret_cast <const cl_program*>(inputHeaders.data ()),
7224- reinterpret_cast <const char **>(headerIncludeNamesCStr.data ()),
7238+ reinterpret_cast <const cl_program*>(inputHeaders.empty () ? nullptr : inputHeaders. data ()),
7239+ reinterpret_cast <const char **>(headerIncludeNamesCStr.empty () ? nullptr : headerIncludeNamesCStr. data ()),
72257240 notifyFptr,
72267241 data);
72277242 return detail::buildErrHandler (error, __COMPILE_PROGRAM_ERR, getBuildInfo<CL_PROGRAM_BUILD_LOG>());
@@ -7325,9 +7340,11 @@ class Program : public detail::Wrapper<cl_program>
73257340 }
73267341
73277342 vector<cl_kernel> value (numKernels);
7328-
73297343 err = CL_ (clCreateKernelsInProgram)(
7330- object_, numKernels, value.data (), nullptr );
7344+ object_,
7345+ numKernels,
7346+ value.empty () ? nullptr : value.data (),
7347+ nullptr );
73317348 if (err != CL_SUCCESS) {
73327349 return detail::errHandler (err, __CREATE_KERNELS_IN_PROGRAM_ERR);
73337350 }
@@ -7478,7 +7495,7 @@ inline Program linkProgram(
74787495 nullptr ,
74797496 options,
74807497 static_cast <cl_uint>(inputPrograms.size ()),
7481- reinterpret_cast <const cl_program *>(inputPrograms.data ()),
7498+ reinterpret_cast <const cl_program *>(inputPrograms.empty () ? nullptr : inputPrograms. data ()),
74827499 notifyFptr,
74837500 data,
74847501 &error_local);
@@ -8921,12 +8938,13 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
89218938 return detail::errHandler (CL_INVALID_VALUE,__ENQUEUE_COPY_SVM_ERR);
89228939 }
89238940 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMemcpy)(
8924- object_, blocking, static_cast <void *>(dst_container.data ()),
8925- static_cast <const void *>(src_container.data ()),
8941+ object_, blocking,
8942+ dst_container.empty () ? nullptr : dst_container.data (),
8943+ src_container.empty () ? nullptr : src_container.data (),
89268944 dst_container.size () * sizeof (T),
89278945 (events != nullptr ) ? (cl_uint) events->size () : 0 ,
89288946 (events != nullptr && events->size () > 0 ) ? (const cl_event *) &events->front () : nullptr ,
8929- (event != NULL ) ? &tmp : nullptr ), __ENQUEUE_COPY_SVM_ERR);
8947+ (event != nullptr ) ? &tmp : nullptr ), __ENQUEUE_COPY_SVM_ERR);
89308948
89318949 if (event != nullptr && err == CL_SUCCESS)
89328950 *event = tmp;
@@ -8997,8 +9015,11 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
89979015 {
89989016 cl_event tmp;
89999017 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),
9018+ object_,
9019+ container.empty () ? nullptr : container.data (),
9020+ &pattern,
9021+ sizeof (PatternType),
9022+ container.size () * sizeof (T),
90029023 (events != nullptr ) ? (cl_uint) events->size () : 0 ,
90039024 (events != nullptr && events->size () > 0 ) ? (const cl_event *) &events->front () : nullptr ,
90049025 (event != nullptr ) ? &tmp : NULL ), __ENQUEUE_FILL_SVM_ERR);
@@ -9078,7 +9099,9 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
90789099 {
90799100 cl_event tmp;
90809101 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMap)(
9081- object_, blocking, flags, static_cast <void *>(container.data ()), container.size ()*sizeof (T),
9102+ object_, blocking, flags,
9103+ container.empty () ? nullptr : container.data (),
9104+ container.size () * sizeof (T),
90829105 (events != nullptr ) ? (cl_uint)events->size () : 0 ,
90839106 (events != nullptr && events->size () > 0 ) ? (const cl_event*)&events->front () : nullptr ,
90849107 (event != nullptr ) ? &tmp : nullptr ),
@@ -9177,7 +9200,8 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
91779200 cl_event tmp;
91789201 cl_int err = detail::errHandler (
91799202 CL_ (clEnqueueSVMUnmap)(
9180- object_, static_cast <void *>(container.data ()),
9203+ object_,
9204+ container.empty () ? nullptr : container.data (),
91819205 (events != nullptr ) ? (cl_uint)events->size () : 0 ,
91829206 (events != nullptr && events->size () > 0 ) ? (const cl_event*)&events->front () : nullptr ,
91839207 (event != nullptr ) ? &tmp : nullptr ),
@@ -9274,7 +9298,7 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
92749298 CL_ (clEnqueueMigrateMemObjects)(
92759299 object_,
92769300 (cl_uint)memObjects.size (),
9277- localMemObjects.data (),
9301+ localMemObjects.empty () ? nullptr : localMemObjects. data (),
92789302 flags,
92799303 (events != nullptr ) ? (cl_uint) events->size () : 0 ,
92809304 (events != nullptr && events->size () > 0 ) ? (const cl_event*) &events->front () : nullptr ,
@@ -9306,8 +9330,9 @@ class CommandQueue : public detail::Wrapper<cl_command_queue>
93069330 cl_event tmp;
93079331 cl_int err = detail::errHandler (CL_ (clEnqueueSVMMigrateMem)(
93089332 object_,
9309- svmRawPointers.size (), static_cast <void **>(svmRawPointers.data ()),
9310- sizes.data (), // array of sizes not passed
9333+ svmRawPointers.size (),
9334+ svmRawPointers.empty () ? nullptr : svmRawPointers.data (),
9335+ sizes.empty () ? nullptr : sizes.data (),
93119336 flags,
93129337 (events != nullptr ) ? (cl_uint)events->size () : 0 ,
93139338 (events != nullptr && events->size () > 0 ) ? (const cl_event*)&events->front () : nullptr ,
@@ -9676,7 +9701,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)(
96769701 err = pfn_clEnqueueAcquireExternalMemObjectsKHR (
96779702 object_,
96789703 static_cast <cl_uint>(mem_objects.size ()),
9679- (mem_objects. size () > 0 ) ? reinterpret_cast <const cl_mem *>(mem_objects.data ()) : nullptr ,
9704+ reinterpret_cast <const cl_mem *>(mem_objects.empty () ? nullptr : mem_objects. data ()) ,
96809705 (events_wait != nullptr ) ? static_cast <cl_uint>(events_wait->size ()) : 0 ,
96819706 (events_wait != nullptr && events_wait->size () > 0 ) ? reinterpret_cast <const cl_event*>(events_wait->data ()) : nullptr ,
96829707 &tmp);
@@ -9705,7 +9730,7 @@ typedef CL_API_ENTRY cl_int (CL_API_CALL *PFN_clEnqueueReleaseD3D10ObjectsKHR)(
97059730 err = pfn_clEnqueueReleaseExternalMemObjectsKHR (
97069731 object_,
97079732 static_cast <cl_uint>(mem_objects.size ()),
9708- (mem_objects. size () > 0 ) ? reinterpret_cast <const cl_mem *>(mem_objects.data ()) : nullptr ,
9733+ reinterpret_cast <const cl_mem *>(mem_objects.empty () ? nullptr : mem_objects. data ()) ,
97099734 (events_wait != nullptr ) ? static_cast <cl_uint>(events_wait->size ()) : 0 ,
97109735 (events_wait != nullptr && events_wait->size () > 0 ) ? reinterpret_cast <const cl_event*>(events_wait->data ()) : nullptr ,
97119736 &tmp);
@@ -11337,7 +11362,7 @@ class Semaphore : public detail::Wrapper<cl_semaphore_khr>
1133711362 {
1133811363 object_ = pfn_clCreateSemaphoreWithPropertiesKHR (
1133911364 context (),
11340- sema_props.data (),
11365+ sema_props.empty () ? nullptr : sema_props. data (),
1134111366 &error);
1134211367 }
1134311368
@@ -11931,7 +11956,7 @@ class CommandBufferKhr : public detail::Wrapper<cl_command_buffer_khr>
1193111956 nullptr , // Properties
1193211957#endif
1193311958 image (),
11934- static_cast < void *>( &fillColor) ,
11959+ &fillColor,
1193511960 origin.data (),
1193611961 region.data (),
1193711962 (sync_points_vec != nullptr ) ? (cl_uint) sync_points_vec->size () : 0 ,
@@ -12010,8 +12035,11 @@ class CommandBufferKhr : public detail::Wrapper<cl_command_buffer_khr>
1201012035 __UPDATE_MUTABLE_COMMANDS_KHR_ERR);
1201112036 }
1201212037 return detail::errHandler (
12013- pfn_clUpdateMutableCommandsKHR (object_, static_cast <cl_uint>(configs.size ()),
12014- config_types.data (), configs.data ()),
12038+ pfn_clUpdateMutableCommandsKHR (
12039+ object_,
12040+ static_cast <cl_uint>(configs.size ()),
12041+ config_types.empty () ? nullptr : config_types.data (),
12042+ configs.empty () ? nullptr : configs.data ()),
1201512043 __UPDATE_MUTABLE_COMMANDS_KHR_ERR);
1201612044 }
1201712045#endif /* CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_VERSION */
0 commit comments