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.
This commit is contained in:
Henri Verbeet 2014-03-05 10:46:39 +01:00 committed by Alexandre Julliard
parent 9ee120f108
commit 720f686874
2 changed files with 52 additions and 23 deletions

View File

@ -52,6 +52,7 @@ enum wined3d_display_driver
DRIVER_NVIDIA_GEFORCE2MX, DRIVER_NVIDIA_GEFORCE2MX,
DRIVER_NVIDIA_GEFORCEFX, DRIVER_NVIDIA_GEFORCEFX,
DRIVER_NVIDIA_GEFORCE6, DRIVER_NVIDIA_GEFORCE6,
DRIVER_VMWARE,
DRIVER_UNKNOWN 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_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_NT5X, "nv4_disp.dll", 15, 12, 6658},
{DRIVER_NVIDIA_GEFORCE6, DRIVER_MODEL_NT6X, "nvd3dum.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 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_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_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}, {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 */ /* Intel cards */
{HW_VENDOR_INTEL, CARD_INTEL_830M, "Intel(R) 82830M Graphics Controller", DRIVER_INTEL_GMA800, 32 }, {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_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.")) || strstr(gl_vendor_string, "Intel Inc."))
return HW_VENDOR_INTEL; return HW_VENDOR_INTEL;
if (strstr(gl_renderer, "SVGA3D"))
return HW_VENDOR_VMWARE;
if (strstr(gl_vendor_string, "Mesa") if (strstr(gl_vendor_string, "Mesa")
|| strstr(gl_vendor_string, "Brian Paul") || strstr(gl_vendor_string, "Brian Paul")
|| strstr(gl_vendor_string, "Tungsten Graphics, Inc") || 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; 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 static const struct gl_vendor_selection
{ {
enum wined3d_gl_vendor gl_vendor; enum wined3d_gl_vendor gl_vendor;
const char *description; /* Description of the card selector i.e. Apple OS/X Intel */ 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); enum wined3d_pci_device (*select_card)(const struct wined3d_gl_info *gl_info, const char *gl_renderer);
} }
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},
},
amd_gl_vendor_table[] = amd_gl_vendor_table[] =
{ {
{GL_VENDOR_APPLE, "Apple OSX AMD/ATI binary driver", select_card_amd_binary}, {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_FGLRX, "AMD/ATI binary driver", select_card_amd_binary},
{GL_VENDOR_MESA, "Mesa AMD/ATI driver", select_card_amd_mesa}, {GL_VENDOR_MESA, "Mesa AMD/ATI driver", select_card_amd_mesa},
},
nvidia_gl_vendor_table[] =
{
{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},
},
vmware_gl_vendor_table[] =
{
{GL_VENDOR_MESA, "VMware driver", select_card_vmware},
}, },
intel_gl_vendor_table[] = intel_gl_vendor_table[] =
{ {
{GL_VENDOR_APPLE, "Apple OSX Intel binary 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_INTEL, "Mesa Intel driver", select_card_intel},
{GL_VENDOR_MESA, "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) 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[] = card_vendor_table[] =
{ {
{HW_VENDOR_NVIDIA, "Nvidia", nvidia_gl_vendor_table, {HW_VENDOR_AMD, "AMD", amd_gl_vendor_table,
sizeof(nvidia_gl_vendor_table) / sizeof(nvidia_gl_vendor_table[0]), sizeof(amd_gl_vendor_table) / sizeof(*amd_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]),
select_card_fallback_amd}, select_card_fallback_amd},
{HW_VENDOR_INTEL, "Intel", intel_gl_vendor_table, {HW_VENDOR_NVIDIA, "Nvidia", nvidia_gl_vendor_table,
sizeof(intel_gl_vendor_table) / sizeof(intel_gl_vendor_table[0]), sizeof(nvidia_gl_vendor_table) / sizeof(*nvidia_gl_vendor_table),
select_card_fallback_nvidia},
{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),
select_card_fallback_intel}, select_card_fallback_intel},
}; };

View File

@ -1350,10 +1350,11 @@ struct wined3d_pixel_format
enum wined3d_pci_vendor enum wined3d_pci_vendor
{ {
HW_VENDOR_SOFTWARE = 0x0000, HW_VENDOR_SOFTWARE = 0x0000,
HW_VENDOR_AMD = 0x1002, HW_VENDOR_AMD = 0x1002,
HW_VENDOR_NVIDIA = 0x10de, HW_VENDOR_NVIDIA = 0x10de,
HW_VENDOR_INTEL = 0x8086, HW_VENDOR_VMWARE = 0x15ad,
HW_VENDOR_INTEL = 0x8086,
}; };
enum wined3d_pci_device enum wined3d_pci_device
@ -1475,6 +1476,8 @@ enum wined3d_pci_device
CARD_NVIDIA_GEFORCE_GTX770M = 0x11e0, CARD_NVIDIA_GEFORCE_GTX770M = 0x11e0,
CARD_NVIDIA_GEFORCE_GTX770 = 0x1184, CARD_NVIDIA_GEFORCE_GTX770 = 0x1184,
CARD_VMWARE_SVGA3D = 0x0405,
CARD_INTEL_830M = 0x3577, CARD_INTEL_830M = 0x3577,
CARD_INTEL_855GM = 0x3582, CARD_INTEL_855GM = 0x3582,
CARD_INTEL_845G = 0x2562, CARD_INTEL_845G = 0x2562,