[2/9] wined3d: Make the card selection for binary drivers use arrays only

Andrei Slăvoiu andrei.slavoiu at gmail.com
Thu Jul 3 17:40:14 CDT 2014


---
 dlls/wined3d/directx.c | 267 ++++++++++++++++++++-----------------------------
 1 file changed, 108 insertions(+), 159 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 6124162..bc7af65 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1784,6 +1784,35 @@ static enum wined3d_pci_device select_card_nvidia_binary(const char *gl_renderer
         {"6700",        CARD_NVIDIA_GEFORCE_6600GT},    /* Geforce 6 - midend */
         {"6610",        CARD_NVIDIA_GEFORCE_6600GT},    /* Geforce 6 - midend */
         {"6600",        CARD_NVIDIA_GEFORCE_6600GT},    /* Geforce 6 - midend */
+        /*Direct 3D 9 SM2*/
+        {"Quadro FX",   CARD_NVIDIA_GEFORCEFX_5800},    /* GeforceFX - highend */
+        {"5950",        CARD_NVIDIA_GEFORCEFX_5800},    /* GeforceFX - highend */
+        {"5900",        CARD_NVIDIA_GEFORCEFX_5800},    /* GeforceFX - highend */
+        {"5800",        CARD_NVIDIA_GEFORCEFX_5800},    /* GeforceFX - highend */
+        {"5750",        CARD_NVIDIA_GEFORCEFX_5600},    /* GeforceFX - midend */
+        {"5700",        CARD_NVIDIA_GEFORCEFX_5600},    /* GeforceFX - midend */
+        {"5650",        CARD_NVIDIA_GEFORCEFX_5600},    /* GeforceFX - midend */
+        {"5600",        CARD_NVIDIA_GEFORCEFX_5600},    /* GeforceFX - midend */
+        {"5500",        CARD_NVIDIA_GEFORCEFX_5200},    /* GeforceFX - lowend */
+        {"5300",        CARD_NVIDIA_GEFORCEFX_5200},    /* GeforceFX - lowend */
+        {"5250",        CARD_NVIDIA_GEFORCEFX_5200},    /* GeforceFX - lowend */
+        {"5200",        CARD_NVIDIA_GEFORCEFX_5200},    /* GeforceFX - lowend */
+        {"5100",        CARD_NVIDIA_GEFORCEFX_5200},    /* GeforceFX - lowend */
+        /*Direct 3D 8*/
+        {"Quadro4",     CARD_NVIDIA_GEFORCE4_TI4200},
+        {"GeForce4 Ti", CARD_NVIDIA_GEFORCE4_TI4200},   /* Geforce4 Ti4200/Ti4400/Ti4600/Ti4800 */
+        {"Quadro DCC",  CARD_NVIDIA_GEFORCE3},
+        {"GeForce3",    CARD_NVIDIA_GEFORCE3},          /* Geforce3 standard/Ti200/Ti500 */
+        /*Direct 3D 7*/
+        {"GeForce4 MX", CARD_NVIDIA_GEFORCE4_MX},       /* MX420/MX440/MX460/MX4000 */
+        {"Quadro2 MXR", CARD_NVIDIA_GEFORCE2_MX},
+        {"GeForce2 MX", CARD_NVIDIA_GEFORCE2_MX},       /* Geforce2 standard/MX100/MX200/MX400 */
+        {"Quadro2",     CARD_NVIDIA_GEFORCE2},
+        {"GeForce2",    CARD_NVIDIA_GEFORCE2},          /* Geforce2 GTS/Pro/Ti/Ultra */
+        {"Quadro",      CARD_NVIDIA_GEFORCE},
+        {"GeForce",     CARD_NVIDIA_GEFORCE},           /* Geforce 256/DDR */
+        /*Direct 3D 6*/
+        {"TNT2",        CARD_NVIDIA_RIVA_TNT2},         /* Riva TNT2 standard/M64/Pro/Ultra */
     };
 
     for (i = 0; i < sizeof(cards) / sizeof(*cards); ++i)
@@ -1792,73 +1821,6 @@ static enum wined3d_pci_device select_card_nvidia_binary(const char *gl_renderer
             return cards[i].id;
     }
 
-    /*Direct 3D 9 SM2*/
-    /* GeforceFX - highend */
-    if (strstr(gl_renderer, "5800")
-            || strstr(gl_renderer, "5900")
-            || strstr(gl_renderer, "5950")
-            || strstr(gl_renderer, "Quadro FX"))
-    {
-        return CARD_NVIDIA_GEFORCEFX_5800;
-    }
-
-    /* GeforceFX - midend */
-    if (strstr(gl_renderer, "5600")
-            || strstr(gl_renderer, "5650")
-            || strstr(gl_renderer, "5700")
-            || strstr(gl_renderer, "5750"))
-    {
-        return CARD_NVIDIA_GEFORCEFX_5600;
-    }
-
-    /* GeforceFX - lowend */
-    if (strstr(gl_renderer, "5100")
-            || strstr(gl_renderer, "5200")
-            || strstr(gl_renderer, "5250")
-            || strstr(gl_renderer, "5300")
-            || strstr(gl_renderer, "5500"))
-    {
-        return CARD_NVIDIA_GEFORCEFX_5200; /* GeforceFX 5100/5200/5250/5300/5500 */
-    }
-
-    /*Direct 3D 8*/
-    if (strstr(gl_renderer, "GeForce4 Ti") || strstr(gl_renderer, "Quadro4"))
-    {
-        return CARD_NVIDIA_GEFORCE4_TI4200; /* Geforce4 Ti4200/Ti4400/Ti4600/Ti4800, Quadro4 */
-    }
-
-    if (strstr(gl_renderer, "GeForce3") || strstr(gl_renderer, "Quadro DCC"))
-    {
-        return CARD_NVIDIA_GEFORCE3; /* Geforce3 standard/Ti200/Ti500, Quadro DCC */
-    }
-
-    /*Direct 3D 7*/
-    if (strstr(gl_renderer, "GeForce4 MX"))
-    {
-        return CARD_NVIDIA_GEFORCE4_MX; /* MX420/MX440/MX460/MX4000 */
-    }
-
-    if (strstr(gl_renderer, "GeForce2 MX") || strstr(gl_renderer, "Quadro2 MXR"))
-    {
-        return CARD_NVIDIA_GEFORCE2_MX; /* Geforce2 standard/MX100/MX200/MX400, Quadro2 MXR */
-    }
-
-    if (strstr(gl_renderer, "GeForce2") || strstr(gl_renderer, "Quadro2"))
-    {
-        return CARD_NVIDIA_GEFORCE2; /* Geforce2 GTS/Pro/Ti/Ultra, Quadro2 */
-    }
-
-    if (strstr(gl_renderer, "GeForce") || strstr(gl_renderer, "Quadro"))
-    {
-        return CARD_NVIDIA_GEFORCE; /* Geforce 256/DDR, Quadro */
-    }
-
-    /*Direct 3D 6*/
-    if (strstr(gl_renderer, "TNT2"))
-    {
-        return CARD_NVIDIA_RIVA_TNT2; /* Riva TNT2 standard/M64/Pro/Ultra */
-    }
-
     return CARD_NVIDIA_RIVA_TNT; /* Riva TNT, Vanta */
 }
 
@@ -1878,70 +1840,90 @@ static enum wined3d_pci_device select_card_amd_binary(const char *gl_renderer)
     cards[] =
     {
         /* Southern Islands */
-        {"HD 7900", CARD_AMD_RADEON_HD7900},
-        {"HD 7800", CARD_AMD_RADEON_HD7800},
-        {"HD 7700", CARD_AMD_RADEON_HD7700},
+        {"HD 7900",         CARD_AMD_RADEON_HD7900},
+        {"HD 7800",         CARD_AMD_RADEON_HD7800},
+        {"HD 7700",         CARD_AMD_RADEON_HD7700},
         /* Northern Islands */
-        {"HD 6970", CARD_AMD_RADEON_HD6900},
-        {"HD 6900", CARD_AMD_RADEON_HD6900},
-        {"HD 6800", CARD_AMD_RADEON_HD6800},
-        {"HD 6770M",CARD_AMD_RADEON_HD6600M},
-        {"HD 6750M",CARD_AMD_RADEON_HD6600M},
-        {"HD 6700", CARD_AMD_RADEON_HD6700},
-        {"HD 6670", CARD_AMD_RADEON_HD6600},
-        {"HD 6630M",CARD_AMD_RADEON_HD6600M},
-        {"HD 6600M",CARD_AMD_RADEON_HD6600M},
-        {"HD 6600", CARD_AMD_RADEON_HD6600},
-        {"HD 6570", CARD_AMD_RADEON_HD6600},
-        {"HD 6500M",CARD_AMD_RADEON_HD6600M},
-        {"HD 6500", CARD_AMD_RADEON_HD6600},
-        {"HD 6400", CARD_AMD_RADEON_HD6400},
-        {"HD 6300", CARD_AMD_RADEON_HD6300},
-        {"HD 6200", CARD_AMD_RADEON_HD6300},
+        {"HD 6970",         CARD_AMD_RADEON_HD6900},
+        {"HD 6900",         CARD_AMD_RADEON_HD6900},
+        {"HD 6800",         CARD_AMD_RADEON_HD6800},
+        {"HD 6770M",        CARD_AMD_RADEON_HD6600M},
+        {"HD 6750M",        CARD_AMD_RADEON_HD6600M},
+        {"HD 6700",         CARD_AMD_RADEON_HD6700},
+        {"HD 6670",         CARD_AMD_RADEON_HD6600},
+        {"HD 6630M",        CARD_AMD_RADEON_HD6600M},
+        {"HD 6600M",        CARD_AMD_RADEON_HD6600M},
+        {"HD 6600",         CARD_AMD_RADEON_HD6600},
+        {"HD 6570",         CARD_AMD_RADEON_HD6600},
+        {"HD 6500M",        CARD_AMD_RADEON_HD6600M},
+        {"HD 6500",         CARD_AMD_RADEON_HD6600},
+        {"HD 6400",         CARD_AMD_RADEON_HD6400},
+        {"HD 6300",         CARD_AMD_RADEON_HD6300},
+        {"HD 6200",         CARD_AMD_RADEON_HD6300},
         /* Evergreen */
-        {"HD 5870", CARD_AMD_RADEON_HD5800},    /* Radeon EG CYPRESS PRO */
-        {"HD 5850", CARD_AMD_RADEON_HD5800},    /* Radeon EG CYPRESS XT */
-        {"HD 5800", CARD_AMD_RADEON_HD5800},    /* Radeon EG CYPRESS HD58xx generic renderer string */
-        {"HD 5770", CARD_AMD_RADEON_HD5700},    /* Radeon EG JUNIPER XT */
-        {"HD 5750", CARD_AMD_RADEON_HD5700},    /* Radeon EG JUNIPER LE */
-        {"HD 5700", CARD_AMD_RADEON_HD5700},    /* Radeon EG JUNIPER HD57xx generic renderer string */
-        {"HD 5670", CARD_AMD_RADEON_HD5600},    /* Radeon EG REDWOOD XT */
-        {"HD 5570", CARD_AMD_RADEON_HD5600},    /* Radeon EG REDWOOD PRO mapped to HD5600 series */
-        {"HD 5550", CARD_AMD_RADEON_HD5600},    /* Radeon EG REDWOOD LE mapped to HD5600 series */
-        {"HD 5450", CARD_AMD_RADEON_HD5400},    /* Radeon EG CEDAR PRO */
-        {"HD 5000", CARD_AMD_RADEON_HD5600},    /* Defaulting to HD 5600 */
+        {"HD 5870",         CARD_AMD_RADEON_HD5800},    /* Radeon EG CYPRESS PRO */
+        {"HD 5850",         CARD_AMD_RADEON_HD5800},    /* Radeon EG CYPRESS XT */
+        {"HD 5800",         CARD_AMD_RADEON_HD5800},    /* Radeon EG CYPRESS HD58xx generic renderer string */
+        {"HD 5770",         CARD_AMD_RADEON_HD5700},    /* Radeon EG JUNIPER XT */
+        {"HD 5750",         CARD_AMD_RADEON_HD5700},    /* Radeon EG JUNIPER LE */
+        {"HD 5700",         CARD_AMD_RADEON_HD5700},    /* Radeon EG JUNIPER HD57xx generic renderer string */
+        {"HD 5670",         CARD_AMD_RADEON_HD5600},    /* Radeon EG REDWOOD XT */
+        {"HD 5570",         CARD_AMD_RADEON_HD5600},    /* Radeon EG REDWOOD PRO mapped to HD5600 series */
+        {"HD 5550",         CARD_AMD_RADEON_HD5600},    /* Radeon EG REDWOOD LE mapped to HD5600 series */
+        {"HD 5450",         CARD_AMD_RADEON_HD5400},    /* Radeon EG CEDAR PRO */
+        {"HD 5000",         CARD_AMD_RADEON_HD5600},    /* Defaulting to HD 5600 */
         /* R700 */
-        {"HD 4890", CARD_AMD_RADEON_HD4800},    /* Radeon RV790 */
-        {"HD 4870", CARD_AMD_RADEON_HD4800},    /* Radeon RV770 */
-        {"HD 4850", CARD_AMD_RADEON_HD4800},    /* Radeon RV770 */
-        {"HD 4830", CARD_AMD_RADEON_HD4800},    /* Radeon RV770 */
-        {"HD 4800", CARD_AMD_RADEON_HD4800},    /* Radeon RV7xx HD48xx generic renderer string */
-        {"HD 4770", CARD_AMD_RADEON_HD4700},    /* Radeon RV740 */
-        {"HD 4700", CARD_AMD_RADEON_HD4700},    /* Radeon RV7xx HD47xx generic renderer string */
-        {"HD 4670", CARD_AMD_RADEON_HD4600},    /* Radeon RV730 */
-        {"HD 4650", CARD_AMD_RADEON_HD4600},    /* Radeon RV730 */
-        {"HD 4600", CARD_AMD_RADEON_HD4600},    /* Radeon RV730 */
-        {"HD 4550", CARD_AMD_RADEON_HD4350},    /* Radeon RV710 */
-        {"HD 4350", CARD_AMD_RADEON_HD4350},    /* Radeon RV710 */
+        {"HD 4890",         CARD_AMD_RADEON_HD4800},    /* Radeon RV790 */
+        {"HD 4870",         CARD_AMD_RADEON_HD4800},    /* Radeon RV770 */
+        {"HD 4850",         CARD_AMD_RADEON_HD4800},    /* Radeon RV770 */
+        {"HD 4830",         CARD_AMD_RADEON_HD4800},    /* Radeon RV770 */
+        {"HD 4800",         CARD_AMD_RADEON_HD4800},    /* Radeon RV7xx HD48xx generic renderer string */
+        {"HD 4770",         CARD_AMD_RADEON_HD4700},    /* Radeon RV740 */
+        {"HD 4700",         CARD_AMD_RADEON_HD4700},    /* Radeon RV7xx HD47xx generic renderer string */
+        {"HD 4670",         CARD_AMD_RADEON_HD4600},    /* Radeon RV730 */
+        {"HD 4650",         CARD_AMD_RADEON_HD4600},    /* Radeon RV730 */
+        {"HD 4600",         CARD_AMD_RADEON_HD4600},    /* Radeon RV730 */
+        {"HD 4550",         CARD_AMD_RADEON_HD4350},    /* Radeon RV710 */
+        {"HD 4350",         CARD_AMD_RADEON_HD4350},    /* Radeon RV710 */
         /* R600/R700 integrated */
-        {"HD 4200M", CARD_AMD_RADEON_HD4200M},
-        {"HD 3300", CARD_AMD_RADEON_HD3200},
-        {"HD 3200", CARD_AMD_RADEON_HD3200},
-        {"HD 3100", CARD_AMD_RADEON_HD3200},
+        {"HD 4200M",        CARD_AMD_RADEON_HD4200M},
+        {"HD 3300",         CARD_AMD_RADEON_HD3200},
+        {"HD 3200",         CARD_AMD_RADEON_HD3200},
+        {"HD 3100",         CARD_AMD_RADEON_HD3200},
         /* R600 */
-        {"HD 3870", CARD_AMD_RADEON_HD2900},    /* HD2900/HD3800 - highend */
-        {"HD 3850", CARD_AMD_RADEON_HD2900},    /* HD2900/HD3800 - highend */
-        {"HD 2900", CARD_AMD_RADEON_HD2900},    /* HD2900/HD3800 - highend */
-        {"HD 3830", CARD_AMD_RADEON_HD2600},    /* China-only midend */
-        {"HD 3690", CARD_AMD_RADEON_HD2600},    /* HD2600/HD3600 - midend */
-        {"HD 3650", CARD_AMD_RADEON_HD2600},    /* HD2600/HD3600 - midend */
-        {"HD 2600", CARD_AMD_RADEON_HD2600},    /* HD2600/HD3600 - midend */
-        {"HD 3470", CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
-        {"HD 3450", CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
-        {"HD 3430", CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
-        {"HD 3400", CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
-        {"HD 2400", CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
-        {"HD 2350", CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        {"HD 3870",         CARD_AMD_RADEON_HD2900},    /* HD2900/HD3800 - highend */
+        {"HD 3850",         CARD_AMD_RADEON_HD2900},    /* HD2900/HD3800 - highend */
+        {"HD 2900",         CARD_AMD_RADEON_HD2900},    /* HD2900/HD3800 - highend */
+        {"HD 3830",         CARD_AMD_RADEON_HD2600},    /* China-only midend */
+        {"HD 3690",         CARD_AMD_RADEON_HD2600},    /* HD2600/HD3600 - midend */
+        {"HD 3650",         CARD_AMD_RADEON_HD2600},    /* HD2600/HD3600 - midend */
+        {"HD 2600",         CARD_AMD_RADEON_HD2600},    /* HD2600/HD3600 - midend */
+        {"HD 3470",         CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        {"HD 3450",         CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        {"HD 3430",         CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        {"HD 3400",         CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        {"HD 2400",         CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        {"HD 2350",         CARD_AMD_RADEON_HD2350},    /* HD2350/HD2400/HD3400 - lowend */
+        /* Radeon R5xx */
+        {"X1950",           CARD_AMD_RADEON_X1600},
+        {"X1900",           CARD_AMD_RADEON_X1600},
+        {"X1800",           CARD_AMD_RADEON_X1600},
+        {"X1650",           CARD_AMD_RADEON_X1600},
+        {"X1600",           CARD_AMD_RADEON_X1600},
+        /* Radeon R4xx + X1300/X1400/X1450/X1550/X2300/X2500/HD2300 (lowend R5xx)
+         * Note X2300/X2500/HD2300 are R5xx GPUs with a 2xxx naming but they are still DX9-only */
+        {"HD 2300",         CARD_AMD_RADEON_X700},
+        {"X2500",           CARD_AMD_RADEON_X700},
+        {"X2300",           CARD_AMD_RADEON_X700},
+        {"X1550",           CARD_AMD_RADEON_X700},
+        {"X1450",           CARD_AMD_RADEON_X700},
+        {"X1400",           CARD_AMD_RADEON_X700},
+        {"X1300",           CARD_AMD_RADEON_X700},
+        {"X850",            CARD_AMD_RADEON_X700},
+        {"X800",            CARD_AMD_RADEON_X700},
+        {"X700",            CARD_AMD_RADEON_X700},
+        /* Radeon Xpress Series - onboard, DX9b, Shader 2.0, 300-400 MHz */
+        {"Radeon Xpress",   CARD_AMD_RADEON_XPRESS_200M},
     };
 
     for (i = 0; i < sizeof(cards) / sizeof(*cards); ++i)
@@ -1949,39 +1931,6 @@ static enum wined3d_pci_device select_card_amd_binary(const char *gl_renderer)
         if (strstr(gl_renderer, cards[i].renderer))
             return cards[i].id;
     }
-    
-    /* Radeon R5xx */
-    if (strstr(gl_renderer, "X1600")
-            || strstr(gl_renderer, "X1650")
-            || strstr(gl_renderer, "X1800")
-            || strstr(gl_renderer, "X1900")
-            || strstr(gl_renderer, "X1950"))
-    {
-        return CARD_AMD_RADEON_X1600;
-    }
-
-    /* Radeon R4xx + X1300/X1400/X1450/X1550/X2300/X2500/HD2300 (lowend R5xx)
-     * Note X2300/X2500/HD2300 are R5xx GPUs with a 2xxx naming but they are still DX9-only */
-    if (strstr(gl_renderer, "X700")
-            || strstr(gl_renderer, "X800")
-            || strstr(gl_renderer, "X850")
-            || strstr(gl_renderer, "X1300")
-            || strstr(gl_renderer, "X1400")
-            || strstr(gl_renderer, "X1450")
-            || strstr(gl_renderer, "X1550")
-            || strstr(gl_renderer, "X2300")
-            || strstr(gl_renderer, "X2500")
-            || strstr(gl_renderer, "HD 2300")
-            )
-    {
-        return CARD_AMD_RADEON_X700;
-    }
-
-    /* Radeon Xpress Series - onboard, DX9b, Shader 2.0, 300-400 MHz */
-    if (strstr(gl_renderer, "Radeon Xpress"))
-    {
-        return CARD_AMD_RADEON_XPRESS_200M;
-    }
 
     return PCI_DEVICE_NONE;
 }
-- 
2.0.0





More information about the wine-patches mailing list