From 915e5a8cc306c35dad2f7e3a83c18ce72b16e3d6 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 13 Jul 2021 17:56:11 -0500 Subject: [PATCH] intel/dev: Handle BSW naming issues Braswell, a particular Cherryview variant, is especially strange. We can't even get the chip name from the PCI ID and instead have to look at fusing information to decide if it's a 400 or a 405. Pull that into the common code as well. This fixes BSW naming on ANV and crocus. Reviewed-by: Caio Marcelo de Oliveira Filho Part-of: --- src/intel/dev/intel_device_info.c | 18 ++++++++++++++++++ src/mesa/drivers/dri/i965/brw_context.c | 20 -------------------- src/mesa/drivers/dri/i965/brw_screen.c | 1 - src/mesa/drivers/dri/i965/brw_screen.h | 5 ----- 4 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/intel/dev/intel_device_info.c b/src/intel/dev/intel_device_info.c index 442d7e9..a1d3b2c 100644 --- a/src/intel/dev/intel_device_info.c +++ b/src/intel/dev/intel_device_info.c @@ -1433,6 +1433,24 @@ fixup_chv_device_info(struct intel_device_info *devinfo) assert(max_cs_threads >= devinfo->max_cs_threads); if (max_cs_threads > devinfo->max_cs_threads) devinfo->max_cs_threads = max_cs_threads; + + /* Braswell is even more annoying. Its marketing name isn't determinable + * from the PCI ID and is also dependent on fusing. + */ + if (devinfo->chipset_id != 0x22B1) + return; + + char *bsw_model; + switch (eu_total) { + case 16: bsw_model = "405"; break; + case 12: bsw_model = "400"; break; + default: bsw_model = " "; break; + } + + char *needle = strstr(devinfo->name, "XXX"); + assert(needle); + if (needle) + memcpy(needle, bsw_model, 3); } bool diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 410412a..86478c2 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -89,19 +89,6 @@ const char *const brw_vendor_string = "Intel Open Source Technology Center"; -static const char * -get_bsw_model(const struct brw_screen *screen) -{ - switch (screen->eu_total) { - case 16: - return "405"; - case 12: - return "400"; - default: - return " "; - } -} - const char * brw_get_renderer_string(const struct brw_screen *screen) { @@ -113,13 +100,6 @@ brw_get_renderer_string(const struct brw_screen *screen) snprintf(buf, sizeof(buf), "Mesa DRI %s", name); - /* Braswell branding is funny, so we have to fix it up here */ - if (screen->deviceID == 0x22B1) { - char *needle = strstr(buf, "XXX"); - if (needle) - memcpy(needle, get_bsw_model(screen), 3); - } - return buf; } diff --git a/src/mesa/drivers/dri/i965/brw_screen.c b/src/mesa/drivers/dri/i965/brw_screen.c index 5681111..dad4bc2 100644 --- a/src/mesa/drivers/dri/i965/brw_screen.c +++ b/src/mesa/drivers/dri/i965/brw_screen.c @@ -2618,7 +2618,6 @@ __DRIconfig **brw_init_screen(__DRIscreen *dri_screen) /* GENs prior to 8 do not support EU/Subslice info */ screen->subslice_total = intel_device_info_subslice_total(devinfo); - screen->eu_total = intel_device_info_eu_total(devinfo); /* Gfx7-7.5 kernel requirements / command parser saga: * diff --git a/src/mesa/drivers/dri/i965/brw_screen.h b/src/mesa/drivers/dri/i965/brw_screen.h index ed1b001..cb3d34f 100644 --- a/src/mesa/drivers/dri/i965/brw_screen.h +++ b/src/mesa/drivers/dri/i965/brw_screen.h @@ -113,11 +113,6 @@ struct brw_screen */ int subslice_total; - /** - * Number of EUs reported by the I915_PARAM_EU_TOTAL parameter - */ - int eu_total; - bool mesa_format_supports_texture[MESA_FORMAT_COUNT]; bool mesa_format_supports_render[MESA_FORMAT_COUNT]; enum isl_format mesa_to_isl_render_format[MESA_FORMAT_COUNT]; -- 2.7.4