Module: wine Branch: master Commit: 4503d0cb4b4fa5ab5857980ab232bf7bedfd6cc6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4503d0cb4b4fa5ab5857980ab2...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Nov 10 10:53:00 2010 +0100
wined3d: Use a lookup table in select_card_ati_binary().
---
dlls/wined3d/directx.c | 124 ++++++++++++++++++------------------------------ 1 files changed, 47 insertions(+), 77 deletions(-)
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 7ceb742..4485491 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -1578,89 +1578,59 @@ static enum wined3d_pci_device select_card_ati_binary(const struct wined3d_gl_in * eg HD 4800 is returned for multiple cards, even for RV790 based ones. */ if (WINE_D3D10_CAPABLE(gl_info)) { - /* Radeon EG CYPRESS XT / PRO HD5800 - highend */ - if (strstr(gl_renderer, "HD 5800") /* Radeon EG CYPRESS HD58xx generic renderer string */ - || strstr(gl_renderer, "HD 5850") /* Radeon EG CYPRESS XT */ - || strstr(gl_renderer, "HD 5870")) /* Radeon EG CYPRESS PRO */ - { - return CARD_ATI_RADEON_HD5800; - } - - /* Radeon EG JUNIPER XT / LE HD5700 - midend */ - if (strstr(gl_renderer, "HD 5700") /* Radeon EG JUNIPER HD57xx generic renderer string */ - || strstr(gl_renderer, "HD 5750") /* Radeon EG JUNIPER LE */ - || strstr(gl_renderer, "HD 5770")) /* Radeon EG JUNIPER XT */ - { - return CARD_ATI_RADEON_HD5700; - } - - /* Radeon R7xx HD4800 - highend */ - if (strstr(gl_renderer, "HD 4800") /* Radeon RV7xx HD48xx generic renderer string */ - || strstr(gl_renderer, "HD 4830") /* Radeon RV770 */ - || strstr(gl_renderer, "HD 4850") /* Radeon RV770 */ - || strstr(gl_renderer, "HD 4870") /* Radeon RV770 */ - || strstr(gl_renderer, "HD 4890")) /* Radeon RV790 */ - { - return CARD_ATI_RADEON_HD4800; - } - - /* Radeon R740 HD4700 - midend */ - if (strstr(gl_renderer, "HD 4700") /* Radeon RV770 */ - || strstr(gl_renderer, "HD 4770")) /* Radeon RV740 */ - { - return CARD_ATI_RADEON_HD4700; - } - - /* Radeon R730 HD4600 - midend */ - if (strstr(gl_renderer, "HD 4600") /* Radeon RV730 */ - || strstr(gl_renderer, "HD 4650") /* Radeon RV730 */ - || strstr(gl_renderer, "HD 4670")) /* Radeon RV730 */ - { - return CARD_ATI_RADEON_HD4600; - } - - /* Radeon R710 HD4500/HD4350 - lowend */ - if (strstr(gl_renderer, "HD 4350") /* Radeon RV710 */ - || strstr(gl_renderer, "HD 4550")) /* Radeon RV710 */ - { - return CARD_ATI_RADEON_HD4350; - } - - /* Radeon R6xx HD2900/HD3800 - highend */ - if (strstr(gl_renderer, "HD 2900") - || strstr(gl_renderer, "HD 3870") - || strstr(gl_renderer, "HD 3850")) - { - return CARD_ATI_RADEON_HD2900; - } + unsigned int i;
- /* Radeon R6xx HD2600/HD3600 - midend; HD3830 is China-only midend */ - if (strstr(gl_renderer, "HD 2600") - || strstr(gl_renderer, "HD 3830") - || strstr(gl_renderer, "HD 3690") - || strstr(gl_renderer, "HD 3650")) + static const struct { - return CARD_ATI_RADEON_HD2600; + const char *renderer; + enum wined3d_pci_device id; } - - /* Radeon R6xx HD2350/HD2400/HD3400 - lowend - * Note HD2300=DX9, HD2350=DX10 */ - if (strstr(gl_renderer, "HD 2350") - || strstr(gl_renderer, "HD 2400") - || strstr(gl_renderer, "HD 3470") - || strstr(gl_renderer, "HD 3450") - || strstr(gl_renderer, "HD 3430") - || strstr(gl_renderer, "HD 3400")) + cards[] = { - return CARD_ATI_RADEON_HD2350; - } + /* Evergreen */ + {"HD 5870", CARD_ATI_RADEON_HD5800}, /* Radeon EG CYPRESS PRO */ + {"HD 5850", CARD_ATI_RADEON_HD5800}, /* Radeon EG CYPRESS XT */ + {"HD 5800", CARD_ATI_RADEON_HD5800}, /* Radeon EG CYPRESS HD58xx generic renderer string */ + {"HD 5770", CARD_ATI_RADEON_HD5700}, /* Radeon EG JUNIPER XT */ + {"HD 5750", CARD_ATI_RADEON_HD5700}, /* Radeon EG JUNIPER LE */ + {"HD 5700", CARD_ATI_RADEON_HD5700}, /* Radeon EG JUNIPER HD57xx generic renderer string */ + /* R700 */ + {"HD 4890", CARD_ATI_RADEON_HD4800}, /* Radeon RV790 */ + {"HD 4870", CARD_ATI_RADEON_HD4800}, /* Radeon RV770 */ + {"HD 4850", CARD_ATI_RADEON_HD4800}, /* Radeon RV770 */ + {"HD 4830", CARD_ATI_RADEON_HD4800}, /* Radeon RV770 */ + {"HD 4800", CARD_ATI_RADEON_HD4800}, /* Radeon RV7xx HD48xx generic renderer string */ + {"HD 4770", CARD_ATI_RADEON_HD4700}, /* Radeon RV740 */ + {"HD 4700", CARD_ATI_RADEON_HD4700}, /* Radeon RV7xx HD47xx generic renderer string */ + {"HD 4670", CARD_ATI_RADEON_HD4600}, /* Radeon RV730 */ + {"HD 4650", CARD_ATI_RADEON_HD4600}, /* Radeon RV730 */ + {"HD 4600", CARD_ATI_RADEON_HD4600}, /* Radeon RV730 */ + {"HD 4550", CARD_ATI_RADEON_HD4350}, /* Radeon RV710 */ + {"HD 4350", CARD_ATI_RADEON_HD4350}, /* Radeon RV710 */ + /* R600/R700 integrated */ + {"HD 3300", CARD_ATI_RADEON_HD3200}, + {"HD 3200", CARD_ATI_RADEON_HD3200}, + {"HD 3100", CARD_ATI_RADEON_HD3200}, + /* R600 */ + {"HD 3870", CARD_ATI_RADEON_HD2900}, /* HD2900/HD3800 - highend */ + {"HD 3850", CARD_ATI_RADEON_HD2900}, /* HD2900/HD3800 - highend */ + {"HD 2900", CARD_ATI_RADEON_HD2900}, /* HD2900/HD3800 - highend */ + {"HD 3830", CARD_ATI_RADEON_HD2600}, /* China-only midend */ + {"HD 3690", CARD_ATI_RADEON_HD2600}, /* HD2600/HD3600 - midend */ + {"HD 3650", CARD_ATI_RADEON_HD2600}, /* HD2600/HD3600 - midend */ + {"HD 2600", CARD_ATI_RADEON_HD2600}, /* HD2600/HD3600 - midend */ + {"HD 3470", CARD_ATI_RADEON_HD2350}, /* HD2350/HD2400/HD3400 - lowend */ + {"HD 3450", CARD_ATI_RADEON_HD2350}, /* HD2350/HD2400/HD3400 - lowend */ + {"HD 3430", CARD_ATI_RADEON_HD2350}, /* HD2350/HD2400/HD3400 - lowend */ + {"HD 3400", CARD_ATI_RADEON_HD2350}, /* HD2350/HD2400/HD3400 - lowend */ + {"HD 2400", CARD_ATI_RADEON_HD2350}, /* HD2350/HD2400/HD3400 - lowend */ + {"HD 2350", CARD_ATI_RADEON_HD2350}, /* HD2350/HD2400/HD3400 - lowend */ + };
- /* Radeon R6xx/R7xx integrated */ - if (strstr(gl_renderer, "HD 3100") - || strstr(gl_renderer, "HD 3200") - || strstr(gl_renderer, "HD 3300")) + for (i = 0; i < sizeof(cards) / sizeof(*cards); ++i) { - return CARD_ATI_RADEON_HD3200; + if (strstr(gl_renderer, cards[i].renderer)) + return cards[i].id; }
/* Default for when no GPU has been found */