From 2447c8bc3e19230449b6bb9016656d6379f4bb4f Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 27 Oct 2009 10:10:39 +0100 Subject: [PATCH] wined3d: Store PCI IDs in wined3d_driver_info instead of wined3d_gl_info. --- dlls/wined3d/directx.c | 95 ++++++++++++++++++++-------------- dlls/wined3d/utils.c | 8 +-- dlls/wined3d/wined3d_gl.h | 79 ---------------------------- dlls/wined3d/wined3d_private.h | 83 ++++++++++++++++++++++++++++- 4 files changed, 142 insertions(+), 123 deletions(-) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index b7c0f8ac81e..2367187a658 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -458,20 +458,22 @@ static DWORD ver_for_ext(GL_SupportedExt ext) return 0; } -static BOOL match_ati_r300_to_500(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_ati_r300_to_500(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { - if (gl_info->gl_vendor != VENDOR_ATI) return FALSE; - if (gl_info->gl_card == CARD_ATI_RADEON_9500) return TRUE; - if (gl_info->gl_card == CARD_ATI_RADEON_X700) return TRUE; - if (gl_info->gl_card == CARD_ATI_RADEON_X1600) return TRUE; + if (vendor != VENDOR_ATI) return FALSE; + if (device == CARD_ATI_RADEON_9500) return TRUE; + if (device == CARD_ATI_RADEON_X700) return TRUE; + if (device == CARD_ATI_RADEON_X1600) return TRUE; return FALSE; } -static BOOL match_geforce5(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_geforce5(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { - if (gl_info->gl_vendor == VENDOR_NVIDIA) + if (vendor == VENDOR_NVIDIA) { - if (gl_info->gl_card == CARD_NVIDIA_GEFORCEFX_5800 || gl_info->gl_card == CARD_NVIDIA_GEFORCEFX_5600) + if (device == CARD_NVIDIA_GEFORCEFX_5800 || device == CARD_NVIDIA_GEFORCEFX_5600) { return TRUE; } @@ -479,7 +481,8 @@ static BOOL match_geforce5(const struct wined3d_gl_info *gl_info, const char *gl return FALSE; } -static BOOL match_apple(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_apple(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { /* MacOS has various specialities in the extensions it advertises. Some have to be loaded from * the opengl 1.2+ core, while other extensions are advertised, but software emulated. So try to @@ -574,28 +577,32 @@ static void test_pbo_functionality(struct wined3d_gl_info *gl_info) } } -static BOOL match_apple_intel(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_apple_intel(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { - return gl_info->gl_vendor == VENDOR_INTEL && match_apple(gl_info, gl_renderer); + return vendor == VENDOR_INTEL && match_apple(gl_info, gl_renderer, vendor, device); } -static BOOL match_apple_nonr500ati(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_apple_nonr500ati(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { - if (!match_apple(gl_info, gl_renderer)) return FALSE; - if (gl_info->gl_vendor != VENDOR_ATI) return FALSE; - if (gl_info->gl_card == CARD_ATI_RADEON_X1600) return FALSE; + if (!match_apple(gl_info, gl_renderer, vendor, device)) return FALSE; + if (vendor != VENDOR_ATI) return FALSE; + if (device == CARD_ATI_RADEON_X1600) return FALSE; return TRUE; } -static BOOL match_fglrx(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_fglrx(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { - if (gl_info->gl_vendor != VENDOR_ATI) return FALSE; - if (match_apple(gl_info, gl_renderer)) return FALSE; + if (vendor != VENDOR_ATI) return FALSE; + if (match_apple(gl_info, gl_renderer, vendor, device)) return FALSE; if (strstr(gl_renderer, "DRI")) return FALSE; /* Filter out Mesa DRI drivers. */ return TRUE; } -static BOOL match_dx10_capable(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_dx10_capable(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { /* DX9 cards support 40 single float varyings in hardware, most drivers report 32. ATI misreports * 44 varyings. So assume that if we have more than 44 varyings we have a dx10 card. @@ -608,7 +615,8 @@ static BOOL match_dx10_capable(const struct wined3d_gl_info *gl_info, const char } /* A GL context is provided by the caller */ -static BOOL match_allows_spec_alpha(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_allows_spec_alpha(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { GLenum error; DWORD data[16]; @@ -634,14 +642,16 @@ static BOOL match_allows_spec_alpha(const struct wined3d_gl_info *gl_info, const } } -static BOOL match_apple_nvts(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_apple_nvts(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { - if(!match_apple(gl_info, gl_renderer)) return FALSE; + if (!match_apple(gl_info, gl_renderer, vendor, device)) return FALSE; return GL_SUPPORT(NV_TEXTURE_SHADER); } /* A GL context is provided by the caller */ -static BOOL match_broken_nv_clip(const struct wined3d_gl_info *gl_info, const char *gl_renderer) +static BOOL match_broken_nv_clip(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { GLuint prog; BOOL ret = FALSE; @@ -817,7 +827,8 @@ static void quirk_disable_nvvp_clip(struct wined3d_gl_info *gl_info) struct driver_quirk { - BOOL (*match)(const struct wined3d_gl_info *gl_info, const char *gl_renderer); + BOOL (*match)(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device); void (*apply)(struct wined3d_gl_info *gl_info); const char *description; }; @@ -963,10 +974,13 @@ static const struct driver_version_information driver_version_table[] = /* TODO: Add information about legacy ATI hardware, Intel and other cards. */ }; -static void init_driver_info(struct wined3d_driver_info *driver_info, WORD vendor, WORD device) +static void init_driver_info(struct wined3d_driver_info *driver_info, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { unsigned int i; + driver_info->vendor = vendor; + driver_info->device = device; driver_info->name = "Display"; driver_info->description = "Direct3D HAL"; driver_info->version_high = MAKEDWORD_VERSION(7, 1); @@ -992,13 +1006,14 @@ static void init_driver_info(struct wined3d_driver_info *driver_info, WORD vendo } /* Context activation is done by the caller. */ -static void fixup_extensions(struct wined3d_gl_info *gl_info, const char *gl_renderer) +static void fixup_extensions(struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor vendor, enum wined3d_pci_device device) { unsigned int i; for (i = 0; i < (sizeof(quirk_table) / sizeof(*quirk_table)); ++i) { - if (!quirk_table[i].match(gl_info, gl_renderer)) continue; + if (!quirk_table[i].match(gl_info, gl_renderer, vendor, device)) continue; TRACE_(d3d_caps)("Applying driver quirk \"%s\".\n", quirk_table[i].description); quirk_table[i].apply(gl_info); } @@ -1025,7 +1040,7 @@ static DWORD wined3d_parse_gl_version(const char *gl_version) return MAKEDWORD_VERSION(major, minor); } -static GL_Vendors wined3d_guess_vendor(const char *gl_vendor, const char *gl_renderer) +static enum wined3d_pci_vendor wined3d_guess_vendor(const char *gl_vendor, const char *gl_renderer) { if (strstr(gl_vendor, "NVIDIA")) return VENDOR_NVIDIA; @@ -1048,8 +1063,8 @@ static GL_Vendors wined3d_guess_vendor(const char *gl_vendor, const char *gl_ren return VENDOR_WINE; } -static GL_Cards wined3d_guess_card(const struct wined3d_gl_info *gl_info, const char *gl_renderer, - GL_Vendors *vendor, unsigned int *vidmem) +static enum wined3d_pci_device wined3d_guess_card(const struct wined3d_gl_info *gl_info, const char *gl_renderer, + enum wined3d_pci_vendor *vendor, unsigned int *vidmem) { /* Below is a list of Nvidia and ATI GPUs. Both vendors have dozens of * different GPUs with roughly the same features. In most cases GPUs from a @@ -1517,6 +1532,8 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_driver_info *driver_info, str const char *GL_Extensions = NULL; const char *WGL_Extensions = NULL; const char *gl_string = NULL; + enum wined3d_pci_vendor vendor; + enum wined3d_pci_device device; GLint gl_max; GLfloat gl_floatv[2]; unsigned i; @@ -1558,8 +1575,8 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_driver_info *driver_info, str HeapFree(GetProcessHeap(), 0, gl_renderer); return FALSE; } - gl_info->gl_vendor = wined3d_guess_vendor(gl_string, gl_renderer); - TRACE_(d3d_caps)("found GL_VENDOR (%s)->(0x%04x)\n", debugstr_a(gl_string), gl_info->gl_vendor); + vendor = wined3d_guess_vendor(gl_string, gl_renderer); + TRACE_(d3d_caps)("found GL_VENDOR (%s)->(0x%04x)\n", debugstr_a(gl_string), vendor); /* Parse the GL_VERSION field into major and minor information */ gl_string = (const char *)glGetString(GL_VERSION); @@ -1996,8 +2013,8 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_driver_info *driver_info, str gl_info->max_buffers = 1; } - gl_info->gl_card = wined3d_guess_card(gl_info, gl_renderer, &gl_info->gl_vendor, &vidmem); - TRACE_(d3d_caps)("FOUND (fake) card: 0x%x (vendor id), 0x%x (device id)\n", gl_info->gl_vendor, gl_info->gl_card); + device = wined3d_guess_card(gl_info, gl_renderer, &vendor, &vidmem); + TRACE_(d3d_caps)("FOUND (fake) card: 0x%x (vendor id), 0x%x (device id)\n", vendor, device); /* If we have an estimate use it, else default to 64MB; */ if(vidmem) @@ -2059,8 +2076,8 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_driver_info *driver_info, str } } - fixup_extensions(gl_info, gl_renderer); - init_driver_info(driver_info, gl_info->gl_vendor, gl_info->gl_card); + fixup_extensions(gl_info, gl_renderer, vendor, device); + init_driver_info(driver_info, vendor, device); add_gl_compat_wrappers(gl_info); HeapFree(GetProcessHeap(), 0, gl_renderer); @@ -2330,8 +2347,8 @@ static HRESULT WINAPI IWineD3DImpl_GetAdapterIdentifier(IWineD3D *iface, UINT Ad pIdentifier->driver_version.u.HighPart = adapter->driver_info.version_high; pIdentifier->driver_version.u.LowPart = adapter->driver_info.version_low; - pIdentifier->vendor_id = adapter->gl_info.gl_vendor; - pIdentifier->device_id = adapter->gl_info.gl_card; + pIdentifier->vendor_id = adapter->driver_info.vendor; + pIdentifier->device_id = adapter->driver_info.device; pIdentifier->subsystem_id = 0; pIdentifier->revision = 0; memcpy(&pIdentifier->device_identifier, &IID_D3DDEVICE_D3DUID, sizeof(pIdentifier->device_identifier)); @@ -4688,7 +4705,7 @@ BOOL InitAdapters(IWineD3DImpl *This) WineD3D_ReleaseFakeGLContext(&fake_gl_ctx); goto nogl_adapter; } - ret = initPixelFormats(&adapter->gl_info); + ret = initPixelFormats(&adapter->gl_info, adapter->driver_info.vendor); if(!ret) { ERR("Failed to init gl formats\n"); WineD3D_ReleaseFakeGLContext(&fake_gl_ctx); diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index bbf9109041e..af780b56ca5 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -897,7 +897,7 @@ static BOOL check_filter(const struct wined3d_gl_info *gl_info, GLenum internal) return ret; } -static void init_format_filter_info(struct wined3d_gl_info *gl_info) +static void init_format_filter_info(struct wined3d_gl_info *gl_info, enum wined3d_pci_vendor vendor) { unsigned int fmt_idx, i; WINED3DFORMAT fmts16[] = { @@ -911,7 +911,7 @@ static void init_format_filter_info(struct wined3d_gl_info *gl_info) if(wined3d_settings.offscreen_rendering_mode != ORM_FBO) { WARN("No FBO support, or no FBO ORM, guessing filter info from GL caps\n"); - if(gl_info->gl_vendor == VENDOR_NVIDIA && GL_SUPPORT(ARB_TEXTURE_FLOAT)) + if (vendor == VENDOR_NVIDIA && GL_SUPPORT(ARB_TEXTURE_FLOAT)) { TRACE("Nvidia card with texture_float support: Assuming float16 blending\n"); filtered = TRUE; @@ -1120,7 +1120,7 @@ BOOL initPixelFormatsNoGL(struct wined3d_gl_info *gl_info) } /* Context activation is done by the caller. */ -BOOL initPixelFormats(struct wined3d_gl_info *gl_info) +BOOL initPixelFormats(struct wined3d_gl_info *gl_info, enum wined3d_pci_vendor vendor) { if (!init_format_base_info(gl_info)) return FALSE; @@ -1130,7 +1130,7 @@ BOOL initPixelFormats(struct wined3d_gl_info *gl_info) apply_format_fixups(gl_info); init_format_fbo_compat_info(gl_info); - init_format_filter_info(gl_info); + init_format_filter_info(gl_info, vendor); return TRUE; diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index 7ad25d83764..6536641fe51 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -3461,83 +3461,6 @@ typedef void (WINE_GLAPI * PGLFNVERTEXATTRIBPOINTERPROC) (GLuint index, GLint si /**************************************************** * Enumerated types ****************************************************/ -typedef enum _GL_Vendors { - VENDOR_WINE = 0x0, - VENDOR_MESA = 0x1, - VENDOR_ATI = 0x1002, - VENDOR_NVIDIA = 0x10de, - VENDOR_INTEL = 0x8086 -} GL_Vendors; - -typedef enum _GL_Cards { - CARD_WINE = 0x0, - - CARD_ATI_RAGE_128PRO = 0x5246, - CARD_ATI_RADEON_7200 = 0x5144, - CARD_ATI_RADEON_8500 = 0x514c, - CARD_ATI_RADEON_9500 = 0x4144, - CARD_ATI_RADEON_XPRESS_200M = 0x5955, - CARD_ATI_RADEON_X700 = 0x5e4c, - CARD_ATI_RADEON_X1600 = 0x71c2, - CARD_ATI_RADEON_HD2300 = 0x7210, - CARD_ATI_RADEON_HD2600 = 0x9581, - CARD_ATI_RADEON_HD2900 = 0x9400, - CARD_ATI_RADEON_HD3200 = 0x9620, - CARD_ATI_RADEON_HD4350 = 0x954f, - CARD_ATI_RADEON_HD4550 = 0x9540, - CARD_ATI_RADEON_HD4600 = 0x9495, - CARD_ATI_RADEON_HD4650 = 0x9498, - CARD_ATI_RADEON_HD4670 = 0x9490, - CARD_ATI_RADEON_HD4700 = 0x944e, - CARD_ATI_RADEON_HD4770 = 0x94b3, - CARD_ATI_RADEON_HD4800 = 0x944c, /* picked one value between 9440,944c,9442,9460 */ - CARD_ATI_RADEON_HD4830 = 0x944c, - CARD_ATI_RADEON_HD4850 = 0x9442, - CARD_ATI_RADEON_HD4870 = 0x9440, - CARD_ATI_RADEON_HD4890 = 0x9460, - - CARD_NVIDIA_RIVA_128 = 0x0018, - CARD_NVIDIA_RIVA_TNT = 0x0020, - CARD_NVIDIA_RIVA_TNT2 = 0x0028, - CARD_NVIDIA_GEFORCE = 0x0100, - CARD_NVIDIA_GEFORCE2_MX = 0x0110, - CARD_NVIDIA_GEFORCE2 = 0x0150, - CARD_NVIDIA_GEFORCE3 = 0x0200, - CARD_NVIDIA_GEFORCE4_MX = 0x0170, - CARD_NVIDIA_GEFORCE4_TI4200 = 0x0253, - CARD_NVIDIA_GEFORCEFX_5200 = 0x0320, - CARD_NVIDIA_GEFORCEFX_5600 = 0x0312, - CARD_NVIDIA_GEFORCEFX_5800 = 0x0302, - CARD_NVIDIA_GEFORCE_6200 = 0x014f, - CARD_NVIDIA_GEFORCE_6600GT = 0x0140, - CARD_NVIDIA_GEFORCE_6800 = 0x0041, - CARD_NVIDIA_GEFORCE_7400 = 0x01d8, - CARD_NVIDIA_GEFORCE_7300 = 0x01d7, /* GeForce Go 7300 */ - CARD_NVIDIA_GEFORCE_7600 = 0x0391, - CARD_NVIDIA_GEFORCE_7800GT = 0x0092, - CARD_NVIDIA_GEFORCE_8300GS = 0x0423, - CARD_NVIDIA_GEFORCE_8600GT = 0x0402, - CARD_NVIDIA_GEFORCE_8600MGT = 0x0407, - CARD_NVIDIA_GEFORCE_8800GTS = 0x0193, - CARD_NVIDIA_GEFORCE_9200 = 0x086d, - CARD_NVIDIA_GEFORCE_9400GT = 0x042c, - CARD_NVIDIA_GEFORCE_9500GT = 0x0640, - CARD_NVIDIA_GEFORCE_9600GT = 0x0622, - CARD_NVIDIA_GEFORCE_9800GT = 0x0614, - CARD_NVIDIA_GEFORCE_GTX260 = 0x05e2, - CARD_NVIDIA_GEFORCE_GTX275 = 0x05e6, - CARD_NVIDIA_GEFORCE_GTX280 = 0x05e1, - - 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 GMA 965? */ -} GL_Cards; - #define WINE_DEFAULT_VIDMEM 64*1024*1024 #define MAKEDWORD_VERSION(maj, min) ((maj & 0x0000FFFF) << 16) | (min & 0x0000FFFF) @@ -4138,8 +4061,6 @@ struct wined3d_fbo_ops struct wined3d_gl_info { - GL_Vendors gl_vendor; - GL_Cards gl_card; UINT vidmem; UINT max_buffers; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 98fea80fff6..79bf95d49bf 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1228,8 +1228,89 @@ typedef struct WineD3D_PixelFormat int numSamples; } WineD3D_PixelFormat; +enum wined3d_pci_vendor +{ + VENDOR_WINE = 0x0000, + VENDOR_MESA = 0x0001, + VENDOR_ATI = 0x1002, + VENDOR_NVIDIA = 0x10de, + VENDOR_INTEL = 0x8086, +}; + +enum wined3d_pci_device +{ + CARD_WINE = 0x0000, + + CARD_ATI_RAGE_128PRO = 0x5246, + CARD_ATI_RADEON_7200 = 0x5144, + CARD_ATI_RADEON_8500 = 0x514c, + CARD_ATI_RADEON_9500 = 0x4144, + CARD_ATI_RADEON_XPRESS_200M = 0x5955, + CARD_ATI_RADEON_X700 = 0x5e4c, + CARD_ATI_RADEON_X1600 = 0x71c2, + CARD_ATI_RADEON_HD2300 = 0x7210, + CARD_ATI_RADEON_HD2600 = 0x9581, + CARD_ATI_RADEON_HD2900 = 0x9400, + CARD_ATI_RADEON_HD3200 = 0x9620, + CARD_ATI_RADEON_HD4350 = 0x954f, + CARD_ATI_RADEON_HD4550 = 0x9540, + CARD_ATI_RADEON_HD4600 = 0x9495, + CARD_ATI_RADEON_HD4650 = 0x9498, + CARD_ATI_RADEON_HD4670 = 0x9490, + CARD_ATI_RADEON_HD4700 = 0x944e, + CARD_ATI_RADEON_HD4770 = 0x94b3, + CARD_ATI_RADEON_HD4800 = 0x944c, /* Picked one value between 9440, 944c, 9442, 9460 */ + CARD_ATI_RADEON_HD4830 = 0x944c, + CARD_ATI_RADEON_HD4850 = 0x9442, + CARD_ATI_RADEON_HD4870 = 0x9440, + CARD_ATI_RADEON_HD4890 = 0x9460, + + CARD_NVIDIA_RIVA_128 = 0x0018, + CARD_NVIDIA_RIVA_TNT = 0x0020, + CARD_NVIDIA_RIVA_TNT2 = 0x0028, + CARD_NVIDIA_GEFORCE = 0x0100, + CARD_NVIDIA_GEFORCE2_MX = 0x0110, + CARD_NVIDIA_GEFORCE2 = 0x0150, + CARD_NVIDIA_GEFORCE3 = 0x0200, + CARD_NVIDIA_GEFORCE4_MX = 0x0170, + CARD_NVIDIA_GEFORCE4_TI4200 = 0x0253, + CARD_NVIDIA_GEFORCEFX_5200 = 0x0320, + CARD_NVIDIA_GEFORCEFX_5600 = 0x0312, + CARD_NVIDIA_GEFORCEFX_5800 = 0x0302, + CARD_NVIDIA_GEFORCE_6200 = 0x014f, + CARD_NVIDIA_GEFORCE_6600GT = 0x0140, + CARD_NVIDIA_GEFORCE_6800 = 0x0041, + CARD_NVIDIA_GEFORCE_7400 = 0x01d8, + CARD_NVIDIA_GEFORCE_7300 = 0x01d7, /* GeForce Go 7300 */ + CARD_NVIDIA_GEFORCE_7600 = 0x0391, + CARD_NVIDIA_GEFORCE_7800GT = 0x0092, + CARD_NVIDIA_GEFORCE_8300GS = 0x0423, + CARD_NVIDIA_GEFORCE_8600GT = 0x0402, + CARD_NVIDIA_GEFORCE_8600MGT = 0x0407, + CARD_NVIDIA_GEFORCE_8800GTS = 0x0193, + CARD_NVIDIA_GEFORCE_9200 = 0x086d, + CARD_NVIDIA_GEFORCE_9400GT = 0x042c, + CARD_NVIDIA_GEFORCE_9500GT = 0x0640, + CARD_NVIDIA_GEFORCE_9600GT = 0x0622, + CARD_NVIDIA_GEFORCE_9800GT = 0x0614, + CARD_NVIDIA_GEFORCE_GTX260 = 0x05e2, + CARD_NVIDIA_GEFORCE_GTX275 = 0x05e6, + CARD_NVIDIA_GEFORCE_GTX280 = 0x05e1, + + 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 GMA 965? */ +}; + struct wined3d_driver_info { + enum wined3d_pci_vendor vendor; + enum wined3d_pci_device device; const char *name; const char *description; DWORD version_high; @@ -1252,7 +1333,7 @@ struct wined3d_adapter unsigned int UsedTextureRam; }; -extern BOOL initPixelFormats(struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN; +BOOL initPixelFormats(struct wined3d_gl_info *gl_info, enum wined3d_pci_vendor vendor) DECLSPEC_HIDDEN; BOOL initPixelFormatsNoGL(struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN; extern long WineD3DAdapterChangeGLRam(IWineD3DDeviceImpl *D3DDevice, long glram) DECLSPEC_HIDDEN; extern void add_gl_compat_wrappers(struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;