Series Reviewed-by: Jordan Justen <[email protected]> (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 <[email protected]> > Signed-off-by: Ben Widawsky <[email protected]> > --- > 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 > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
