(try2)Fix ATI HD4800 being reported as ATI 9500

Roderick Colenbrander thunderbird2k at gmail.com
Fri May 15 03:09:44 CDT 2009


The patch itself is correct but the comment regarding the X2 4800 is
incorrect. Those cards indeed have 2GB of video memory (and the PR
people mention that to you) but the boards contain two GPUs and both
need a have a copy of textures and other resources (though the GPUs
can communicate using a high speed bus). Effectively the amount of
video memory is still 1GB.

Roderick

On Fri, May 15, 2009 at 2:29 AM, Robert Key <hpestilence at gmail.com> wrote:
> Changelog:
> * Added support for the ATI HD 4800 series (should be all of them).
>   Used a HD4830 device id for HD4800 cards in wined3d_gl.h.
>
>
>
>
-------------- next part --------------
From 8034f52551451a8db2440ac4908ff325bae7b04d Mon Sep 17 00:00:00 2001
From: Robert Key <hpestilence at gmail.com>
Date: Thu, 14 May 2009 19:14:02 -0400
Subject: Fix ATI HD4800 being reported as ATI 9500

---
 dlls/wined3d/directx.c    |   17 ++++++++++++++---
 dlls/wined3d/wined3d_gl.h |    1 +
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 8e3c807..ad192c0 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -1271,10 +1271,20 @@ static BOOL IWineD3DImpl_FillGLCaps(WineD3D_GL_Info *gl_info) {
             break;
         case VENDOR_ATI:
             if(WINE_D3D9_CAPABLE(gl_info)) {
+                /* Radeon R7xx HD4800 - highend */
+                if (strstr(gl_info->gl_renderer, "HD 4800") ||
+                    strstr(gl_info->gl_renderer, "HD 4830") ||
+                    strstr(gl_info->gl_renderer, "HD 4850") ||
+                    strstr(gl_info->gl_renderer, "HD 4870") ||
+                    strstr(gl_info->gl_renderer, "HD 4890"))
+                {
+                    gl_info->gl_card = CARD_ATI_RADEON_HD4800;
+                    vidmem = 512; /* HD4800 cards use 512-1024MB, up to 2048MB for X2 version */
+                }
                 /* Radeon R6xx HD2900/HD3800 - highend */
-                if (strstr(gl_info->gl_renderer, "HD 2900") ||
-                    strstr(gl_info->gl_renderer, "HD 3870") ||
-                    strstr(gl_info->gl_renderer, "HD 3850"))
+                else if (strstr(gl_info->gl_renderer, "HD 2900") ||
+                         strstr(gl_info->gl_renderer, "HD 3870") ||
+                         strstr(gl_info->gl_renderer, "HD 3850"))
                 {
                     gl_info->gl_card = CARD_ATI_RADEON_HD2900;
                     vidmem = 512; /* HD2900/HD3800 uses 256-1024MB */
@@ -4007,6 +4017,7 @@ static const struct driver_version_information driver_version_table[] = {
     {VENDOR_ATI,        CARD_ATI_RADEON_HD2300,         "ATI Mobility Radeon HD 2300",      6,  14, 10, 6764    },
     {VENDOR_ATI,        CARD_ATI_RADEON_HD2600,         "ATI Mobility Radeon HD 2600",      6,  14, 10, 6764    },
     {VENDOR_ATI,        CARD_ATI_RADEON_HD2900,         "ATI Radeon HD 2900 XT",            6,  14, 10, 6764    },
+    {VENDOR_ATI,        CARD_ATI_RADEON_HD4800,         "ATI Radeon HD 4800 Series",        6,  14, 10, 6764    },
 
     /* TODO: Add information about legacy ATI hardware, Intel and other cards */
 };
diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h
index 1a9c925..615d914 100644
--- a/dlls/wined3d/wined3d_gl.h
+++ b/dlls/wined3d/wined3d_gl.h
@@ -3302,6 +3302,7 @@ typedef enum _GL_Cards {
   CARD_ATI_RADEON_HD2600          = 0x9581,
   CARD_ATI_RADEON_HD2900          = 0x9400,
   CARD_ATI_RADEON_HD3200          = 0x9620,
+  CARD_ATI_RADEON_HD4800          = 0x944c,
 
   CARD_NVIDIA_RIVA_128            = 0x0018,
   CARD_NVIDIA_RIVA_TNT            = 0x0020,
-- 
1.6.3


More information about the wine-devel mailing list