mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-03 14:18:07 +02:00
don't allocate scratch tile in sp_tile_cache_flush_clear() to avoid stack overflow
This commit is contained in:
parent
017f862de1
commit
de1201a0ba
1 changed files with 5 additions and 4 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue