From 8d249ca620f6995cc5824d95c29bda7043bbdf8c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 18 Sep 2008 15:35:56 -0600 Subject: gallium: if we run out of memory in st_TexImage, flush and try again. If the driver buffers a scene flushing should release old textures and make space for new ones. Fixes problem with texdown.c test. --- src/mesa/state_tracker/st_cb_texture.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 2e1ad93942b..958f88bf2c4 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -481,8 +481,15 @@ st_TexImage(GLcontext * ctx, if (!stObj->pt) { guess_and_alloc_texture(ctx->st, stObj, stImage); if (!stObj->pt) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage"); - return; + /* Probably out of memory. + * Try flushing any pending rendering, then retry. + */ + st_finish(ctx->st); + guess_and_alloc_texture(ctx->st, stObj, stImage); + if (!stObj->pt) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage"); + return; + } } } -- cgit v1.2.3