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;