summaryrefslogtreecommitdiffstats
path: root/vidix
diff options
context:
space:
mode:
authorfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-14 20:43:39 +0000
committerfaust3 <faust3@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-09-14 20:43:39 +0000
commit6f9cd1674c399bf88ba78e6428e5b6c06ee03eae (patch)
treecf03ce23f6ae9c618c05a468ba4946070c819005 /vidix
parentbb0ca7d6196ff4b7be56bfe0a274ecfcbf5e7bcb (diff)
downloadmpv-6f9cd1674c399bf88ba78e6428e5b6c06ee03eae.tar.bz2
mpv-6f9cd1674c399bf88ba78e6428e5b6c06ee03eae.tar.xz
workaround for Xorg-6.8 not saving the surface registers on bigendian
architectures, patch by Luca Barbato <lu_zero at gentoo.org> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13336 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'vidix')
-rw-r--r--vidix/drivers/radeon_vid.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/vidix/drivers/radeon_vid.c b/vidix/drivers/radeon_vid.c
index db9b77fa7a..88dab54f85 100644
--- a/vidix/drivers/radeon_vid.c
+++ b/vidix/drivers/radeon_vid.c
@@ -1316,6 +1316,37 @@ static void radeon_vid_stop_video( void )
static void radeon_vid_display_video( void )
{
int bes_flags;
+#ifdef WORDS_BIGENDIAN
+#if defined(RAGE128)
+ /* code from gatos */
+ {
+ SAVED_CONFIG_CNTL = INREG(CONFIG_CNTL);
+ OUTREG(CONFIG_CNTL, SAVED_CONFIG_CNTL &
+ ~(APER_0_BIG_ENDIAN_16BPP_SWAP|APER_0_BIG_ENDIAN_32BPP_SWAP));
+
+// printf("saved: %x, current: %x\n", SAVED_CONFIG_CNTL,
+// INREG(CONFIG_CNTL));
+ }
+#else
+ /*code from radeon_video.c*/
+ {
+ SAVED_CONFIG_CNTL = INREG(RADEON_SURFACE_CNTL);
+/* OUTREG(RADEON_SURFACE_CNTL, (SAVED_CONFIG_CNTL |
+ RADEON_NONSURF_AP0_SWP_32BPP) & ~RADEON_NONSURF_AP0_SWP_16BPP);
+*/
+ OUTREG(RADEON_SURFACE_CNTL, SAVED_CONFIG_CNTL & ~(RADEON_NONSURF_AP0_SWP_32BPP
+ | RADEON_NONSURF_AP0_SWP_16BPP));
+
+/*
+ OUTREG(RADEON_SURFACE_CNTL, (SAVED_CONFIG_CNTL | RADEON_NONSURF_AP0_SWP_32BPP)
+ & ~RADEON_NONSURF_AP0_SWP_16BPP);
+*/
+ }
+#endif
+#endif
+
+
+
radeon_fifo_wait(2);
OUTREG(OV0_REG_LOAD_CNTL, REG_LD_CTL_LOCK);
radeon_engine_idle();