From: Brian Paul Date: Thu, 18 Sep 2008 21:35:56 +0000 (-0600) Subject: gallium: if we run out of memory in st_TexImage, flush and try again. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8d249ca620f6995cc5824d95c29bda7043bbdf8c;p=mesa.git 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. --- 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; + } } }