Memcpy is not safe in cl_intel_platform_get_default_extension, but the device extension array size is same as platform's extension array size, will not overflow (has '\0'). Maybe need a MACRO to define these arrays' size.
Will push it later. > -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > [email protected] > Sent: Monday, July 13, 2015 23:38 > To: [email protected] > Cc: Junyan He > Subject: [Beignet] [PATCH] Runtime: Add default extension for platforms > before BDW. > > From: Junyan He <[email protected]> > > Signed-off-by: Junyan He <[email protected]> > --- > src/cl_device_id.c | 4 ++++ > src/cl_extensions.c | 8 ++++++++ > src/cl_extensions.h | 2 ++ > 3 files changed, 14 insertions(+) > > diff --git a/src/cl_device_id.c b/src/cl_device_id.c index f995550..f772278 > 100644 > --- a/src/cl_device_id.c > +++ b/src/cl_device_id.c > @@ -353,6 +353,7 @@ has_break: > device->vendor_id = device_id; > device->platform = cl_get_platform_default(); > ret = device; > + cl_intel_platform_get_default_extension(ret); > break; > > case PCI_CHIP_IVYBRIDGE_GT1: > @@ -365,6 +366,7 @@ ivb_gt1_break: > intel_ivb_gt1_device.vendor_id = device_id; > intel_ivb_gt1_device.platform = cl_get_platform_default(); > ret = &intel_ivb_gt1_device; > + cl_intel_platform_get_default_extension(ret); > break; > > case PCI_CHIP_IVYBRIDGE_GT2: > @@ -377,6 +379,7 @@ ivb_gt2_break: > intel_ivb_gt2_device.vendor_id = device_id; > intel_ivb_gt2_device.platform = cl_get_platform_default(); > ret = &intel_ivb_gt2_device; > + cl_intel_platform_get_default_extension(ret); > break; > > case PCI_CHIP_BAYTRAIL_T: > @@ -385,6 +388,7 @@ baytrail_t_device_break: > intel_baytrail_t_device.vendor_id = device_id; > intel_baytrail_t_device.platform = cl_get_platform_default(); > ret = &intel_baytrail_t_device; > + cl_intel_platform_get_default_extension(ret); > break; > > case PCI_CHIP_BROADWLL_M_GT1: > diff --git a/src/cl_extensions.c b/src/cl_extensions.c index a34aaca..3eb303f > 100644 > --- a/src/cl_extensions.c > +++ b/src/cl_extensions.c > @@ -94,6 +94,14 @@ process_extension_str(cl_extensions_t *extensions) > } > } > > +LOCAL void > +cl_intel_platform_get_default_extension(cl_device_id device) { > + cl_platform_id pf = device->platform; > + memcpy((char*)device->extensions, > + pf->internal_extensions->ext_str, sizeof(device->extensions)); > + device->extensions_sz = strlen(pf->internal_extensions->ext_str) + 1; > +} > > LOCAL void > cl_intel_platform_enable_fp16_extension(cl_device_id device) diff --git > a/src/cl_extensions.h b/src/cl_extensions.h index 426986c..b4544e2 100644 > --- a/src/cl_extensions.h > +++ b/src/cl_extensions.h > @@ -96,3 +96,5 @@ extern void > cl_intel_platform_extension_init(cl_platform_id intel_platform); extern > void cl_intel_platform_enable_fp16_extension(cl_device_id device); > +extern void > +cl_intel_platform_get_default_extension(cl_device_id device); > -- > 1.7.9.5 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
