Runtime: Add default extension for platforms before BDW.

Submitted by junyan.he@inbox.com on July 13, 2015, 3:38 p.m.

Details

Message ID 1436801902-7465-1-git-send-email-junyan.he@inbox.com
State New
Headers show

Not browsing as part of any series.

Commit Message

junyan.he@inbox.com July 13, 2015, 3:38 p.m.
From: Junyan He <junyan.he@linux.intel.com>

Signed-off-by: Junyan He <junyan.he@linux.intel.com>
---
 src/cl_device_id.c  |    4 ++++
 src/cl_extensions.c |    8 ++++++++
 src/cl_extensions.h |    2 ++
 3 files changed, 14 insertions(+)

Patch hide | download patch | download mbox

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);

Comments

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:beignet-bounces@lists.freedesktop.org] On Behalf Of

> junyan.he@inbox.com

> Sent: Monday, July 13, 2015 23:38

> To: beignet@lists.freedesktop.org

> Cc: Junyan He

> Subject: [Beignet] [PATCH] Runtime: Add default extension for platforms

> before BDW.

> 

> From: Junyan He <junyan.he@linux.intel.com>

> 

> Signed-off-by: Junyan He <junyan.he@linux.intel.com>

> ---

>  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

> Beignet@lists.freedesktop.org

> http://lists.freedesktop.org/mailman/listinfo/beignet