diff --git a/src/gallium/drivers/panfrost/pan_assemble.c b/src/gallium/drivers/panfrost/pan_assemble.c index b4a57e3f241..ea9d7be0dab 100644 --- a/src/gallium/drivers/panfrost/pan_assemble.c +++ b/src/gallium/drivers/panfrost/pan_assemble.c @@ -86,8 +86,10 @@ panfrost_shader_compile(struct pipe_screen *pscreen, /* Don't upload RSD for fragment shaders since they need draw-time - * merging for e.g. depth/stencil/alpha */ - bool upload = stage != MESA_SHADER_FRAGMENT; + * merging for e.g. depth/stencil/alpha. RSDs are replaced by simpler + * shader program descriptors on Valhall, which can be preuploaded even + * for fragment shaders. */ + bool upload = !(stage == MESA_SHADER_FRAGMENT && dev->arch <= 7); screen->vtbl.prepare_shader(state, desc_pool, upload); panfrost_analyze_sysvals(state);