Mercurial > mplayer.hg
comparison vidix/drivers/radeon_vid.c @ 8521:8996a4599a41
the long awaited pink screen + shift fix for radeon, based on patch by Svante Signell <svante.signell@telia.com>, Carl (mlist.mplayer.users@urs.us) and Nick Kurshve <nickolsk@yandex.ru>
author | alex |
---|---|
date | Sun, 22 Dec 2002 14:59:41 +0000 |
parents | 3f5788602dfd |
children | d952b097c720 |
comparison
equal
deleted
inserted
replaced
8520:602cf042a013 | 8521:8996a4599a41 |
---|---|
21 #ifdef RAGE128 | 21 #ifdef RAGE128 |
22 #define RADEON_MSG "Rage128_vid:" | 22 #define RADEON_MSG "Rage128_vid:" |
23 #define X_ADJUST 0 | 23 #define X_ADJUST 0 |
24 #else | 24 #else |
25 #define RADEON_MSG "Radeon_vid:" | 25 #define RADEON_MSG "Radeon_vid:" |
26 #define X_ADJUST (!IsR200 ? 8 : 0) | 26 #define X_ADJUST (is_shift_required ? 8 : 0) |
27 #ifndef RADEON | 27 #ifndef RADEON |
28 #define RADEON | 28 #define RADEON |
29 #endif | 29 #endif |
30 #endif | 30 #endif |
31 | 31 |
32 static int __verbose = 0; | 32 static int __verbose = 0; |
33 #ifdef RADEON | |
34 static int rage_ckey_model=0; | |
35 static int is_shift_required; | |
36 #endif | |
33 | 37 |
34 typedef struct bes_registers_s | 38 typedef struct bes_registers_s |
35 { | 39 { |
36 /* base address of yuv framebuffer */ | 40 /* base address of yuv framebuffer */ |
37 uint32_t yuv_base; | 41 uint32_t yuv_base; |
925 memset(&besr,0,sizeof(bes_registers_t)); | 929 memset(&besr,0,sizeof(bes_registers_t)); |
926 radeon_vid_make_default(); | 930 radeon_vid_make_default(); |
927 printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000); | 931 printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000); |
928 err = mtrr_set_type(pci_info.base0,radeon_ram_size,MTRR_TYPE_WRCOMB); | 932 err = mtrr_set_type(pci_info.base0,radeon_ram_size,MTRR_TYPE_WRCOMB); |
929 if(!err) printf(RADEON_MSG" Set write-combining type of video memory\n"); | 933 if(!err) printf(RADEON_MSG" Set write-combining type of video memory\n"); |
934 | |
935 #ifdef RADEON | |
936 switch(def_cap.device_id) | |
937 { | |
938 case DEVICE_ATI_RADEON_QW: | |
939 case DEVICE_ATI_RADEON_MOBILITY_M6: | |
940 case DEVICE_ATI_RADEON_MOBILITY_M62: | |
941 case DEVICE_ATI_RADEON_MOBILITY_M63: | |
942 case DEVICE_ATI_RADEON_MOBILITY_M64: | |
943 rage_ckey_model=1; | |
944 is_shift_required=1; | |
945 break; | |
946 case DEVICE_ATI_RADEON_QD: | |
947 case DEVICE_ATI_RADEON_QE: | |
948 case DEVICE_ATI_RADEON_QF: | |
949 case DEVICE_ATI_RADEON_QG: | |
950 case DEVICE_ATI_RADEON_VE_QY: | |
951 case DEVICE_ATI_RADEON_VE_QZ: | |
952 is_shift_required=1; | |
953 break; | |
954 default: break; | |
955 } | |
956 #endif | |
957 | |
930 if(__verbose > 1) radeon_vid_dump_regs(); | 958 if(__verbose > 1) radeon_vid_dump_regs(); |
931 return 0; | 959 return 0; |
932 } | 960 } |
933 | 961 |
934 void vixDestroy( void ) | 962 void vixDestroy( void ) |
1676 #ifdef RAGE128 | 1704 #ifdef RAGE128 |
1677 besr.graphics_key_msk=(1<<dbpp)-1; | 1705 besr.graphics_key_msk=(1<<dbpp)-1; |
1678 besr.ckey_cntl = VIDEO_KEY_FN_TRUE|GRAPHIC_KEY_FN_NE|CMP_MIX_AND; | 1706 besr.ckey_cntl = VIDEO_KEY_FN_TRUE|GRAPHIC_KEY_FN_NE|CMP_MIX_AND; |
1679 #else | 1707 #else |
1680 besr.graphics_key_msk=besr.graphics_key_clr; | 1708 besr.graphics_key_msk=besr.graphics_key_clr; |
1681 besr.ckey_cntl = VIDEO_KEY_FN_TRUE|GRAPHIC_KEY_FN_EQ|CMP_MIX_AND; | 1709 besr.ckey_cntl = VIDEO_KEY_FN_TRUE|CMP_MIX_AND; |
1710 if(rage_ckey_model) | |
1711 besr.ckey_cntl |= GRAPHIC_KEY_FN_NE; | |
1712 else | |
1713 besr.ckey_cntl |= GRAPHIC_KEY_FN_EQ; | |
1682 #endif | 1714 #endif |
1683 } | 1715 } |
1684 else | 1716 else |
1685 { | 1717 { |
1686 besr.ckey_on=0; | 1718 besr.ckey_on=0; |