@@ -4387,27 +4387,36 @@ void *CL_API_CALL clSVMAlloc(cl_context context,
4387
4387
return pAlloc;
4388
4388
}
4389
4389
4390
- if (flags == 0 ) {
4391
- flags = CL_MEM_READ_WRITE;
4392
- }
4393
-
4394
- if (!((flags == CL_MEM_READ_WRITE) ||
4395
- (flags == CL_MEM_WRITE_ONLY) ||
4396
- (flags == CL_MEM_READ_ONLY) ||
4397
- (flags == CL_MEM_SVM_FINE_GRAIN_BUFFER) ||
4398
- (flags == (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)) ||
4399
- (flags == (CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER)) ||
4400
- (flags == (CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)) ||
4401
- (flags == (CL_MEM_WRITE_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER)) ||
4402
- (flags == (CL_MEM_WRITE_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)) ||
4403
- (flags == (CL_MEM_READ_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER)) ||
4404
- (flags == (CL_MEM_READ_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)))) {
4405
- TRACING_EXIT (clSVMAlloc, &pAlloc);
4406
- return pAlloc;
4390
+ {
4391
+ // allow CL_MEM_ALLOW_UNRESTRICTED_SIZE_INTEL with every combination
4392
+ cl_svm_mem_flags tempFlags = flags & (~CL_MEM_ALLOW_UNRESTRICTED_SIZE_INTEL);
4393
+
4394
+ if (tempFlags == 0 ) {
4395
+ tempFlags = CL_MEM_READ_WRITE;
4396
+ }
4397
+
4398
+ if (!((tempFlags == CL_MEM_READ_WRITE) ||
4399
+ (tempFlags == CL_MEM_WRITE_ONLY) ||
4400
+ (tempFlags == CL_MEM_READ_ONLY) ||
4401
+ (tempFlags == CL_MEM_SVM_FINE_GRAIN_BUFFER) ||
4402
+ (tempFlags == (CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)) ||
4403
+ (tempFlags == (CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER)) ||
4404
+ (tempFlags == (CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)) ||
4405
+ (tempFlags == (CL_MEM_WRITE_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER)) ||
4406
+ (tempFlags == (CL_MEM_WRITE_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)) ||
4407
+ (tempFlags == (CL_MEM_READ_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER)) ||
4408
+ (tempFlags == (CL_MEM_READ_ONLY | CL_MEM_SVM_FINE_GRAIN_BUFFER | CL_MEM_SVM_ATOMICS)))) {
4409
+
4410
+ TRACING_EXIT (clSVMAlloc, &pAlloc);
4411
+ return pAlloc;
4412
+ }
4407
4413
}
4408
4414
4409
4415
auto pDevice = pContext->getDevice (0 );
4410
- if ((size == 0 ) || (size > pDevice->getSharedDeviceInfo ().maxMemAllocSize )) {
4416
+ bool allowUnrestrictedSize = (flags & CL_MEM_ALLOW_UNRESTRICTED_SIZE_INTEL);
4417
+
4418
+ if ((size == 0 ) ||
4419
+ (!allowUnrestrictedSize && (size > pDevice->getSharedDeviceInfo ().maxMemAllocSize ))) {
4411
4420
TRACING_EXIT (clSVMAlloc, &pAlloc);
4412
4421
return pAlloc;
4413
4422
}
0 commit comments