diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index 4f493c67302..a72d96e0933 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -168,7 +168,7 @@ lp_rast_clear_color(struct lp_rasterizer_task *task, 0, task->width, task->height, - scene->fb_max_layer + 1, + scene->cbufs[cbuf].layer_count, &uc); } diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c index ca6145cca12..1a5f6b7d8c0 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.c +++ b/src/gallium/drivers/llvmpipe/lp_scene.c @@ -181,6 +181,7 @@ init_scene_texture(struct lp_scene_surface *ssurf, struct pipe_surface *psurf) assert(ssurf->map); ssurf->format_bytes = util_format_get_blocksize(psurf->format); ssurf->nr_samples = util_res_sample_count(psurf->texture); + ssurf->layer_count = psurf->u.tex.last_layer - psurf->u.tex.first_layer + 1; } else { struct llvmpipe_resource *lpr = llvmpipe_resource(psurf->texture); unsigned pixstride = util_format_get_blocksize(psurf->format); diff --git a/src/gallium/drivers/llvmpipe/lp_scene.h b/src/gallium/drivers/llvmpipe/lp_scene.h index 41dffd78ad3..ef2002ef64a 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.h +++ b/src/gallium/drivers/llvmpipe/lp_scene.h @@ -127,6 +127,7 @@ struct lp_scene_surface { unsigned format_bytes; unsigned sample_stride; unsigned nr_samples; + unsigned layer_count; };