dix: Tune dixLookupDrawable for success
The vast vast vast majority of resource lookups are successful. Move some work to the error paths so we don't punish success. Before: 40000000 trep @ 0.0009 msec (1109091.3/sec): PutImage 10x10 square 60000000 trep @ 0.0005 msec (2072652.2/sec): ShmPutImage 10x10 square After: 40000000 trep @ 0.0009 msec (1148346.9/sec): PutImage 10x10 square 60000000 trep @ 0.0005 msec (2091666.1/sec): ShmPutImage 10x10 square Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
		
							parent
							
								
									83a98543b5
								
							
						
					
					
						commit
						8f9bdfd293
					
				| 
						 | 
					@ -202,13 +202,12 @@ dixLookupDrawable(DrawablePtr *pDraw, XID id, ClientPtr client,
 | 
				
			||||||
    int rc;
 | 
					    int rc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *pDraw = NULL;
 | 
					    *pDraw = NULL;
 | 
				
			||||||
    client->errorValue = id;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (id == INVALID)
 | 
					 | 
				
			||||||
	return BadDrawable;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rc = dixLookupResourceByClass((pointer *)&pTmp, id, RC_DRAWABLE, client, access);
 | 
					    rc = dixLookupResourceByClass((pointer *)&pTmp, id, RC_DRAWABLE, client, access);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (rc != Success)
 | 
				
			||||||
 | 
						client->errorValue = id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (rc == BadValue)
 | 
					    if (rc == BadValue)
 | 
				
			||||||
	return BadDrawable;
 | 
						return BadDrawable;
 | 
				
			||||||
    if (rc != Success)
 | 
					    if (rc != Success)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue