Browse Source

Respect the 'in_use' field in the global LRU as a marker for

kernel-reserved memory regions.
tags/R300_DRIVER_0
Keith Whitwell 22 years ago
parent
commit
4a53f7bc74
1 changed files with 6 additions and 11 deletions
  1. 6
    11
      src/mesa/drivers/dri/common/texmem.c

+ 6
- 11
src/mesa/drivers/dri/common/texmem.c View File

@@ -246,7 +246,6 @@ void driUpdateTextureLRU( driTextureObject * t )


for (i = start ; i <= end ; i++) {
list[i].in_use = 1;
list[i].age = heap->local_age;

/* remove_from_list(i)
@@ -374,7 +373,7 @@ void driDestroyTextureObject( driTextureObject * t )
* \param heap Heap whose state is to be updated
* \param offset Byte offset in the heap that has been stolen
* \param size Size, in bytes, of the stolen block
* \param in_use Non-zero if the block is in-use by another context
* \param in_use Non-zero if the block is pinned/reserved by the kernel
*/

static void driTexturesGone( driTexHeap * heap, int offset, int size,
@@ -396,19 +395,13 @@ static void driTexturesGone( driTexHeap * heap, int offset, int size,
driSwapOutTextureObject( t );
}
else {
if ( in_use &&
offset == t->memBlock->ofs && size == t->memBlock->size ) {
/* Matching placeholder already exists */
return;
} else {
driDestroyTextureObject( t );
}
driDestroyTextureObject( t );
}
}
}


if ( in_use ) {
{
t = (driTextureObject *) CALLOC( heap->texture_object_size );
if ( t == NULL ) return;

@@ -420,6 +413,8 @@ static void driTexturesGone( driTexHeap * heap, int offset, int size,
return;
}
t->heap = heap;
if (in_use)
t->bound = 99;
insert_at_head( & heap->texture_objects, t );
}
}
@@ -673,7 +668,7 @@ driCreateTextureHeap( unsigned heap_id, void * context, unsigned size,
heap->destroy_texture_object = destroy_tex_obj;

/* Force global heap init */
if (heap->global_age == 0)
if (heap->global_age[0] == 0)
heap->local_age = ~0;
else
heap->local_age = 0;

Loading…
Cancel
Save