Module: wine Branch: master Commit: 720f686874c6c8896eee36cfd89554243a406d59 URL: http://source.winehq.org/git/wine.git/?a=commit;h=720f686874c6c8896eee36cfd8...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Mar 5 10:46:39 2014 +0100
wined3d: Recognize VMware SVGA3D.
Unfortunately I was only able to test this by overriding the GL_RENDERER and GL_VENDOR strings returned by the driver.
---
dlls/wined3d/directx.c | 58 +++++++++++++++++++++++++++++----------- dlls/wined3d/wined3d_private.h | 11 +++++--- 2 files changed, 49 insertions(+), 20 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index a779af7..178b246 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -52,6 +52,7 @@ enum wined3d_display_driver DRIVER_NVIDIA_GEFORCE2MX, DRIVER_NVIDIA_GEFORCEFX, DRIVER_NVIDIA_GEFORCE6, + DRIVER_VMWARE, DRIVER_UNKNOWN };
@@ -1168,6 +1169,9 @@ static const struct driver_version_information driver_version_table[] = {DRIVER_NVIDIA_GEFORCEFX, DRIVER_MODEL_NT5X, "nv4_disp.dll", 14, 11, 7516}, {DRIVER_NVIDIA_GEFORCE6, DRIVER_MODEL_NT5X, "nv4_disp.dll", 15, 12, 6658}, {DRIVER_NVIDIA_GEFORCE6, DRIVER_MODEL_NT6X, "nvd3dum.dll", 15, 12, 6658}, + + /* VMware */ + {DRIVER_VMWARE, DRIVER_MODEL_NT5X, "vm3dum.dll", 14, 1, 1134}, };
struct gpu_description @@ -1296,6 +1300,10 @@ static const struct gpu_description gpu_description_table[] = {HW_VENDOR_AMD, CARD_AMD_RADEON_HD7700, "AMD Radeon HD 7700 Series", DRIVER_AMD_R600, 1024}, {HW_VENDOR_AMD, CARD_AMD_RADEON_HD7800, "AMD Radeon HD 7800 Series", DRIVER_AMD_R600, 2048}, {HW_VENDOR_AMD, CARD_AMD_RADEON_HD7900, "AMD Radeon HD 7900 Series", DRIVER_AMD_R600, 2048}, + + /* VMware */ + {HW_VENDOR_VMWARE, CARD_VMWARE_SVGA3D, "VMware SVGA 3D (Microsoft Corporation - WDDM)", DRIVER_VMWARE, 1024}, + /* Intel cards */ {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 }, @@ -1616,6 +1624,9 @@ static enum wined3d_pci_vendor wined3d_guess_card_vendor(const char *gl_vendor_s || strstr(gl_vendor_string, "Intel Inc.")) return HW_VENDOR_INTEL;
+ if (strstr(gl_renderer, "SVGA3D")) + return HW_VENDOR_VMWARE; + if (strstr(gl_vendor_string, "Mesa") || strstr(gl_vendor_string, "Brian Paul") || strstr(gl_vendor_string, "Tungsten Graphics, Inc") @@ -2238,29 +2249,41 @@ static enum wined3d_pci_device select_card_nvidia_mesa(const struct wined3d_gl_i return PCI_DEVICE_NONE; }
+static enum wined3d_pci_device select_card_vmware(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +{ + if (strstr(gl_renderer, "SVGA3D")) + return CARD_VMWARE_SVGA3D; + + return PCI_DEVICE_NONE; +} + static const struct gl_vendor_selection { enum wined3d_gl_vendor gl_vendor; const char *description; /* Description of the card selector i.e. Apple OS/X Intel */ enum wined3d_pci_device (*select_card)(const struct wined3d_gl_info *gl_info, const char *gl_renderer); } +amd_gl_vendor_table[] = +{ + {GL_VENDOR_APPLE, "Apple OSX AMD/ATI binary driver", select_card_amd_binary}, + {GL_VENDOR_FGLRX, "AMD/ATI binary driver", select_card_amd_binary}, + {GL_VENDOR_MESA, "Mesa AMD/ATI driver", select_card_amd_mesa}, +}, nvidia_gl_vendor_table[] = { - {GL_VENDOR_NVIDIA, "Nvidia binary driver", select_card_nvidia_binary}, - {GL_VENDOR_APPLE, "Apple OSX NVidia binary driver", select_card_nvidia_binary}, - {GL_VENDOR_MESA, "Mesa Nouveau driver", select_card_nvidia_mesa}, + {GL_VENDOR_APPLE, "Apple OSX NVidia binary driver", select_card_nvidia_binary}, + {GL_VENDOR_MESA, "Mesa Nouveau driver", select_card_nvidia_mesa}, + {GL_VENDOR_NVIDIA, "Nvidia binary driver", select_card_nvidia_binary}, }, -amd_gl_vendor_table[] = +vmware_gl_vendor_table[] = { - {GL_VENDOR_APPLE, "Apple OSX AMD/ATI binary driver", select_card_amd_binary}, - {GL_VENDOR_FGLRX, "AMD/ATI binary driver", select_card_amd_binary}, - {GL_VENDOR_MESA, "Mesa AMD/ATI driver", select_card_amd_mesa}, + {GL_VENDOR_MESA, "VMware driver", select_card_vmware}, }, intel_gl_vendor_table[] = { - {GL_VENDOR_APPLE, "Apple OSX Intel binary driver", select_card_intel}, - {GL_VENDOR_INTEL, "Mesa Intel driver", select_card_intel}, - {GL_VENDOR_MESA, "Mesa Intel driver", select_card_intel}, + {GL_VENDOR_APPLE, "Apple OSX Intel binary driver", select_card_intel}, + {GL_VENDOR_INTEL, "Mesa Intel driver", select_card_intel}, + {GL_VENDOR_MESA, "Mesa Intel driver", select_card_intel}, };
static enum wined3d_pci_device select_card_fallback_nvidia(const struct wined3d_gl_info *gl_info) @@ -2333,14 +2356,17 @@ static const struct } card_vendor_table[] = { - {HW_VENDOR_NVIDIA, "Nvidia", nvidia_gl_vendor_table, - sizeof(nvidia_gl_vendor_table) / sizeof(nvidia_gl_vendor_table[0]), + {HW_VENDOR_AMD, "AMD", amd_gl_vendor_table, + sizeof(amd_gl_vendor_table) / sizeof(*amd_gl_vendor_table), + select_card_fallback_amd}, + {HW_VENDOR_NVIDIA, "Nvidia", nvidia_gl_vendor_table, + sizeof(nvidia_gl_vendor_table) / sizeof(*nvidia_gl_vendor_table), select_card_fallback_nvidia}, - {HW_VENDOR_AMD, "AMD", amd_gl_vendor_table, - sizeof(amd_gl_vendor_table) / sizeof(amd_gl_vendor_table[0]), + {HW_VENDOR_VMWARE, "VMware", vmware_gl_vendor_table, + sizeof(vmware_gl_vendor_table) / sizeof(*vmware_gl_vendor_table), select_card_fallback_amd}, - {HW_VENDOR_INTEL, "Intel", intel_gl_vendor_table, - sizeof(intel_gl_vendor_table) / sizeof(intel_gl_vendor_table[0]), + {HW_VENDOR_INTEL, "Intel", intel_gl_vendor_table, + sizeof(intel_gl_vendor_table) / sizeof(*intel_gl_vendor_table), select_card_fallback_intel}, };
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 0ceb6f1..60088e8 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1350,10 +1350,11 @@ struct wined3d_pixel_format
enum wined3d_pci_vendor { - HW_VENDOR_SOFTWARE = 0x0000, - HW_VENDOR_AMD = 0x1002, - HW_VENDOR_NVIDIA = 0x10de, - HW_VENDOR_INTEL = 0x8086, + HW_VENDOR_SOFTWARE = 0x0000, + HW_VENDOR_AMD = 0x1002, + HW_VENDOR_NVIDIA = 0x10de, + HW_VENDOR_VMWARE = 0x15ad, + HW_VENDOR_INTEL = 0x8086, };
enum wined3d_pci_device @@ -1475,6 +1476,8 @@ enum wined3d_pci_device CARD_NVIDIA_GEFORCE_GTX770M = 0x11e0, CARD_NVIDIA_GEFORCE_GTX770 = 0x1184,
+ CARD_VMWARE_SVGA3D = 0x0405, + CARD_INTEL_830M = 0x3577, CARD_INTEL_855GM = 0x3582, CARD_INTEL_845G = 0x2562,