[MPlayer-matrox] r253 - mga_vid/trunk/mga_vid.c

attila subversion at mplayerhq.hu
Sun Mar 18 11:50:24 CET 2007


Author: attila
Date: Sun Mar 18 11:50:24 2007
New Revision: 253

Modified:
   mga_vid/trunk/mga_vid.c

Log:
allow output of width larger than 1024 if we have a G550
based on a patch from Kalev Soikonen <ksop at hot.ee>


Modified: mga_vid/trunk/mga_vid.c
==============================================================================
--- mga_vid/trunk/mga_vid.c	(original)
+++ mga_vid/trunk/mga_vid.c	Sun Mar 18 11:50:24 2007
@@ -594,6 +594,11 @@ switch(config->format){
 	return -1;
 }
 
+	// disable BES vertical filter if width is greater than 1024
+	// and if we have a G550
+	if(sw > 1024 && card->card_type == MGA_G550)
+		 card->regs.besctl &= ~(1<<11);
+
 	// setting black&white mode 
 	card->regs.besctl|=(card->regs.blackie<<20); 
 
@@ -699,6 +704,16 @@ static int mga_vid_ioctl(struct inode *i
 				printk(KERN_ERR "mga_vid: failed copy from userspace\n");
 				return(-EFAULT);
 			}
+
+			// return some information back to user space in case we hit an error
+			card->config.card_type = card->card_type;
+			card->config.ram_size = card->ram_size;
+			if (copy_to_user((mga_vid_config_t *) arg, &card->config, sizeof(mga_vid_config_t)))
+			{
+				printk(KERN_ERR "mga_vid: failed copy to userspace\n");
+				return(-EFAULT);
+			}
+
 			if(card->config.version != MGA_VID_VERSION){
 				printk(KERN_ERR "mga_vid: incompatible version! driver: %X  requested: %X\n",MGA_VID_VERSION,card->config.version);
 				return(-EFAULT);
@@ -714,8 +729,10 @@ static int mga_vid_ioctl(struct inode *i
 				return(-EFAULT);
 			}
 			
-			if(card->config.src_width>1023 || card->config.src_height>1023){
-				printk(KERN_ERR "mga_vid: overlay sizes bigger than 1023x1023 are not supported, rescale the picture in software\n");
+			if( (card->config.src_width > 1024 || card->config.src_height > 1024) && (card->card_type != MGA_G550 && card->config.src_height > 1024) ){
+				printk(KERN_ERR "mga_vid: overlay sizes bigger than 1024x1024 are not supported with this card type, rescale the picture in software\n");
+
+
 				return(-EFAULT);
 			}
 			
@@ -728,11 +745,6 @@ static int mga_vid_ioctl(struct inode *i
 #ifdef MP_DEBUG
 			printk(KERN_DEBUG "mga YUV buffer base: 0x%X\n", card->src_base);
 #endif			
-			
-			card->config.card_type = card->card_type;
-		       
-			card->config.ram_size = card->ram_size;
-
 			if (copy_to_user((mga_vid_config_t *) arg, &card->config, sizeof(mga_vid_config_t)))
 			{
 				printk(KERN_ERR "mga_vid: failed copy to userspace\n");



More information about the MPlayer-matrox mailing list