sm501: Log unimplemented raster operation modes
The sm501 currently implements only a very limited set of raster operation modes. After this change, unknown raster operation modes are logged so these can be easily spotted. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
		
							parent
							
								
									debc7e7dad
								
							
						
					
					
						commit
						06cb926aaa
					
				@ -706,6 +706,8 @@ static void sm501_2d_operation(SM501State *s)
 | 
				
			|||||||
    int format_flags = (s->twoD_stretch >> 20) & 0x3;
 | 
					    int format_flags = (s->twoD_stretch >> 20) & 0x3;
 | 
				
			||||||
    int addressing = (s->twoD_stretch >> 16) & 0xF;
 | 
					    int addressing = (s->twoD_stretch >> 16) & 0xF;
 | 
				
			||||||
    int rop_mode = (s->twoD_control >> 15) & 0x1; /* 1 for rop2, else rop3 */
 | 
					    int rop_mode = (s->twoD_control >> 15) & 0x1; /* 1 for rop2, else rop3 */
 | 
				
			||||||
 | 
					    /* 1 if rop2 source is the pattern, otherwise the source is the bitmap */
 | 
				
			||||||
 | 
					    int rop2_source_is_pattern = (s->twoD_control >> 14) & 0x1;
 | 
				
			||||||
    int rop = s->twoD_control & 0xFF;
 | 
					    int rop = s->twoD_control & 0xFF;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* get frame buffer info */
 | 
					    /* get frame buffer info */
 | 
				
			||||||
@ -719,6 +721,27 @@ static void sm501_2d_operation(SM501State *s)
 | 
				
			|||||||
        abort();
 | 
					        abort();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (rop_mode == 0) {
 | 
				
			||||||
 | 
					        if (rop != 0xcc) {
 | 
				
			||||||
 | 
					            /* Anything other than plain copies are not supported */
 | 
				
			||||||
 | 
					            qemu_log_mask(LOG_UNIMP, "sm501: rop3 mode with rop %x is not "
 | 
				
			||||||
 | 
					                          "supported.\n", rop);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        if (rop2_source_is_pattern && rop != 0x5) {
 | 
				
			||||||
 | 
					            /* For pattern source, we support only inverse dest */
 | 
				
			||||||
 | 
					            qemu_log_mask(LOG_UNIMP, "sm501: rop2 source being the pattern and "
 | 
				
			||||||
 | 
					                          "rop %x is not supported.\n", rop);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if (rop != 0x5 && rop != 0xc) {
 | 
				
			||||||
 | 
					                /* Anything other than plain copies or inverse dest is not
 | 
				
			||||||
 | 
					                 * supported */
 | 
				
			||||||
 | 
					                qemu_log_mask(LOG_UNIMP, "sm501: rop mode %x is not "
 | 
				
			||||||
 | 
					                              "supported.\n", rop);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ((s->twoD_source_base & 0x08000000) ||
 | 
					    if ((s->twoD_source_base & 0x08000000) ||
 | 
				
			||||||
        (s->twoD_destination_base & 0x08000000)) {
 | 
					        (s->twoD_destination_base & 0x08000000)) {
 | 
				
			||||||
        printf("%s: only local memory is supported.\n", __func__);
 | 
					        printf("%s: only local memory is supported.\n", __func__);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user