summaryrefslogtreecommitdiff
path: root/src/cl_extensions.c
diff options
context:
space:
mode:
authorSimon Richter <Simon.Richter@hogyros.de>2013-04-03 20:32:45 +0200
committerZhigang Gong <zhigang.gong@linux.intel.com>2013-04-18 11:21:01 +0800
commit0118a372252180fb6b8c597dd0874fb31b477435 (patch)
treefac60e7178e2948bf4d8c2aff8e906ff18b9cc8e /src/cl_extensions.c
parentcb618258d42fbde26bcb5f4437e2ccec1db4003f (diff)
Implement KHR ICD extension
This adds a pointer to the dispatch table at the beginning of every object of type - cl_command_queue - cl_context - cl_device_id - cl_event - cl_kernel - cl_mem - cl_platform_id - cl_program - cl_sampler as required by the ICD specification. The layout of the dispatch table comes from the OpenCL ICD loader by Brice Videau <brice.videau@imag.fr> and Vincent Danjean <Vincent.Danjean@ens-lyon.org>. To avoid dispatch table entries being overwritten with the ICD loader's implementations of the CL functions (as would be the proper behaviour for the ELF loader), the -Bsymbolic option is given to the linker. Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Diffstat (limited to 'src/cl_extensions.c')
-rw-r--r--src/cl_extensions.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/cl_extensions.c b/src/cl_extensions.c
index 7d1031fb..052b5897 100644
--- a/src/cl_extensions.c
+++ b/src/cl_extensions.c
@@ -31,6 +31,14 @@ void check_basic_extension(cl_extensions_t *extensions)
extensions->extensions[id].base.ext_enabled = 1;
}
+void check_opt1_extension(cl_extensions_t *extensions)
+{
+ int id;
+ for(id = OPT1_EXT_START_ID; id <= OPT1_EXT_END_ID; id++)
+ if (id == EXT_ID(khr_icd))
+ extensions->extensions[id].base.ext_enabled = 1;
+}
+
void
check_gl_extension(cl_extensions_t *extensions) {
#ifdef HAS_EGL
@@ -101,6 +109,7 @@ cl_intel_platform_extension_init(cl_platform_id intel_platform)
return;
}
check_basic_extension(&intel_extensions);
+ check_opt1_extension(&intel_extensions);
check_gl_extension(&intel_extensions);
check_intel_extension(&intel_extensions);
process_extension_str(&intel_extensions);