summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authornick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-29 17:07:52 +0000
committernick <nick@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-29 17:07:52 +0000
commit5eaa1f97d3a0e80d9498546932d2f6114517ec88 (patch)
tree49bea517db70dec46aef68ecfc2a9602b8a6fea4 /drivers
parent35ebaabd5e5efd3fe1adf744796edd0468100f4a (diff)
downloadmpv-5eaa1f97d3a0e80d9498546932d2f6114517ec88.tar.bz2
mpv-5eaa1f97d3a0e80d9498546932d2f6114517ec88.tar.xz
Probably ugly attempt to fix Rage128 problems
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3199 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'drivers')
-rw-r--r--drivers/radeon/radeon_vid.c34
-rw-r--r--drivers/radeon/radeon_vid.h11
2 files changed, 34 insertions, 11 deletions
diff --git a/drivers/radeon/radeon_vid.c b/drivers/radeon/radeon_vid.c
index cc937ebe1d..e8ba091b93 100644
--- a/drivers/radeon/radeon_vid.c
+++ b/drivers/radeon/radeon_vid.c
@@ -74,7 +74,11 @@
MODULE_AUTHOR("Nick Kurshev <nickols_k@mail.ru>");
-MODULE_DESCRIPTION("Accelerated YUV BES driver for Rage128/Radeons. Version: "RADEON_VID_VERSION);
+#ifdef RAGE128
+MODULE_DESCRIPTION("Accelerated YUV BES driver for Rage128. Version: "RADEON_VID_VERSION);
+#else
+MODULE_DESCRIPTION("Accelerated YUV BES driver for Radeons. Version: "RADEON_VID_VERSION);
+#endif
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif
@@ -85,6 +89,9 @@ MODULE_LICENSE("GPL");
#else
#define RVID_MSG "radeon_vid: "
#define X_ADJUST 8
+#ifndef RADEON
+#define RADEON
+#endif
#endif
typedef struct bes_registers_s
@@ -211,11 +218,16 @@ static char *fourcc_format_name(int format)
case IMGFMT_I420: return("Planar I420");
case IMGFMT_IYUV: return("Planar IYUV");
case IMGFMT_CLPL: return("Planar CLPL");
+ case IMGFMT_Y800: return("Planar Y800");
+ case IMGFMT_Y8: return("Planar Y8");
+ case IMGFMT_IUYV: return("Packed IUYV");
+ case IMGFMT_IY41: return("Packed IY41");
case IMGFMT_IYU1: return("Packed IYU1");
case IMGFMT_IYU2: return("Packed IYU2");
case IMGFMT_UYVY: return("Packed UYVY");
case IMGFMT_UYNV: return("Packed UYNV");
case IMGFMT_cyuv: return("Packed CYUV");
+ case IMGFMT_Y422: return("Packed Y422");
case IMGFMT_YUY2: return("Packed YUY2");
case IMGFMT_YUNV: return("Packed YUNV");
case IMGFMT_YVYU: return("Packed YVYU");
@@ -228,7 +240,7 @@ static char *fourcc_format_name(int format)
case IMGFMT_CLJR: return("Packed CLJR");
case IMGFMT_YUVP: return("Packed YUVP");
case IMGFMT_UYVP: return("Packed UYVP");
-/* case IMGFMT_MPEGPES: return("Mpeg PES");*/
+ case IMGFMT_MPEGPES: return("Mpeg PES");
}
return("Unknown");
}
@@ -307,7 +319,7 @@ RTRACE(RVID_MSG"OV0: p1_v_accum_init=%x p1_h_accum_init=%x p23_h_accum_init=%x\n
OUTREG(OV0_P1_X_START_END, besr.p1_x_start_end);
OUTREG(OV0_P2_X_START_END, besr.p2_x_start_end);
OUTREG(OV0_P3_X_START_END, besr.p3_x_start_end);
-#if 1
+#if 0
OUTREG(OV0_BASE_ADDR, besr.base_addr);
#endif
OUTREG(OV0_VID_BUF0_BASE_ADRS, besr.vid_buf0_base_adrs);
@@ -326,6 +338,9 @@ RTRACE(RVID_MSG"OV0: p1_v_accum_init=%x p1_h_accum_init=%x p23_h_accum_init=%x\n
SCALER_ADAPTIVE_DEINT |
SCALER_SMART_SWITCH |
SCALER_HORZ_PICK_NEAREST;
+#ifdef RAGE128
+ bes_flags |= SCALER_BURST_PER_PLANE;
+#endif
switch(besr.fourcc)
{
case IMGFMT_RGB15:
@@ -482,7 +497,7 @@ RTRACE(RVID_MSG"usr_config: version = %x format=%x card=%x ram=%u src(%ux%u) des
else
{
besr.vid_buf0_base_adrs = radeon_overlay_off;
- besr.vid_buf0_base_adrs += ((left & ~7) << 1)&0xfffffff0;
+ besr.vid_buf0_base_adrs += ((left & ~7) << 1)&VIF_BUF0_BASE_ADRS_MASK;
besr.vid_buf1_base_adrs = besr.vid_buf0_base_adrs;
besr.vid_buf2_base_adrs = besr.vid_buf0_base_adrs;
}
@@ -587,7 +602,6 @@ static int radeon_vid_ioctl(struct inode *inode, struct file *file, unsigned int
return -EFAULT;
}
- /* FIXME: Fake of G400 ;) or would be better G200 ??? */
radeon_config.card_type = 0;
radeon_config.ram_size = radeon_ram_size;
radeon_overlay_off = radeon_ram_size*0x100000 - radeon_config.frame_size*radeon_config.num_frames;
@@ -694,12 +708,12 @@ const struct ati_card_id_s ati_card_ids[]=
{ PCI_DEVICE_ID_ATI_RAGE128_RN, "R128 RN" },
{ PCI_DEVICE_ID_ATI_RAGE128_RO, "R128 RO" },
/* Rage128 M3 */
- { PCI_DEVICE_ID_ATI_RAGE128_LE, "R128 LE" },
- { PCI_DEVICE_ID_ATI_RAGE128_LF, "R128 LF" },
+ { PCI_DEVICE_ID_ATI_RAGE128_LE, "R128 M3 LE" },
+ { PCI_DEVICE_ID_ATI_RAGE128_LF, "R128 M3 LF" },
/* Rage128 Pro Ultra */
- { PCI_DEVICE_ID_ATI_RAGE128_U1, "R128 U1" },
- { PCI_DEVICE_ID_ATI_RAGE128_U2, "R128 U2" },
- { PCI_DEVICE_ID_ATI_RAGE128_U3, "R128 U3" }
+ { PCI_DEVICE_ID_ATI_RAGE128_U1, "R128Pro U1" },
+ { PCI_DEVICE_ID_ATI_RAGE128_U2, "R128Pro U2" },
+ { PCI_DEVICE_ID_ATI_RAGE128_U3, "R128Pro U3" }
#else
/* Radeons (indeed: Rage 256 Pro ;) */
{ PCI_DEVICE_ID_RADEON_QD, "Radeon QD " },
diff --git a/drivers/radeon/radeon_vid.h b/drivers/radeon/radeon_vid.h
index dfa9cf65c7..f0659ea1a7 100644
--- a/drivers/radeon/radeon_vid.h
+++ b/drivers/radeon/radeon_vid.h
@@ -67,14 +67,19 @@ uint32_t num_frames;
#define IMGFMT_I420 0x30323449
#define IMGFMT_IYUV 0x56555949
#define IMGFMT_CLPL 0x4C504C43
+#define IMGFMT_Y800 0x30303859
+#define IMGFMT_Y8 0x20203859
/* Packed YUV Formats */
+#define IMGFMT_IUYV 0x56595549
+#define IMGFMT_IY41 0x31435949
#define IMGFMT_IYU1 0x31555949
#define IMGFMT_IYU2 0x32555949
#define IMGFMT_UYVY 0x59565955
#define IMGFMT_UYNV 0x564E5955
#define IMGFMT_cyuv 0x76757963
+#define IMGFMT_Y422 0x32323459
#define IMGFMT_YUY2 0x32595559
#define IMGFMT_YUNV 0x564E5559
#define IMGFMT_YVYU 0x55595659
@@ -88,10 +93,14 @@ uint32_t num_frames;
#define IMGFMT_YUVP 0x50565559
#define IMGFMT_UYVP 0x50565955
+/* Compressed Formats. Mplayer's extensions!!! */
+#define IMGFMT_MPEGPES (('M'<<24)|('P'<<16)|('E'<<8)|('S'))
+
+
#define MGA_VID_CONFIG _IOR('J', 1, mga_vid_config_t)
#define MGA_VID_ON _IO ('J', 2)
#define MGA_VID_OFF _IO ('J', 3)
-#define MGA_VID_FSEL _IOR('J', 4, int)
+#define MGA_VID_FSEL _IOR('J', 4, int)
#define MGA_VID_VERSION 0x0201