glsl: fix function inlining for images

Here we skip replacing parameters with their actual values for
images as glsl_to_nir() expects them to be copied to temps first.
Tree grafting has a similiar rule to avoid this happening also.

Fixes: 8d10a6835f ("glsl: dont create temps for builtin function inputs")

Tested-by: Martin Roukala <martin.roukala@mupuf.org>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20274>
This commit is contained in:
Timothy Arceri
2022-12-12 13:06:54 +11:00
committed by Marge Bot
parent 92959061a9
commit 9e9b8dc7f8

View File

@@ -140,6 +140,12 @@ should_replace_variable(ir_variable *sig_param, ir_rvalue *param,
sig_param->data.mode != ir_var_const_in)
return false;
/* Some places in glsl_to_nir() expect images to always be copied to a temp
* first.
*/
if (sig_param->type->without_array()->is_image() && !param->is_dereference())
return false;
/* SSBO and shared vars might be passed to a built-in such as an atomic
* memory function, where copying these to a temp before passing to the
* atomic function is not valid so we must replace these instead. Also,