Fix offset alignment code in the offscreen memory allocator to prevent

textures from being allocated in the next free memory area.
This commit is contained in:
Damien Ciabrini 2005-07-06 13:57:41 +00:00
parent baa99be190
commit c48f631cdb

View File

@ -46,11 +46,11 @@ KdOffscreenValidate (ScreenPtr pScreen)
for (area = pScreenPriv->off_screen_areas; area; area = area->next) for (area = pScreenPriv->off_screen_areas; area; area = area->next)
{ {
if (prev) if (prev)
assert (prev->area.offset + prev->area.size == area->area.offset); assert (prev->offset + prev->size == area->offset);
prev = area; prev = area;
} }
assert (prev->area.offset + prev->area.size == pScreenPriv->screen->memory_size); assert (prev->offset + prev->size == pScreenPriv->screen->memory_size);
} }
#else #else
#define KdOffscreenValidate(s) #define KdOffscreenValidate(s)
@ -214,7 +214,11 @@ KdOffscreenAlloc (ScreenPtr pScreen, int size, int align,
area->score = 0; area->score = 0;
area->save_offset = area->offset; area->save_offset = area->offset;
area->offset = (area->offset + align - 1) & ~(align - 1); {
int tmp = area->offset % align;
if (tmp)
area->offset += (align - tmp);
}
KdOffscreenValidate (pScreen); KdOffscreenValidate (pScreen);