@@ -486,61 +486,63 @@ void* CL_API_CALL clSVMAllocWithPropertiesKHR_EMU(
486486 size_t alignment = 0 ;
487487 parseSVMAllocProperties (properties, device, flags, alignment);
488488
489- switch ( typeCapsPlatform[svm_type_index]) {
490- case CL_SVM_TYPE_MACRO_DEVICE_KHR:
489+ const auto caps = typeCapsPlatform[svm_type_index];
490+ if ((caps & CL_SVM_TYPE_MACRO_DEVICE_KHR) == CL_SVM_TYPE_MACRO_DEVICE_KHR) {
491491 return clDeviceMemAllocINTEL (
492492 context,
493493 device,
494494 nullptr ,
495495 size,
496496 alignment,
497497 errcode_ret);
498- case CL_SVM_TYPE_MACRO_HOST_KHR:
498+ }
499+ else if ((caps & CL_SVM_TYPE_MACRO_HOST_KHR) == CL_SVM_TYPE_MACRO_HOST_KHR) {
499500 return clHostMemAllocINTEL (
500501 context,
501502 nullptr ,
502503 size,
503504 alignment,
504505 errcode_ret);
505- case CL_SVM_TYPE_MACRO_SINGLE_DEVICE_SHARED_KHR:
506+ }
507+ else if ((caps & CL_SVM_TYPE_MACRO_SINGLE_DEVICE_SHARED_KHR) == CL_SVM_TYPE_MACRO_SINGLE_DEVICE_SHARED_KHR) {
506508 return clSharedMemAllocINTEL (
507509 context,
508510 device,
509511 nullptr ,
510512 size,
511513 alignment,
512514 errcode_ret);
513- case CL_SVM_TYPE_MACRO_COARSE_GRAIN_BUFFER_KHR: {
514- void * ret = g_pNextDispatch->clSVMAlloc (
515- context,
516- CL_MEM_READ_WRITE,
517- size,
518- alignment);
519- if (errcode_ret) {
520- errcode_ret[0 ] = ret ? CL_SUCCESS : CL_INVALID_VALUE;
521- }
522- return ret;
523- }
524- case CL_SVM_TYPE_MACRO_FINE_GRAIN_BUFFER_KHR: {
525- cl_svm_mem_flags svmFlags = CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER;
515+ }
516+ else if ((caps & CL_SVM_TYPE_MACRO_FINE_GRAIN_BUFFER_KHR) == CL_SVM_TYPE_MACRO_FINE_GRAIN_BUFFER_KHR) {
517+ cl_svm_mem_flags svmFlags = CL_MEM_READ_WRITE | CL_MEM_SVM_FINE_GRAIN_BUFFER;
526518
527- const auto & typeCapsDevice = layerContext.TypeCapsDevice [device];
528- if (typeCapsDevice[svm_type_index] & CL_SVM_CAPABILITY_CONCURRENT_ATOMIC_ACCESS_KHR) {
529- svmFlags |= CL_MEM_SVM_ATOMICS;
530- }
531- void * ret = g_pNextDispatch->clSVMAlloc (
532- context,
533- svmFlags,
534- size,
535- alignment);
536- if (errcode_ret) {
537- errcode_ret[0 ] = ret ? CL_SUCCESS : CL_INVALID_VALUE;
538- }
539- return ret;
519+ const auto & typeCapsDevice = layerContext.TypeCapsDevice [device];
520+ if (typeCapsDevice[svm_type_index] & CL_SVM_CAPABILITY_CONCURRENT_ATOMIC_ACCESS_KHR) {
521+ svmFlags |= CL_MEM_SVM_ATOMICS;
540522 }
541- default :
523+ void * ret = g_pNextDispatch->clSVMAlloc (
524+ context,
525+ svmFlags,
526+ size,
527+ alignment);
528+ if (errcode_ret) {
529+ errcode_ret[0 ] = ret ? CL_SUCCESS : CL_INVALID_VALUE;
530+ }
531+ return ret;
532+ }
533+ else if ((caps & CL_SVM_TYPE_MACRO_COARSE_GRAIN_BUFFER_KHR) == CL_SVM_TYPE_MACRO_COARSE_GRAIN_BUFFER_KHR) {
534+ void * ret = g_pNextDispatch->clSVMAlloc (
535+ context,
536+ CL_MEM_READ_WRITE,
537+ size,
538+ alignment);
539+ if (errcode_ret) {
540+ errcode_ret[0 ] = ret ? CL_SUCCESS : CL_INVALID_VALUE;
541+ }
542+ return ret;
543+ }
544+ else {
542545 assert (0 && " unknown SVM type" );
543- break ;
544546 }
545547
546548 if (errcode_ret) {
0 commit comments