From de1201a0ba05068ccdc731f0a79395ce58b9121a Mon Sep 17 00:00:00 2001 From: Brian Date: Sat, 15 Dec 2007 09:49:20 -0700 Subject: [PATCH] don't allocate scratch tile in sp_tile_cache_flush_clear() to avoid stack overflow --- src/mesa/pipe/softpipe/sp_tile_cache.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mesa/pipe/softpipe/sp_tile_cache.c b/src/mesa/pipe/softpipe/sp_tile_cache.c index d637c7291f6..a7be3812fea 100644 --- a/src/mesa/pipe/softpipe/sp_tile_cache.c +++ b/src/mesa/pipe/softpipe/sp_tile_cache.c @@ -58,6 +58,8 @@ struct softpipe_tile_cache struct pipe_surface *tex_surf; int tex_face, tex_level, tex_z; + + struct softpipe_cached_tile tile; /**< scratch tile for clears */ }; @@ -279,11 +281,10 @@ sp_tile_cache_flush_clear(struct pipe_context *pipe, const uint w = tc->surface->width; const uint h = tc->surface->height; uint x, y; - struct softpipe_cached_tile tile; uint numCleared = 0; - /* clear one tile to the clear value */ - clear_tile(&tile, ps->format, tc->clear_val); + /* clear the scratch tile to the clear value */ + clear_tile(&tc->tile, ps->format, tc->clear_val); /* push the tile to all positions marked as clear */ for (y = 0; y < h; y += TILE_SIZE) { @@ -291,7 +292,7 @@ sp_tile_cache_flush_clear(struct pipe_context *pipe, if (is_clear_flag_set(tc->clear_flags, x, y)) { pipe->put_tile(pipe, ps, x, y, TILE_SIZE, TILE_SIZE, - tile.data.color32, 0/*STRIDE*/); + tc->tile.data.color32, 0/*STRIDE*/); /* do this? */ clear_clear_flag(tc->clear_flags, x, y); -- 2.30.2