diff options
author | Junyan He <junyan.he@linux.intel.com> | 2015-07-06 15:14:00 +0800 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2015-07-06 22:40:07 +0800 |
commit | d99820c49908aaa642205feccc79b734fbb2f9a1 (patch) | |
tree | 3b238c58c11526bcfb5cfcc77059f2d9976686b0 /src | |
parent | a283844559c5451dc2a002e18c693dd49a5faf4b (diff) |
runtime: Add cl device's standalone extension.
The cl device may have different extensions from the
platform. We will add some items based on the platform
extensions.
Signed-off-by: Junyan He <junyan.he@linux.intel.com>
Reviewed-by: "Yang, Rong R" <rong.r.yang@intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/cl_device_id.c | 18 | ||||
-rw-r--r-- | src/cl_device_id.h | 2 | ||||
-rw-r--r-- | src/cl_extensions.c | 24 | ||||
-rw-r--r-- | src/cl_extensions.h | 2 |
4 files changed, 24 insertions, 22 deletions
diff --git a/src/cl_device_id.c b/src/cl_device_id.c index 79566460..f995550f 100644 --- a/src/cl_device_id.c +++ b/src/cl_device_id.c @@ -399,10 +399,10 @@ baytrail_t_device_break: DECL_INFO_STRING(brw_gt1_break, intel_brw_gt1_device, name, "Intel(R) HD Graphics BroadWell ULX GT1"); brw_gt1_break: /* For Gen8 and later, half float is suppported and we will enable cl_khr_fp16. */ - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_brw_gt1_device.vendor_id = device_id; intel_brw_gt1_device.platform = cl_get_platform_default(); ret = &intel_brw_gt1_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_BROADWLL_M_GT2: @@ -416,10 +416,10 @@ brw_gt1_break: case PCI_CHIP_BROADWLL_U_GT2: DECL_INFO_STRING(brw_gt2_break, intel_brw_gt2_device, name, "Intel(R) HD Graphics BroadWell ULX GT2"); brw_gt2_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_brw_gt2_device.vendor_id = device_id; intel_brw_gt2_device.platform = cl_get_platform_default(); ret = &intel_brw_gt2_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_BROADWLL_M_GT3: @@ -433,10 +433,10 @@ brw_gt2_break: case PCI_CHIP_BROADWLL_U_GT3: DECL_INFO_STRING(brw_gt3_break, intel_brw_gt3_device, name, "Intel(R) HD Graphics BroadWell ULX GT2"); brw_gt3_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_brw_gt3_device.vendor_id = device_id; intel_brw_gt3_device.platform = cl_get_platform_default(); ret = &intel_brw_gt3_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_CHV_0: @@ -445,10 +445,10 @@ brw_gt3_break: case PCI_CHIP_CHV_3: DECL_INFO_STRING(chv_break, intel_chv_device, name, "Intel(R) HD Graphics Cherryview"); chv_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_chv_device.vendor_id = device_id; intel_chv_device.platform = cl_get_platform_default(); ret = &intel_chv_device; + cl_intel_platform_enable_fp16_extension(ret); break; @@ -463,10 +463,10 @@ chv_break: case PCI_CHIP_SKYLAKE_SRV_GT1: DECL_INFO_STRING(skl_gt1_break, intel_skl_gt1_device, name, "Intel(R) HD Graphics Skylake Server GT1"); skl_gt1_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_skl_gt1_device.vendor_id = device_id; intel_skl_gt1_device.platform = cl_get_platform_default(); ret = &intel_skl_gt1_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_SKYLAKE_ULT_GT2: @@ -482,10 +482,10 @@ skl_gt1_break: case PCI_CHIP_SKYLAKE_SRV_GT2: DECL_INFO_STRING(skl_gt2_break, intel_skl_gt2_device, name, "Intel(R) HD Graphics Skylake Server GT2"); skl_gt2_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_skl_gt2_device.vendor_id = device_id; intel_skl_gt2_device.platform = cl_get_platform_default(); ret = &intel_skl_gt2_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_SKYLAKE_ULT_GT3: @@ -495,10 +495,10 @@ skl_gt2_break: case PCI_CHIP_SKYLAKE_SRV_GT3: DECL_INFO_STRING(skl_gt3_break, intel_skl_gt3_device, name, "Intel(R) HD Graphics Skylake Server GT3"); skl_gt3_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_skl_gt3_device.vendor_id = device_id; intel_skl_gt3_device.platform = cl_get_platform_default(); ret = &intel_skl_gt3_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_SKYLAKE_HALO_GT4: @@ -506,10 +506,10 @@ skl_gt3_break: case PCI_CHIP_SKYLAKE_SRV_GT4: DECL_INFO_STRING(skl_gt4_break, intel_skl_gt4_device, name, "Intel(R) HD Graphics Skylake Server GT4"); skl_gt4_break: - cl_intel_platform_enable_fp16_extension(cl_get_platform_default()); intel_skl_gt4_device.vendor_id = device_id; intel_skl_gt4_device.platform = cl_get_platform_default(); ret = &intel_skl_gt4_device; + cl_intel_platform_enable_fp16_extension(ret); break; case PCI_CHIP_SANDYBRIDGE_BRIDGE: @@ -667,8 +667,6 @@ cl_get_device_ids(cl_platform_id platform, *num_devices = 1; if (devices) { *devices = device; - (*devices)->extensions = cl_get_platform_default()->extensions; - (*devices)->extensions_sz = cl_get_platform_default()->extensions_sz; } return CL_SUCCESS; } diff --git a/src/cl_device_id.h b/src/cl_device_id.h index 2a356286..6daa31cb 100644 --- a/src/cl_device_id.h +++ b/src/cl_device_id.h @@ -94,7 +94,7 @@ struct _cl_device_id { const char *version; const char *profile; const char *opencl_c_version; - const char *extensions; + const char extensions[256]; const char *driver_version; const char *built_in_kernels; size_t name_sz; diff --git a/src/cl_extensions.c b/src/cl_extensions.c index 90442843..a34aacaa 100644 --- a/src/cl_extensions.c +++ b/src/cl_extensions.c @@ -5,6 +5,7 @@ #endif #include "cl_platform_id.h" +#include "cl_device_id.h" #include "cl_internals.h" #include "CL/cl.h" #include "cl_utils.h" @@ -72,7 +73,7 @@ process_extension_str(cl_extensions_t *extensions) int str_offset = 0; int id; - extensions->ext_str[str_max-1] = '\0'; + memset(extensions->ext_str, 0, sizeof(extensions->ext_str)); for(id = 0; id < cl_khr_extension_id_max; id++) { @@ -95,21 +96,24 @@ process_extension_str(cl_extensions_t *extensions) LOCAL void -cl_intel_platform_enable_fp16_extension(cl_platform_id intel_platform) +cl_intel_platform_enable_fp16_extension(cl_device_id device) { - cl_extensions_t *extensions = &intel_platform_extensions; + cl_extensions_t new_ext; + cl_platform_id pf = device->platform; int id; + assert(pf); - for(id = OPT1_EXT_START_ID; id <= OPT1_EXT_END_ID; id++) - { + memcpy(&new_ext, pf->internal_extensions, sizeof(new_ext)); + + for(id = OPT1_EXT_START_ID; id <= OPT1_EXT_END_ID; id++) { if (id == EXT_ID(khr_fp16)) - extensions->extensions[id].base.ext_enabled = 1; + new_ext.extensions[id].base.ext_enabled = 1; } - process_extension_str(extensions); - intel_platform->internal_extensions = &intel_platform_extensions; - intel_platform->extensions = intel_platform_extensions.ext_str; - intel_platform->extensions_sz = strlen(intel_platform->extensions) + 1; + process_extension_str(&new_ext); + + memcpy((char*)device->extensions, new_ext.ext_str, sizeof(device->extensions)); + device->extensions_sz = strlen(new_ext.ext_str) + 1; } LOCAL void diff --git a/src/cl_extensions.h b/src/cl_extensions.h index b1154a2b..426986c1 100644 --- a/src/cl_extensions.h +++ b/src/cl_extensions.h @@ -95,4 +95,4 @@ typedef struct cl_extensions { extern void cl_intel_platform_extension_init(cl_platform_id intel_platform); extern void -cl_intel_platform_enable_fp16_extension(cl_platform_id intel_platform); +cl_intel_platform_enable_fp16_extension(cl_device_id device); |