[PATCH 4/4] wined3d: Recognize some Nouveau renderer strings.

Henri Verbeet hverbeet at codeweavers.com
Tue Mar 1 02:47:58 CST 2011


---
 dlls/wined3d/directx.c |   74 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 73 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 64076dc..8d77321 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1852,7 +1852,79 @@ static enum wined3d_pci_device select_card_amd_mesa(const struct wined3d_gl_info
 static enum wined3d_pci_device select_card_nvidia_mesa(const struct wined3d_gl_info *gl_info,
         const char *gl_renderer)
 {
-    FIXME_(d3d_caps)("Card selection not handled for Mesa Nouveau driver\n");
+    if (strstr(gl_renderer, "Gallium"))
+    {
+        unsigned int i;
+
+        static const struct
+        {
+            const char *renderer;
+            enum wined3d_pci_device id;
+        }
+        cards[] =
+        {
+            {"NVC4",    CARD_NVIDIA_GEFORCE_GTX460},
+            {"NVC0",    CARD_NVIDIA_GEFORCE_GTX480},
+            {"NVAF",    CARD_NVIDIA_GEFORCE_GT320M},
+            {"NVAC",    CARD_NVIDIA_GEFORCE_8200},
+            {"NVAA",    CARD_NVIDIA_GEFORCE_8200},
+            {"NVA8",    CARD_NVIDIA_GEFORCE_210},
+            {"NVA5",    CARD_NVIDIA_GEFORCE_GT220},
+            {"NVA3",    CARD_NVIDIA_GEFORCE_GT240},
+            {"NVA0",    CARD_NVIDIA_GEFORCE_GTX280},
+            {"NV98",    CARD_NVIDIA_GEFORCE_9200},
+            {"NV96",    CARD_NVIDIA_GEFORCE_9400GT},
+            {"NV94",    CARD_NVIDIA_GEFORCE_9600GT},
+            {"NV92",    CARD_NVIDIA_GEFORCE_9800GT},
+            {"NV86",    CARD_NVIDIA_GEFORCE_8500GT},
+            {"NV84",    CARD_NVIDIA_GEFORCE_8600GT},
+            {"NV68",    CARD_NVIDIA_GEFORCE_6200},      /* 7050 */
+            {"NV67",    CARD_NVIDIA_GEFORCE_6200},      /* 7000M */
+            {"NV63",    CARD_NVIDIA_GEFORCE_6200},      /* 7100 */
+            {"NV50",    CARD_NVIDIA_GEFORCE_8800GTX},
+            {"NV4E",    CARD_NVIDIA_GEFORCE_6200},      /* 6100 Go / 6150 Go */
+            {"NV4C",    CARD_NVIDIA_GEFORCE_6200},      /* 6150SE */
+            {"NV4B",    CARD_NVIDIA_GEFORCE_7600},
+            {"NV4A",    CARD_NVIDIA_GEFORCE_6200},
+            {"NV49",    CARD_NVIDIA_GEFORCE_7800GT},    /* 7900 */
+            {"NV47",    CARD_NVIDIA_GEFORCE_7800GT},
+            {"NV46",    CARD_NVIDIA_GEFORCE_7400},
+            {"NV45",    CARD_NVIDIA_GEFORCE_6800},
+            {"NV44",    CARD_NVIDIA_GEFORCE_6200},
+            {"NV43",    CARD_NVIDIA_GEFORCE_6600GT},
+            {"NV42",    CARD_NVIDIA_GEFORCE_6800},
+            {"NV41",    CARD_NVIDIA_GEFORCE_6800},
+            {"NV40",    CARD_NVIDIA_GEFORCE_6800},
+            {"NV38",    CARD_NVIDIA_GEFORCEFX_5800},    /* FX 5950 Ultra */
+            {"NV36",    CARD_NVIDIA_GEFORCEFX_5800},    /* FX 5700/5750 */
+            {"NV35",    CARD_NVIDIA_GEFORCEFX_5800},    /* FX 5900 */
+            {"NV34",    CARD_NVIDIA_GEFORCEFX_5200},
+            {"NV31",    CARD_NVIDIA_GEFORCEFX_5600},
+            {"NV30",    CARD_NVIDIA_GEFORCEFX_5800},
+            {"NV28",    CARD_NVIDIA_GEFORCE4_TI4200},
+            {"NV25",    CARD_NVIDIA_GEFORCE4_TI4200},
+            {"NV20",    CARD_NVIDIA_GEFORCE3},
+            {"NV1F",    CARD_NVIDIA_GEFORCE4_MX},       /* GF4 MX IGP */
+            {"NV1A",    CARD_NVIDIA_GEFORCE2},          /* GF2 IGP */
+            {"NV18",    CARD_NVIDIA_GEFORCE4_MX},
+            {"NV17",    CARD_NVIDIA_GEFORCE4_MX},
+            {"NV16",    CARD_NVIDIA_GEFORCE2},
+            {"NV15",    CARD_NVIDIA_GEFORCE2},
+            {"NV11",    CARD_NVIDIA_GEFORCE2_MX},
+            {"NV10",    CARD_NVIDIA_GEFORCE},
+            {"NV05",    CARD_NVIDIA_RIVA_TNT2},
+            {"NV04",    CARD_NVIDIA_RIVA_TNT},
+            {"NV03",    CARD_NVIDIA_RIVA_128},
+        };
+
+        for (i = 0; i < sizeof(cards) / sizeof(*cards); ++i)
+        {
+            if (strstr(gl_renderer, cards[i].renderer))
+                return cards[i].id;
+        }
+    }
+
+    FIXME_(d3d_caps)("Unknown renderer %s.\n", debugstr_a(gl_renderer));
     if (WINE_D3D9_CAPABLE(gl_info)) return CARD_NVIDIA_GEFORCEFX_5600;
     if (WINE_D3D8_CAPABLE(gl_info)) return CARD_NVIDIA_GEFORCE3;
     if (WINE_D3D7_CAPABLE(gl_info)) return CARD_NVIDIA_GEFORCE;
-- 
1.7.3.4




More information about the wine-patches mailing list