Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
74a059d2
Commit
74a059d2
authored
Mar 01, 2010
by
Paul Andrew Panon
Committed by
Alexandre Julliard
Mar 03, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Add Mesa ATI card detection code.
parent
85b07b9d
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
237 additions
and
2 deletions
+237
-2
directx.c
dlls/wined3d/directx.c
+237
-2
No files found.
dlls/wined3d/directx.c
View file @
74a059d2
...
...
@@ -1139,10 +1139,13 @@ static enum wined3d_gl_vendor wined3d_guess_gl_vendor(struct wined3d_gl_info *gl
return
GL_VENDOR_INTEL
;
if
(
strstr
(
gl_vendor_string
,
"Mesa"
)
||
strstr
(
gl_vendor_string
,
"Advanced Micro Devices, Inc."
)
||
strstr
(
gl_vendor_string
,
"DRI R300 Project"
)
||
strstr
(
gl_vendor_string
,
"X.Org R300 Project"
)
||
strstr
(
gl_vendor_string
,
"Tungsten Graphics, Inc"
)
||
strstr
(
gl_vendor_string
,
"VMware, Inc."
)
||
strstr
(
gl_renderer
,
"Mesa"
))
||
strstr
(
gl_renderer
,
"Mesa"
)
||
strstr
(
gl_renderer
,
"Gallium"
))
return
GL_VENDOR_MESA
;
FIXME_
(
d3d_caps
)(
"Received unrecognized GL_VENDOR %s. Returning GL_VENDOR_WINE.
\n
"
,
debugstr_a
(
gl_vendor_string
));
...
...
@@ -1156,6 +1159,7 @@ static enum wined3d_pci_vendor wined3d_guess_card_vendor(const char *gl_vendor_s
return
HW_VENDOR_NVIDIA
;
if
(
strstr
(
gl_vendor_string
,
"ATI"
)
||
strstr
(
gl_vendor_string
,
"Advanced Micro Devices, Inc."
)
||
strstr
(
gl_vendor_string
,
"DRI R300 Project"
))
return
HW_VENDOR_ATI
;
...
...
@@ -1602,6 +1606,234 @@ enum wined3d_pci_device select_card_intel_binary(const struct wined3d_gl_info *g
}
enum
wined3d_pci_device
(
select_card_ati_mesa
)(
const
struct
wined3d_gl_info
*
gl_info
,
const
char
*
gl_renderer
,
unsigned
int
*
vidmem
)
{
/* See http://developer.amd.com/drivers/pc_vendor_id/Pages/default.aspx
*
* Beware: renderer string do not match exact card model,
* eg HD 4800 is returned for multiple cards, even for RV790 based ones. */
if
(
strstr
(
gl_renderer
,
"Gallium"
))
{
/* Radeon R7xx HD4800 - highend */
if
(
strstr
(
gl_renderer
,
"R700"
)
/* Radeon R7xx HD48xx generic renderer string */
||
strstr
(
gl_renderer
,
"RV770"
)
/* Radeon RV770 */
||
strstr
(
gl_renderer
,
"RV790"
))
/* Radeon RV790 */
{
*
vidmem
=
512
;
/* note: HD4890 cards use 1024MB */
return
CARD_ATI_RADEON_HD4800
;
}
/* Radeon R740 HD4700 - midend */
if
(
strstr
(
gl_renderer
,
"RV740"
))
/* Radeon RV740 */
{
*
vidmem
=
512
;
return
CARD_ATI_RADEON_HD4700
;
}
/* Radeon R730 HD4600 - midend */
if
(
strstr
(
gl_renderer
,
"RV730"
))
/* Radeon RV730 */
{
*
vidmem
=
512
;
return
CARD_ATI_RADEON_HD4600
;
}
/* Radeon R710 HD4500/HD4350 - lowend */
if
(
strstr
(
gl_renderer
,
"RV710"
))
/* Radeon RV710 */
{
*
vidmem
=
256
;
return
CARD_ATI_RADEON_HD4350
;
}
/* Radeon R6xx HD2900/HD3800 - highend */
if
(
strstr
(
gl_renderer
,
"R600"
)
||
strstr
(
gl_renderer
,
"RV670"
)
||
strstr
(
gl_renderer
,
"R680"
))
{
*
vidmem
=
512
;
/* HD2900/HD3800 uses 256-1024MB */
return
CARD_ATI_RADEON_HD2900
;
}
/* Radeon R6xx HD2600/HD3600 - midend; HD3830 is China-only midend */
if
(
strstr
(
gl_renderer
,
"RV630"
)
||
strstr
(
gl_renderer
,
"RV635"
))
{
*
vidmem
=
256
;
/* HD2600/HD3600 uses 256-512MB */
return
CARD_ATI_RADEON_HD2600
;
}
/* Radeon R6xx HD2300/HD2400/HD3400 - lowend */
if
(
strstr
(
gl_renderer
,
"RV610"
)
||
strstr
(
gl_renderer
,
"RV620"
))
{
*
vidmem
=
128
;
/* HD2300 uses at least 128MB, HD2400 uses 256MB */
return
CARD_ATI_RADEON_HD2300
;
}
/* Radeon R6xx/R7xx integrated */
if
(
strstr
(
gl_renderer
,
"RS780"
)
||
strstr
(
gl_renderer
,
"RS880"
))
{
*
vidmem
=
128
;
/* 128MB */
return
CARD_ATI_RADEON_HD3200
;
}
/* Radeon R5xx */
if
(
strstr
(
gl_renderer
,
"RV530"
)
||
strstr
(
gl_renderer
,
"RV535"
)
||
strstr
(
gl_renderer
,
"RV560"
)
||
strstr
(
gl_renderer
,
"R520"
)
||
strstr
(
gl_renderer
,
"RV570"
)
||
strstr
(
gl_renderer
,
"R580"
))
{
*
vidmem
=
128
;
/* X1600 uses 128-256MB, >=X1800 uses 256MB */
return
CARD_ATI_RADEON_X1600
;
}
/* Radeon R4xx + X1300/X1400/X1450/X1550/X2300 (lowend R5xx) */
if
(
strstr
(
gl_renderer
,
"R410"
)
||
strstr
(
gl_renderer
,
"R420"
)
||
strstr
(
gl_renderer
,
"R423"
)
||
strstr
(
gl_renderer
,
"R430"
)
||
strstr
(
gl_renderer
,
"R480"
)
||
strstr
(
gl_renderer
,
"R481"
)
||
strstr
(
gl_renderer
,
"RV410"
)
||
strstr
(
gl_renderer
,
"RV515"
)
||
strstr
(
gl_renderer
,
"RV516"
))
{
*
vidmem
=
128
;
/* x700/x8*0 use 128-256MB, >=x1300 128-512MB */
return
CARD_ATI_RADEON_X700
;
}
/* Radeon Xpress Series - onboard, DX9b, Shader 2.0, 300-400MHz */
if
(
strstr
(
gl_renderer
,
"RS400"
)
||
strstr
(
gl_renderer
,
"RS480"
)
||
strstr
(
gl_renderer
,
"RS482"
)
||
strstr
(
gl_renderer
,
"RS485"
)
||
strstr
(
gl_renderer
,
"RS600"
)
||
strstr
(
gl_renderer
,
"RS690"
)
||
strstr
(
gl_renderer
,
"RS740"
))
{
*
vidmem
=
64
;
/* Shared RAM, BIOS configurable, 64-256M */
return
CARD_ATI_RADEON_XPRESS_200M
;
}
/* Radeon R3xx */
if
(
strstr
(
gl_renderer
,
"R300"
)
||
strstr
(
gl_renderer
,
"RV350"
)
||
strstr
(
gl_renderer
,
"RV351"
)
||
strstr
(
gl_renderer
,
"RV360"
)
||
strstr
(
gl_renderer
,
"RV370"
)
||
strstr
(
gl_renderer
,
"R350"
)
||
strstr
(
gl_renderer
,
"R360"
))
{
*
vidmem
=
64
;
/* Radeon 9500 uses 64MB, higher models use up to 256MB */
return
CARD_ATI_RADEON_9500
;
/* Radeon 9500/9550/9600/9700/9800/X300/X550/X600 */
}
}
if
(
WINE_D3D9_CAPABLE
(
gl_info
))
{
/* Radeon R7xx HD4800 - highend */
if
(
strstr
(
gl_renderer
,
"(R700"
)
/* Radeon R7xx HD48xx generic renderer string */
||
strstr
(
gl_renderer
,
"(RV770"
)
/* Radeon RV770 */
||
strstr
(
gl_renderer
,
"(RV790"
))
/* Radeon RV790 */
{
*
vidmem
=
512
;
/* note: HD4890 cards use 1024MB */
return
CARD_ATI_RADEON_HD4800
;
}
/* Radeon R740 HD4700 - midend */
if
(
strstr
(
gl_renderer
,
"(RV740"
))
/* Radeon RV740 */
{
*
vidmem
=
512
;
return
CARD_ATI_RADEON_HD4700
;
}
/* Radeon R730 HD4600 - midend */
if
(
strstr
(
gl_renderer
,
"(RV730"
))
/* Radeon RV730 */
{
*
vidmem
=
512
;
return
CARD_ATI_RADEON_HD4600
;
}
/* Radeon R710 HD4500/HD4350 - lowend */
if
(
strstr
(
gl_renderer
,
"(RV710"
))
/* Radeon RV710 */
{
*
vidmem
=
256
;
return
CARD_ATI_RADEON_HD4350
;
}
/* Radeon R6xx HD2900/HD3800 - highend */
if
(
strstr
(
gl_renderer
,
"(R600"
)
||
strstr
(
gl_renderer
,
"(RV670"
)
||
strstr
(
gl_renderer
,
"(R680"
))
{
*
vidmem
=
512
;
/* HD2900/HD3800 uses 256-1024MB */
return
CARD_ATI_RADEON_HD2900
;
}
/* Radeon R6xx HD2600/HD3600 - midend; HD3830 is China-only midend */
if
(
strstr
(
gl_renderer
,
"(RV630"
)
||
strstr
(
gl_renderer
,
"(RV635"
))
{
*
vidmem
=
256
;
/* HD2600/HD3600 uses 256-512MB */
return
CARD_ATI_RADEON_HD2600
;
}
/* Radeon R6xx HD2300/HD2400/HD3400 - lowend */
if
(
strstr
(
gl_renderer
,
"(RV610"
)
||
strstr
(
gl_renderer
,
"(RV620"
))
{
*
vidmem
=
128
;
/* HD2300 uses at least 128MB, HD2400 uses 256MB */
return
CARD_ATI_RADEON_HD2300
;
}
/* Radeon R6xx/R7xx integrated */
if
(
strstr
(
gl_renderer
,
"(RS780"
)
||
strstr
(
gl_renderer
,
"(RS880"
))
{
*
vidmem
=
128
;
/* 128MB */
return
CARD_ATI_RADEON_HD3200
;
}
}
if
(
WINE_D3D8_CAPABLE
(
gl_info
))
{
*
vidmem
=
64
;
/* 8500/9000 cards use mostly 64MB, though there are 32MB and 128MB models */
return
CARD_ATI_RADEON_8500
;
/* Radeon 8500/9000/9100/9200/9300 */
}
if
(
WINE_D3D7_CAPABLE
(
gl_info
))
{
*
vidmem
=
32
;
/* There are models with up to 64MB */
return
CARD_ATI_RADEON_7200
;
/* Radeon 7000/7100/7200/7500 */
}
*
vidmem
=
16
;
/* There are 16-32MB models */
return
CARD_ATI_RAGE_128PRO
;
}
enum
wined3d_pci_device
(
select_card_nvidia_mesa
)(
const
struct
wined3d_gl_info
*
gl_info
,
const
char
*
gl_renderer
,
unsigned
int
*
vidmem
)
{
FIXME_
(
d3d_caps
)(
"Card selection not handled for Mesa Nouveau driver
\n
"
);
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
;
if
(
WINE_D3D6_CAPABLE
(
gl_info
))
return
CARD_NVIDIA_RIVA_TNT
;
return
CARD_NVIDIA_RIVA_128
;
}
enum
wined3d_pci_device
(
select_card_intel_mesa
)(
const
struct
wined3d_gl_info
*
gl_info
,
const
char
*
gl_renderer
,
unsigned
int
*
vidmem
)
{
FIXME_
(
d3d_caps
)(
"Card selection not handled for Mesa Intel driver
\n
"
);
return
CARD_INTEL_I915G
;
}
struct
vendor_card_selection
{
enum
wined3d_gl_vendor
gl_vendor
;
...
...
@@ -1617,7 +1849,10 @@ static const struct vendor_card_selection vendor_card_select_table[] =
{
GL_VENDOR_APPLE
,
HW_VENDOR_NVIDIA
,
"Apple OSX NVidia binary driver"
,
select_card_nvidia_binary
},
{
GL_VENDOR_APPLE
,
HW_VENDOR_ATI
,
"Apple OSX AMD/ATI binary driver"
,
select_card_ati_binary
},
{
GL_VENDOR_APPLE
,
HW_VENDOR_INTEL
,
"Apple OSX Intel binary driver"
,
select_card_intel_binary
},
{
GL_VENDOR_ATI
,
HW_VENDOR_ATI
,
"AMD/ATI binary driver"
,
select_card_ati_binary
}
{
GL_VENDOR_ATI
,
HW_VENDOR_ATI
,
"AMD/ATI binary driver"
,
select_card_ati_binary
},
{
GL_VENDOR_MESA
,
HW_VENDOR_ATI
,
"Mesa AMD/ATI driver"
,
select_card_ati_mesa
},
{
GL_VENDOR_MESA
,
HW_VENDOR_NVIDIA
,
"Mesa Nouveau driver"
,
select_card_nvidia_mesa
},
{
GL_VENDOR_MESA
,
HW_VENDOR_INTEL
,
"Mesa Intel driver"
,
select_card_intel_mesa
}
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment