[PATCH 2/5] wined3d: Recognize some more Intel GPUs.

Henri Verbeet hverbeet at codeweavers.com
Mon Jan 2 14:45:27 CST 2012


Unfortunately I don't have most of the description strings for the Windows
drivers, so those are probably wrong. If anyone has the correct strings,
please update the table.
---
 dlls/wined3d/directx.c         |  113 ++++++++++++++++++++++++++++++++--------
 dlls/wined3d/wined3d_private.h |   39 +++++++++++---
 2 files changed, 123 insertions(+), 29 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 4c8a7ad..6dc43d0 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1158,14 +1158,40 @@ static const struct gpu_description gpu_description_table[] =
     {HW_VENDOR_AMD,        CARD_AMD_RADEON_HD6800,         "AMD Radeon HD 6800 Series",        DRIVER_AMD_R600,         1024},
     {HW_VENDOR_AMD,        CARD_AMD_RADEON_HD6900,         "AMD Radeon HD 6900 Series",        DRIVER_AMD_R600,         2048},
     /* Intel cards */
-    {HW_VENDOR_INTEL,      CARD_INTEL_I830G,               "Intel(R) 82830M Graphics Controller",                       DRIVER_INTEL_GMA800,  32 },
-    {HW_VENDOR_INTEL,      CARD_INTEL_I855G,               "Intel(R) 82852/82855 GM/GME Graphics Controller",           DRIVER_INTEL_GMA800,  32 },
-    {HW_VENDOR_INTEL,      CARD_INTEL_I865G,               "Intel(R) 82865G Graphics Controller",                       DRIVER_INTEL_GMA800,  32 },
-    {HW_VENDOR_INTEL,      CARD_INTEL_I915G,               "Intel(R) 82915G/GV/910GL Express Chipset Family",           DRIVER_INTEL_GMA900,  64 },
-    {HW_VENDOR_INTEL,      CARD_INTEL_I915GM,              "Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family",   DRIVER_INTEL_GMA900,  64 },
-    {HW_VENDOR_INTEL,      CARD_INTEL_I945GM,              "Mobile Intel(R) 945GM Express Chipset Family",              DRIVER_INTEL_GMA950,  64 },
-    {HW_VENDOR_INTEL,      CARD_INTEL_X3100,               "Mobile Intel(R) 965 Express Chipset Family",                DRIVER_INTEL_GMA3000, 128},
-    {HW_VENDOR_INTEL,      CARD_INTEL_GM45,                "Mobile Intel(R) GM45 Express Chipset Family",               DRIVER_INTEL_GMA3000, 512}
+    {HW_VENDOR_INTEL,      CARD_INTEL_830M,                "Intel(R) 82830M Graphics Controller",                       DRIVER_INTEL_GMA800,  32 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_855GM,               "Intel(R) 82852/82855 GM/GME Graphics Controller",           DRIVER_INTEL_GMA800,  32 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_845G,                "Intel(R) 845G",                                             DRIVER_INTEL_GMA800,  32 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_865G,                "Intel(R) 82865G Graphics Controller",                       DRIVER_INTEL_GMA800,  32 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_915G,                "Intel(R) 82915G/GV/910GL Express Chipset Family",           DRIVER_INTEL_GMA900,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_E7221G,              "Intel(R) E7221G",                                           DRIVER_INTEL_GMA900,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_915GM,               "Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family",   DRIVER_INTEL_GMA900,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_945G,                "Intel(R) 945G",                                             DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_945GM,               "Mobile Intel(R) 945GM Express Chipset Family",              DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_945GME,              "Intel(R) 945GME",                                           DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_Q35,                 "Intel(R) Q35",                                              DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_G33,                 "Intel(R) G33",                                              DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_Q33,                 "Intel(R) Q33",                                              DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_PNVG,                "Intel(R) IGD",                                              DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_PNVM,                "Intel(R) IGD",                                              DRIVER_INTEL_GMA950,  64 },
+    {HW_VENDOR_INTEL,      CARD_INTEL_965Q,                "Intel(R) 965Q",                                             DRIVER_INTEL_GMA3000, 128},
+    {HW_VENDOR_INTEL,      CARD_INTEL_965G,                "Intel(R) 965G",                                             DRIVER_INTEL_GMA3000, 128},
+    {HW_VENDOR_INTEL,      CARD_INTEL_946GZ,               "Intel(R) 946GZ",                                            DRIVER_INTEL_GMA3000, 128},
+    {HW_VENDOR_INTEL,      CARD_INTEL_965GM,               "Mobile Intel(R) 965 Express Chipset Family",                DRIVER_INTEL_GMA3000, 128},
+    {HW_VENDOR_INTEL,      CARD_INTEL_965GME,              "Intel(R) 965GME",                                           DRIVER_INTEL_GMA3000, 128},
+    {HW_VENDOR_INTEL,      CARD_INTEL_GM45,                "Mobile Intel(R) GM45 Express Chipset Family",               DRIVER_INTEL_GMA3000, 512},
+    {HW_VENDOR_INTEL,      CARD_INTEL_IGD,                 "Intel(R) Integrated Graphics Device",                       DRIVER_INTEL_GMA3000, 512},
+    {HW_VENDOR_INTEL,      CARD_INTEL_G45,                 "Intel(R) G45/G43",                                          DRIVER_INTEL_GMA3000, 512},
+    {HW_VENDOR_INTEL,      CARD_INTEL_Q45,                 "Intel(R) Q45/Q43",                                          DRIVER_INTEL_GMA3000, 512},
+    {HW_VENDOR_INTEL,      CARD_INTEL_G41,                 "Intel(R) G41",                                              DRIVER_INTEL_GMA3000, 512},
+    {HW_VENDOR_INTEL,      CARD_INTEL_B43,                 "Intel(R) B43",                                              DRIVER_INTEL_GMA3000, 512},
+    {HW_VENDOR_INTEL,      CARD_INTEL_ILKD,                "Intel(R) Ironlake Desktop",                                 DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_ILKM,                "Intel(R) Ironlake Mobile",                                  DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_SNBD,                "Intel(R) Sandybridge Desktop",                              DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_SNBM,                "Intel(R) Sandybridge Mobile",                               DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_SNBS,                "Intel(R) Sandybridge Server",                               DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_IVBD,                "Intel(R) Ivybridge Desktop",                                DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_IVBM,                "Intel(R) Ivybridge Mobile",                                 DRIVER_INTEL_GMA3000, 1024},
+    {HW_VENDOR_INTEL,      CARD_INTEL_IVBS,                "Intel(R) Ivybridge Server",                                 DRIVER_INTEL_GMA3000, 1024},
 };
 
 static const struct driver_version_information *get_driver_version_info(enum wined3d_display_driver driver,
@@ -1794,26 +1820,69 @@ static enum wined3d_pci_device select_card_amd_binary(const struct wined3d_gl_in
 static enum wined3d_pci_device select_card_intel(const struct wined3d_gl_info *gl_info,
         const char *gl_renderer)
 {
-    if (strstr(gl_renderer, "GM45")) return CARD_INTEL_GM45;
-    if (strstr(gl_renderer, "X3100") || strstr(gl_renderer, "965GM"))
-    {
-        /* MacOS calls the card GMA X3100, otherwise known as GM965/GL960 */
-        return CARD_INTEL_X3100;
-    }
+    unsigned int i;
 
-    if (strstr(gl_renderer, "GMA 950") || strstr(gl_renderer, "945GM"))
+    static const struct
+    {
+        const char *renderer;
+        enum wined3d_pci_device id;
+    }
+    cards[] =
+    {
+        /* Ivybridge */
+        {"Ivybridge Server",            CARD_INTEL_IVBS},
+        {"Ivybridge Mobile",            CARD_INTEL_IVBM},
+        {"Ivybridge Desktop",           CARD_INTEL_IVBD},
+        /* Sandybridge */
+        {"Sandybridge Server",          CARD_INTEL_SNBS},
+        {"Sandybridge Mobile",          CARD_INTEL_SNBM},
+        {"Sandybridge Desktop",         CARD_INTEL_SNBD},
+        /* Ironlake */
+        {"Ironlake Mobile",             CARD_INTEL_ILKM},
+        {"Ironlake Desktop",            CARD_INTEL_ILKD},
+        /* G4x */
+        {"B43",                         CARD_INTEL_B43},
+        {"G41",                         CARD_INTEL_G41},
+        {"G45",                         CARD_INTEL_G45},
+        {"Q45",                         CARD_INTEL_Q45},
+        {"Integrated Graphics Device",  CARD_INTEL_IGD},
+        {"GM45",                        CARD_INTEL_GM45},
+        /* i965 */
+        {"965GME",                      CARD_INTEL_965GME},
+        {"965GM",                       CARD_INTEL_965GM},
+        {"X3100",                       CARD_INTEL_965GM},  /* MacOS */
+        {"946GZ",                       CARD_INTEL_946GZ},
+        {"965G",                        CARD_INTEL_965G},
+        {"965Q",                        CARD_INTEL_965Q},
+        /* i945 */
+        {"Pineview M",                  CARD_INTEL_PNVM},
+        {"Pineview G",                  CARD_INTEL_PNVG},
+        {"IGD",                         CARD_INTEL_PNVG},
+        {"Q33",                         CARD_INTEL_Q33},
+        {"G33",                         CARD_INTEL_G33},
+        {"Q35",                         CARD_INTEL_Q35},
+        {"945GME",                      CARD_INTEL_945GME},
+        {"945GM",                       CARD_INTEL_945GM},
+        {"GMA 950",                     CARD_INTEL_945GM},  /* MacOS */
+        {"945G",                        CARD_INTEL_945G},
+        /* i915 */
+        {"915GM",                       CARD_INTEL_915GM},
+        {"E7221G",                      CARD_INTEL_E7221G},
+        {"915G",                        CARD_INTEL_915G},
+        /* i8xx */
+        {"865G",                        CARD_INTEL_865G},
+        {"845G",                        CARD_INTEL_845G},
+        {"855GM",                       CARD_INTEL_855GM},
+        {"830M",                        CARD_INTEL_830M},
+    };
+
+    for (i = 0; i < sizeof(cards) / sizeof(*cards); ++i)
     {
-        /* MacOS calls the card GMA 950, but everywhere else the PCI ID is named 945GM */
-        return CARD_INTEL_I945GM;
+        if (strstr(gl_renderer, cards[i].renderer))
+            return cards[i].id;
     }
 
-    if (strstr(gl_renderer, "915GM")) return CARD_INTEL_I915GM;
-    if (strstr(gl_renderer, "915G")) return CARD_INTEL_I915G;
-    if (strstr(gl_renderer, "865G")) return CARD_INTEL_I865G;
-    if (strstr(gl_renderer, "855G")) return CARD_INTEL_I855G;
-    if (strstr(gl_renderer, "830G")) return CARD_INTEL_I830G;
-    return CARD_INTEL_I915G;
-
+    return CARD_INTEL_915G;
 }
 
 static enum wined3d_pci_device select_card_amd_mesa(const struct wined3d_gl_info *gl_info,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index dd83d1f..1602bdd 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1415,15 +1415,40 @@ enum wined3d_pci_device
     CARD_NVIDIA_GEFORCE_GTX570      = 0x1081,
     CARD_NVIDIA_GEFORCE_GTX580      = 0x1080,
 
+    CARD_INTEL_830M                 = 0x3577,
+    CARD_INTEL_855GM                = 0x3582,
     CARD_INTEL_845G                 = 0x2562,
-    CARD_INTEL_I830G                = 0x3577,
-    CARD_INTEL_I855G                = 0x3582,
-    CARD_INTEL_I865G                = 0x2572,
-    CARD_INTEL_I915G                = 0x2582,
-    CARD_INTEL_I915GM               = 0x2592,
-    CARD_INTEL_I945GM               = 0x27a2, /* Same as GMA 950? */
-    CARD_INTEL_X3100                = 0x2a02, /* Found in Macs. Same as GM965/GL960 */
+    CARD_INTEL_865G                 = 0x2572,
+    CARD_INTEL_915G                 = 0x2582,
+    CARD_INTEL_E7221G               = 0x258a,
+    CARD_INTEL_915GM                = 0x2592,
+    CARD_INTEL_945G                 = 0x2772,
+    CARD_INTEL_945GM                = 0x27a2,
+    CARD_INTEL_945GME               = 0x27ae,
+    CARD_INTEL_Q35                  = 0x29b2,
+    CARD_INTEL_G33                  = 0x29c2,
+    CARD_INTEL_Q33                  = 0x29d2,
+    CARD_INTEL_PNVG                 = 0xa001,
+    CARD_INTEL_PNVM                 = 0xa011,
+    CARD_INTEL_965Q                 = 0x2992,
+    CARD_INTEL_965G                 = 0x2982,
+    CARD_INTEL_946GZ                = 0x2972,
+    CARD_INTEL_965GM                = 0x2a02,
+    CARD_INTEL_965GME               = 0x2a12,
     CARD_INTEL_GM45                 = 0x2a42,
+    CARD_INTEL_IGD                  = 0x2e02,
+    CARD_INTEL_Q45                  = 0x2e12,
+    CARD_INTEL_G45                  = 0x2e22,
+    CARD_INTEL_G41                  = 0x2e32,
+    CARD_INTEL_B43                  = 0x2e92,
+    CARD_INTEL_ILKD                 = 0x0042,
+    CARD_INTEL_ILKM                 = 0x0046,
+    CARD_INTEL_SNBD                 = 0x0122,
+    CARD_INTEL_SNBM                 = 0x0126,
+    CARD_INTEL_SNBS                 = 0x010a,
+    CARD_INTEL_IVBD                 = 0x0162,
+    CARD_INTEL_IVBM                 = 0x0166,
+    CARD_INTEL_IVBS                 = 0x015a,
 };
 
 struct wined3d_fbo_ops
-- 
1.7.3.4




More information about the wine-patches mailing list