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
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to