Hi,
I just read how the i8x0 drivers use the timestamp of texture objects
and heaps to avoid idling the engine for each texture upload. I think
I'm going to do the same in the Savage driver.
However, I believe this doesn't handle the case of multiple clients.
Whenever another client modified a texture heap the heap's timestamp
should be updated when taking the lock. This could be done in the
driver's getLock method. Example pseudo-patch for i810GetLock:
/* Shared texture managment - if another client has played with
* texture space, figure out which if any of our textures have been
* ejected, and update our global LRU.
*/
for ( i = 0 ; i < imesa->nr_heaps ; i++ ) {
+ /* Update the heap's timestamp. Do this before DRI_AGE_TEXTURES updates
local_age. */
+ if ( imesa->texture_heaps[ i ] &&
+ imesa->texture_heaps[ i ]->global_age[ 0 ] > imesa->texture_heaps[ i
]->local_age )
+ imesa->texture_heaps[ i ]->timestamp = /* get a current time stamp */;
DRI_AGE_TEXTURES( imesa->texture_heaps[ i ] );
}
Does this look about right, or did I misunderstand something?
Regards,
Felix
--
| Felix K�hling <[EMAIL PROTECTED]> http://fxk.de.vu |
| PGP Fingerprint: 6A3C 9566 5B30 DDED 73C3 B152 151C 5CC1 D888 E595 |
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id396&op=click
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel