From 8aa881f6db92076f8f7c2b4e9032d33b7bc89b55 Mon Sep 17 00:00:00 2001 From: Brice Videau Date: Wed, 28 May 2025 16:14:30 -0500 Subject: [PATCH] Use _icd2_tag fields from https://github.com/KhronosGroup/OpenCL-Headers/pull/280. --- loader/icd.c | 2 +- loader/icd_dispatch.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/loader/icd.c b/loader/icd.c index 6cb2b993..91e38583 100644 --- a/loader/icd.c +++ b/loader/icd.c @@ -159,7 +159,7 @@ void khrIcdVendorAdd(const char *libraryName) KHR_ICD_TRACE("found icd 2 object, but platform is missing clIcdSetPlatformDispatchDataKHR\n"); continue; } - if (KHR_ICD2_HAS_TAG(platforms[i]) && !((intptr_t)((platforms[i])->dispatch->clUnloadCompiler) == CL_ICD2_TAG_KHR)) + if (KHR_ICD2_HAS_TAG(platforms[i]) && !KHR_ICD2_HAS_TAG2(platforms[i])) { KHR_ICD_TRACE("found icd 2 object, but platform is missing tag in clUnloadCompiler\n"); continue; diff --git a/loader/icd_dispatch.h b/loader/icd_dispatch.h index 95d47bc6..bee016cf 100644 --- a/loader/icd_dispatch.h +++ b/loader/icd_dispatch.h @@ -73,8 +73,17 @@ struct KHRDisp struct _cl_icd_dispatch dispatch; }; +#if __CL_HAS_ANON_UNION__ +#define KHR_ICD2_HAS_TAG(object) \ +((object)->dispatch->clGetPlatformIDs_icd2_tag == CL_ICD2_TAG_KHR) +#define KHR_ICD2_HAS_TAG2(object) \ +((object)->dispatch->clUnloadCompiler_icd2_tag == CL_ICD2_TAG_KHR) +#else #define KHR_ICD2_HAS_TAG(object) \ (((intptr_t)((object)->dispatch->clGetPlatformIDs)) == CL_ICD2_TAG_KHR) +#define KHR_ICD2_HAS_TAG2(object) \ +(((intptr_t)((object)->dispatch->clUnloadCompiler)) == CL_ICD2_TAG_KHR) +#endif #define KHR_ICD2_DISPATCH(object) \ (KHR_ICD2_HAS_TAG(object) ? \