Correct some bugs causing performance issues in the "Smart" scheme.
This commit is contained in:
		
							parent
							
								
									8738bc295b
								
							
						
					
					
						commit
						005529a1c9
					
				|  | @ -1,3 +1,8 @@ | ||||||
|  | 2006-04-27  Eric Anholt  <anholt@FreeBSD.org> | ||||||
|  | 
 | ||||||
|  | 	* exa/exa_migration.c: (exaPixmapShouldBeInFB), (exaDoMigration): | ||||||
|  | 	Correct some bugs causing performance issues in the "Smart" scheme. | ||||||
|  | 
 | ||||||
| 2006-04-27  Eric Anholt  <anholt@FreeBSD.org> | 2006-04-27  Eric Anholt  <anholt@FreeBSD.org> | ||||||
| 
 | 
 | ||||||
| 	* exa/exa_accel.c: (exaCopyNtoN), (exaSolidBoxClipped), | 	* exa/exa_accel.c: (exaCopyNtoN), (exaSolidBoxClipped), | ||||||
|  |  | ||||||
|  | @ -72,7 +72,8 @@ exaPixmapIsDirty (PixmapPtr pPix) | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  * Returns TRUE if the pixmap is either pinned in FB, or has a sufficient score |  * Returns TRUE if the pixmap is either pinned in FB, or has a sufficient score | ||||||
|  * to be considered "should be in framebuffer". |  * to be considered "should be in framebuffer".  That's just anything that has | ||||||
|  |  * had more acceleration than fallbacks, or has no score yet. | ||||||
|  * |  * | ||||||
|  * Only valid if using a migration scheme that tracks score. |  * Only valid if using a migration scheme that tracks score. | ||||||
|  */ |  */ | ||||||
|  | @ -84,7 +85,7 @@ exaPixmapShouldBeInFB (PixmapPtr pPix) | ||||||
|     if (exaPixmapIsPinned (pPix)) |     if (exaPixmapIsPinned (pPix)) | ||||||
| 	return TRUE; | 	return TRUE; | ||||||
| 
 | 
 | ||||||
|     return pExaPixmap->score >= EXA_PIXMAP_SCORE_INIT; |     return pExaPixmap->score >= 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  | @ -486,7 +487,11 @@ exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel) | ||||||
| 	    if (pixmaps[i].as_dst && !exaPixmapShouldBeInFB (pixmaps[i].pPix) && | 	    if (pixmaps[i].as_dst && !exaPixmapShouldBeInFB (pixmaps[i].pPix) && | ||||||
| 		!exaPixmapIsDirty (pixmaps[i].pPix)) | 		!exaPixmapIsDirty (pixmaps[i].pPix)) | ||||||
| 	    { | 	    { | ||||||
| 		can_accel = FALSE; | 		for (i = 0; i < npixmaps; i++) { | ||||||
|  | 		    if (!exaPixmapIsDirty (pixmaps[i].pPix)) | ||||||
|  | 			exaMoveOutPixmap (pixmaps[i].pPix); | ||||||
|  | 		} | ||||||
|  | 		return; | ||||||
| 	    } | 	    } | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue