From 614c77772ac2f48955537efcfefaf0609d6c03e5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 11 Dec 2020 19:00:23 -0500 Subject: [PATCH] st/pbo: fix pbo uploads without PIPE_CAP_TGSI_VS_LAYER_VIEWPORT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the code here tries to be too smart and only use a geometry shader if there's actually multiple layers being uploaded, but the fragment shader also unconditionally reads gl_Layer as long as the pipe cap for gs is set, which means that in the case when the gs is dynamically disabled due to uploading a single-layer surface, the fs has no input to read for gl_Layer and everything breaks always using a gs isn't ideal, but it's considerably more work to manage multiple fs variants based on layer usage Fixes: c99f2fe70ec ("st/mesa: implement PBO upload for multiple layers") Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_pbo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mesa/state_tracker/st_pbo.c b/src/mesa/state_tracker/st_pbo.c index fbc6b4ef8a2..3c197d89b53 100644 --- a/src/mesa/state_tracker/st_pbo.c +++ b/src/mesa/state_tracker/st_pbo.c @@ -202,7 +202,7 @@ st_pbo_draw(struct st_context *st, const struct st_pbo_addresses *addr, return false; } - if (addr->depth != 1 && st->pbo.use_gs && !st->pbo.gs) { + if (st->pbo.use_gs && !st->pbo.gs) { st->pbo.gs = st_pbo_create_gs(st); if (!st->pbo.gs) return false;