[Mesa-dev] [PATCH 5/5] i965/chv: Display proper branding

Jordan Justen jordan.l.justen at intel.com
Thu Mar 10 06:50:05 UTC 2016


Series Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

(the version on your branch)

On 2016-03-07 17:39:28, Ben Widawsky wrote:
> "Braswell" is a Cherryview based *thing*. It unfortunately requires extra
> information to determine its marketing name. Unlike all previous products, and
> hopefully all future ones, there is no unique 1:1 mapping of PCI device ID to
> brand string.
> 
> I put up a fight about adding any complexity to our GL renderer string code for
> a very long time. However, a wise man made a comment to me that I couldn't argue
> with: if a user installs Windows on their hardware, the brand string should be
> the same as what we display in Linux. The Windows driver apparently does this
> check, so we should too.
> 
> Note that I did manage to find a good use for this info anyway in the computer
> shader thread counts.
> 
> Cc: Kaveh Nasri <kaveh.nasri at intel.com>
> Signed-off-by: Ben Widawsky <benjamin.widawsky at intel.com>
> ---
>  include/pci_ids/i965_pci_ids.h           |  4 ++--
>  src/mesa/drivers/dri/i965/brw_context.c  | 33 +++++++++++++++++++++++++++++---
>  src/mesa/drivers/dri/i965/brw_context.h  |  3 ++-
>  src/mesa/drivers/dri/i965/intel_screen.c |  2 +-
>  4 files changed, 35 insertions(+), 7 deletions(-)
> 
> diff --git a/include/pci_ids/i965_pci_ids.h b/include/pci_ids/i965_pci_ids.h
> index bdfbefe..d783e39 100644
> --- a/include/pci_ids/i965_pci_ids.h
> +++ b/include/pci_ids/i965_pci_ids.h
> @@ -156,8 +156,8 @@ CHIPSET(0x5932, kbl_gt4, "Intel(R) Kabylake GT4")
>  CHIPSET(0x593A, kbl_gt4, "Intel(R) Kabylake GT4")
>  CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4")
>  CHIPSET(0x593D, kbl_gt4, "Intel(R) Kabylake GT4")
> -CHIPSET(0x22B0, chv,     "Intel(R) HD Graphics (Cherryview)")
> -CHIPSET(0x22B1, chv,     "Intel(R) HD Graphics (Cherryview)")
> +CHIPSET(0x22B0, chv,     "Intel(R) HD Graphics (Cherrytrail)")
> +CHIPSET(0x22B1, chv,     "Intel(R) HD Graphics XXX (Braswell)") /* Overriden in brw_get_renderer_string */
>  CHIPSET(0x22B2, chv,     "Intel(R) HD Graphics (Cherryview)")
>  CHIPSET(0x22B3, chv,     "Intel(R) HD Graphics (Cherryview)")
>  CHIPSET(0x0A84, bxt,     "Intel(R) HD Graphics (Broxton)")
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index df0f6bb..f57184f 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -77,13 +77,27 @@
>  
>  const char *const brw_vendor_string = "Intel Open Source Technology Center";
>  
> +static const char *
> +get_bsw_model(const struct intel_screen *intelScreen)
> +{
> +   switch (intelScreen->eu_total) {
> +   case 16:
> +      return "405";
> +   case 12:
> +      return "400";
> +   default:
> +      return "   ";
> +   }
> +}
> +
>  const char *
> -brw_get_renderer_string(unsigned deviceID)
> +brw_get_renderer_string(const struct intel_screen *intelScreen)
>  {
>     const char *chipset;
>     static char buffer[128];
> +   char *bsw = NULL;
>  
> -   switch (deviceID) {
> +   switch (intelScreen->deviceID) {
>  #undef CHIPSET
>  #define CHIPSET(id, symbol, str) case id: chipset = str; break;
>  #include "pci_ids/i965_pci_ids.h"
> @@ -92,7 +106,20 @@ brw_get_renderer_string(unsigned deviceID)
>        break;
>     }
>  
> +   /* Braswell branding is funny, so we have to fix it up here */
> +   if (intelScreen->deviceID == 0x22B1) {
> +      char *needle;
> +
> +      bsw = strdup(chipset);
> +      needle = strstr(bsw, "XXX");
> +      if (needle) {
> +         strncpy(needle, get_bsw_model(intelScreen), strlen("XXX"));
> +         chipset = bsw;
> +      }
> +   }
> +
>     (void) driGetRendererString(buffer, chipset, 0);
> +   free(bsw);
>     return buffer;
>  }
>  
> @@ -107,7 +134,7 @@ intel_get_string(struct gl_context * ctx, GLenum name)
>  
>     case GL_RENDERER:
>        return
> -         (GLubyte *) brw_get_renderer_string(brw->intelScreen->deviceID);
> +         (GLubyte *) brw_get_renderer_string(brw->intelScreen);
>  
>     default:
>        return NULL;
> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
> index 88f0d49..a953745 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.h
> +++ b/src/mesa/drivers/dri/i965/brw_context.h
> @@ -1341,7 +1341,8 @@ extern void intelInitClearFuncs(struct dd_function_table *functions);
>   */
>  extern const char *const brw_vendor_string;
>  
> -extern const char *brw_get_renderer_string(unsigned deviceID);
> +extern const char *
> +brw_get_renderer_string(const struct intel_screen *intelScreen);
>  
>  enum {
>     DRI_CONF_BO_REUSE_DISABLED,
> diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
> index 343b497..97aa877 100644
> --- a/src/mesa/drivers/dri/i965/intel_screen.c
> +++ b/src/mesa/drivers/dri/i965/intel_screen.c
> @@ -891,7 +891,7 @@ brw_query_renderer_string(__DRIscreen *psp, int param, const char **value)
>        value[0] = brw_vendor_string;
>        return 0;
>     case __DRI2_RENDERER_DEVICE_ID:
> -      value[0] = brw_get_renderer_string(intelScreen->deviceID);
> +      value[0] = brw_get_renderer_string(intelScreen);
>        return 0;
>     default:
>        break;
> -- 
> 2.7.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list