From cfbde3282d9b881a8cb09dc7a9c2b25b69872e32 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Fri, 8 Mar 2019 16:59:44 -0800 Subject: [PATCH] pci_id_driver_map: Support preferring iris over i965 This adds the ability for intel devices that: * Only load on i965 * Only load on iris * First attempt i965, and try iris next * First attempt iris, and try i965 next Signed-off-by: Jordan Justen Reviewed-by: Kenneth Graunke --- include/pci_ids/i965_pci_ids.h | 18 +++++++++++++++++- src/loader/pci_id_driver_map.h | 17 ++++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/include/pci_ids/i965_pci_ids.h b/include/pci_ids/i965_pci_ids.h index 646df447bd7..7d1d051e4e1 100644 --- a/include/pci_ids/i965_pci_ids.h +++ b/include/pci_ids/i965_pci_ids.h @@ -1,4 +1,11 @@ -#ifndef IRIS +/* + * IRIS not defined: include all devices supported by i965 or iris + * IRIS == 0: devices where i965 is supported + * IRIS == 1: devices where iris is supported, and will be tried before i965 + * IRIS == 2: devices where iris is supported, and will be tried after i965 + */ +#if !defined(IRIS) || IRIS == 0 +/* Only try to load i965. Do not attempt iris. */ CHIPSET(0x29A2, i965, "Intel(R) 965G") CHIPSET(0x2992, i965, "Intel(R) 965Q") CHIPSET(0x2982, i965, "Intel(R) 965G") @@ -97,6 +104,8 @@ CHIPSET(0x22B1, chv, "Intel(R) HD Graphics XXX (Braswell)") /* Overridden in CHIPSET(0x22B2, chv, "Intel(R) HD Graphics (Cherryview)") CHIPSET(0x22B3, chv, "Intel(R) HD Graphics (Cherryview)") #endif +#if !defined(IRIS) || IRIS == 0 || IRIS == 2 +/* First try to load i965, then try iris */ CHIPSET(0x1602, bdw_gt1, "Intel(R) Broadwell GT1") CHIPSET(0x1606, bdw_gt1, "Intel(R) Broadwell GT1") CHIPSET(0x160A, bdw_gt1, "Intel(R) Broadwell GT1") @@ -239,3 +248,10 @@ CHIPSET(0x4500, ehl_4x8, "Intel(R) HD Graphics (Elkhart Lake 4x8)") CHIPSET(0x4571, ehl_4x8, "Intel(R) HD Graphics (Elkhart Lake 4x8)") CHIPSET(0x4551, ehl_4x4, "Intel(R) HD Graphics (Elkhart Lake 4x4)") CHIPSET(0x4541, ehl_2x4, "Intel(R) HD Graphics (Elkhart Lake 2x4)") +#endif +#if !defined(IRIS) || IRIS == 0 || IRIS == 1 +/* First try to load iris, then try i965 */ +#endif +#if !defined(IRIS) || IRIS == 1 +/* Only try to load iris. Do not attempt i965. */ +#endif diff --git a/src/loader/pci_id_driver_map.h b/src/loader/pci_id_driver_map.h index 99fe4ad2161..2909f69f24f 100644 --- a/src/loader/pci_id_driver_map.h +++ b/src/loader/pci_id_driver_map.h @@ -19,13 +19,23 @@ static const int i915_chip_ids[] = { static const int i965_chip_ids[] = { #define CHIPSET(chip, family, name) chip, +#define IRIS 0 /* all i965 devices */ #include "pci_ids/i965_pci_ids.h" +#undef IRIS +#undef CHIPSET +}; + +static const int iris_chip_ids_1[] = { +#define CHIPSET(chip, family, name) chip, +#define IRIS 1 /* iris devices to try before i965 */ +#include "pci_ids/i965_pci_ids.h" +#undef IRIS #undef CHIPSET }; -static const int iris_chip_ids[] = { +static const int iris_chip_ids_2[] = { #define CHIPSET(chip, family, name) chip, -#define IRIS 1 +#define IRIS 2 /* iris devices to try after i965 */ #include "pci_ids/i965_pci_ids.h" #undef IRIS #undef CHIPSET @@ -83,8 +93,9 @@ static const struct { int (*predicate)(int fd); } driver_map[] = { { 0x8086, "i915", i915_chip_ids, ARRAY_SIZE(i915_chip_ids) }, + { 0x8086, "iris", iris_chip_ids_1, ARRAY_SIZE(iris_chip_ids_1) }, { 0x8086, "i965", i965_chip_ids, ARRAY_SIZE(i965_chip_ids) }, - { 0x8086, "iris", iris_chip_ids, ARRAY_SIZE(iris_chip_ids) }, + { 0x8086, "iris", iris_chip_ids_2, ARRAY_SIZE(iris_chip_ids_2) }, { 0x1002, "radeon", r100_chip_ids, ARRAY_SIZE(r100_chip_ids) }, { 0x1002, "r200", r200_chip_ids, ARRAY_SIZE(r200_chip_ids) }, { 0x1002, "r300", r300_chip_ids, ARRAY_SIZE(r300_chip_ids) }, -- 2.30.2