Use _icd2_tag fields from https://github.com/KhronosGroup/OpenCL-Headers/pull/280. (#252)
diff --git a/loader/icd.c b/loader/icd.c
index 34f438b..26280eb 100644
--- a/loader/icd.c
+++ b/loader/icd.c
@@ -176,7 +176,7 @@
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 39150ce..1e49622 100644
--- a/loader/icd_dispatch.h
+++ b/loader/icd_dispatch.h
@@ -73,8 +73,17 @@
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) ? \