[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