Skip to content

Revert "glsl: dont create temps for builtin function inputs"

Martin Roukala requested to merge mupuf/mesa:glsl_revert into main

This reverts commit 8d10a683, as it regressed spec@arb_bindless_texture@compiler@images@arith-bound-image.frag on NAVI10 in CI.

Here is the NIR validation that triggers the crash:

NIR validation failed after nir_remove_dead_variables in ../src/gallium/drivers/zink/zink_compiler.c
1 errors:
shader: MESA_SHADER_FRAGMENT
source_sha1: {0x108ff9e4, 0x546b0143, 0x23b7ce86, 0x116d2fe6, 0x2e6872f3}
name: GLSL2
stage: 4
next_stage: 4
num_ubos: 1
subgroup_size: 1
bit_sizes_int: 0x20
first_ubo_is_default_ubo: true
flrp_lowered: true
writes_memory: true
color0_interp: 0
color1_interp: 0
inputs: 0
outputs: 0
uniforms: 1
decl_var uniform INTERP_MODE_NONE uvec2 handleOffset (0, 0, 0)
decl_var push_const INTERP_MODE_NONE struct gfx_pushconst
decl_var ubo INTERP_MODE_NONE struct[1] uniform_0@32 (0, 0, 4)
decl_var image INTERP_MODE_NONE r8g8b8a8_unorm image1D[1024] bindless_image (0, 2, 2)
decl_function main (0 params)

impl main {
        block block_0:
        /* preds: */
        vec2 32 ssa_46 = load_const (0x00000000, 0x00000000) = (0.000000, 0.000000)
        vec4 32 ssa_48 = load_const (0x3f800000, 0x40000000, 0x40400000, 0x40800000) = (1.000000, 2.000000, 3.000000, 4.000000)
        vec1 32 ssa_37 = undefined
        vec1 32 ssa_35 = undefined
        vec1 32 ssa_34 = undefined
        vec1 32 ssa_33 = undefined
        vec4 32 ssa_36 = vec4 ssa_46.x, ssa_33, ssa_34, ssa_35
        vec1 32 ssa_40 = load_const (0x00000000 = 0.000000)
        vec1 32 ssa_85 = deref_var &uniform_0@32 (ubo struct[1])
        vec1 32 ssa_86 = deref_array &(*ssa_85)[0] (ubo struct) /* &uniform_0@32[0] */
        vec1 32 ssa_87 = deref_struct &ssa_86->base (ubo uint[4]) /* &uniform_0@32[0].base */
        vec1 32 ssa_88 = deref_array &(*ssa_87)[0] (ubo uint) /* &uniform_0@32[0].base[0] */
        vec1 32 ssa_89 = intrinsic load_deref (ssa_88) (access=0)
        vec1 32 ssa_102 = load_const (0x00000001 = 0.000000)
        vec1 32 ssa_96 = deref_array &(*ssa_87)[1] (ubo uint) /* &uniform_0@32[0].base[1] */
        vec1 32 ssa_97 = intrinsic load_deref (ssa_96) (access=0)
        vec2 32 ssa_80 = vec2 ssa_89, ssa_97
        vec1 32 ssa_103 = deref_var &bindless_image (image image1D[1024])
        vec1 32 ssa_104 = deref_array &(*ssa_103)[ssa_80] (image image1D) /* &bindless_image[ssa_80] */
error: src->ssa->num_components == num_components (../src/compiler/nir/nir_validate.c:214)

        intrinsic image_deref_store (ssa_104, ssa_36, ssa_37, ssa_48, ssa_40) (image_dim=1D /*0*/, image_array=false /*0*/, format=none /*0*/, access=8, src_type=invalid /*0*/)
        /* succs: block_1 */
        block block_1:
}

Signed-off-by: Martin Roukala (né Peres) martin.roukala@mupuf.org

Edited by Erik Faye-Lund

Merge request reports