r600: Disable SB in the presence of indirection on temp arrays.
authorEmma Anholt <emma@anholt.net>
Thu, 6 Jan 2022 17:43:49 +0000 (09:43 -0800)
committerEmma Anholt <emma@anholt.net>
Mon, 28 Mar 2022 17:54:46 +0000 (10:54 -0700)
Prevents several regressions when NIR-to-TGSI is enabled where it was
allocating arrays on top of each other.

Fixes vec3 fails on RV770,
dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1 and 2
in general, and fixes another piglit but breaks two others.  Still, this
seems to be a win.

Cc: mesa-stable
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14429>

src/gallium/drivers/r600/ci/r600-rv770-fails.txt
src/gallium/drivers/r600/ci/r600-turks-fails.txt
src/gallium/drivers/r600/r600_shader.c

index 205cafc..f1252b1 100644 (file)
@@ -1,16 +1,6 @@
 KHR-GL33.clip_distance.functional,Fail
 KHR-GL33.cull_distance.functional,Fail
 KHR-GL33.nearest_edge.offset_right,Fail
-KHR-GL33.shaders.indexing.tmp_array.vertexid,Fail
-
-KHR-GL33.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_loop_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_loop_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_loop_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_static_write_dynamic_loop_read,Fail
-KHR-GL33.shaders.indexing.varying_array.vec3_static_write_dynamic_read,Fail
 
 KHR-GL33.texture_repeat_mode.rgba32ui_11x131_0_clamp_to_edge,Fail
 KHR-GL33.texture_repeat_mode.rgba32ui_11x131_0_mirrored_repeat,Fail
@@ -37,17 +27,6 @@ KHR-GL33.texture_swizzle.functional,Fail
 
 KHR-GLES3.core.nearest_edge.offset_right,Fail
 
-KHR-GLES3.shaders.indexing.tmp_array.vertexid,Fail
-
-KHR-GLES3.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_loop_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_loop_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_loop_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_static_write_dynamic_loop_read,Fail
-KHR-GLES3.shaders.indexing.varying_array.vec3_static_write_dynamic_read,Fail
-
 KHR-GLES3.texture_repeat_mode.rgba32ui_11x131_0_clamp_to_edge,Fail
 KHR-GLES3.texture_repeat_mode.rgba32ui_11x131_0_mirrored_repeat,Fail
 KHR-GLES3.texture_repeat_mode.rgba32ui_11x131_0_repeat,Fail
@@ -73,14 +52,6 @@ dEQP-GLES2.functional.clipping.point.wide_point_clip,Fail
 dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center,Fail
 dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner,Fail
 
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_loop_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_loop_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_loop_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_static_write_dynamic_loop_read,Fail
-dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_static_write_dynamic_read,Fail
 dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_component_read_fragment,Fail
 dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_dynamic_subscript_read_fragment,Fail
 dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_dynamic_subscript_read_vertex,Fail
@@ -148,23 +119,12 @@ dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp,Fail
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec3_highp,Fail
 dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_highp,Fail
 
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_loop_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_dynamic_loop_write_dynamic_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_loop_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_dynamic_write_dynamic_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_loop_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_static_loop_write_dynamic_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_static_write_dynamic_loop_read,Fail
-dEQP-GLES3.functional.shaders.indexing.varying_array.vec3_static_write_dynamic_read,Fail
 dEQP-GLES3.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_component_read_fragment,Fail
 dEQP-GLES3.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_dynamic_subscript_read_fragment,Fail
 dEQP-GLES3.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_dynamic_subscript_read_vertex,Fail
 dEQP-GLES3.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_static_loop_subscript_read_fragment,Fail
 dEQP-GLES3.functional.shaders.indexing.vector_subscript.vec3_dynamic_subscript_write_static_subscript_read_fragment,Fail
 
-dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1,Crash
-dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_2,Crash
-
 dEQP-GLES3.functional.shaders.texture_functions.texture.samplercubeshadow_bias_fragment,Fail
 dEQP-GLES3.functional.shaders.texture_functions.texture.samplercubeshadow_fragment,Fail
 dEQP-GLES3.functional.shaders.texture_functions.texture.samplercubeshadow_vertex,Fail
@@ -1001,11 +961,9 @@ spec@ext_texture_srgb@texwrap formats-s3tc bordercolor-swizzled@GL_COMPRESSED_SR
 
 spec@ext_transform_feedback@immediate-reuse-index-buffer,Fail
 
-spec@glsl-1.10@execution@temp-array-indexing@glsl-vs-vec4-indexing-temp-src,Fail
-spec@glsl-1.10@execution@variable-indexing@vs-varying-array-mat2-col-row-wr,Fail
-spec@glsl-1.10@execution@variable-indexing@vs-varying-array-mat2-col-wr,Fail
-spec@glsl-1.10@execution@variable-indexing@vs-varying-mat2-col-row-wr,Fail
-spec@glsl-1.10@execution@variable-indexing@vs-varying-mat2-col-wr,Fail
+spec@glsl-1.10@execution@function-calls@glsl-function-chain16-in-array-indirect,Fail
+spec@glsl-1.10@execution@function-calls@glsl-function-chain16-in-array-indirect2,Fail
+
 spec@glsl-1.10@execution@varying-packing@simple float arrays_of_arrays,Fail
 spec@glsl-1.10@execution@varying-packing@simple int arrays_of_arrays,Fail
 spec@glsl-1.10@execution@varying-packing@simple uint arrays_of_arrays,Fail
@@ -1017,9 +975,6 @@ spec@glsl-1.20@execution@fs-nan-builtin-min,Fail
 
 spec@glsl-1.20@execution@matrix-out-of-bounds-access@fs-mat4-out-of-bounds-6,Crash
 
-spec@glsl-1.20@execution@variable-indexing@vs-varying-mat2-col-row-wr,Fail
-spec@glsl-1.20@execution@variable-indexing@vs-varying-mat2-col-wr,Fail
-
 spec@glsl-1.20@execution@vs-nan-builtin-max,Fail
 spec@glsl-1.20@execution@vs-nan-builtin-min,Fail
 
@@ -1049,7 +1004,7 @@ spec@glsl-1.50@execution@texelfetchoffset@gs-texelfetch-usampler2d,Fail
 spec@glsl-1.50@execution@texelfetchoffset@gs-texelfetch-usampler2darray,Fail
 spec@glsl-1.50@execution@texelfetchoffset@gs-texelfetch-usampler3d,Fail
 spec@glsl-1.50@execution@texelfetchoffset@gs-usampler2drect,Fail
-spec@glsl-1.50@execution@variable-indexing@gs-input-array-vec2-index-rd,Fail
+
 spec@glsl-1.50@execution@variable-indexing@gs-input-array-vec3-index-rd,Fail
 spec@glsl-1.50@execution@variable-indexing@gs-input-array-vec4-index-rd,Crash
 
index c7d6bc6..f0b0079 100644 (file)
@@ -181,9 +181,6 @@ dEQP-GLES3.functional.draw.random.117,Fail
 # "Attribute 0: position Storage in user_ptr stride 0 input datatype int2_10_10_10 input component count 4 normalized used as vec4 instance divisor 0 drawArraysInstanced() first 7 instance count 1 5 triangles "
 dEQP-GLES3.functional.draw.random.124,Fail
 
-dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1,Crash
-dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_2,Crash
-
 dEQP-GLES3.functional.shaders.texture_functions.texture.samplercubeshadow_bias_fragment,Fail
 dEQP-GLES3.functional.shaders.texture_functions.texturegrad.isamplercube_vertex,Fail
 dEQP-GLES3.functional.shaders.texture_functions.texturegrad.samplercube_fixed_fragment,Fail
@@ -1541,6 +1538,9 @@ spec@ext_texture_srgb@texwrap formats-s3tc bordercolor-swizzled@GL_COMPRESSED_SR
 spec@ext_texture_srgb@texwrap formats-s3tc bordercolor-swizzled@GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT- swizzled- border color only,Fail
 spec@ext_texture_srgb@texwrap formats-s3tc bordercolor-swizzled@GL_COMPRESSED_SRGB_S3TC_DXT1_EXT- swizzled- border color only,Fail
 
+spec@glsl-1.10@execution@function-calls@glsl-function-chain16-in-array-indirect,Fail
+spec@glsl-1.10@execution@function-calls@glsl-function-chain16-in-array-indirect2,Fail
+
 spec@glsl-1.10@execution@varying-packing@simple float arrays_of_arrays,Fail
 spec@glsl-1.10@execution@varying-packing@simple float separate,Fail
 spec@glsl-1.10@execution@varying-packing@simple int arrays_of_arrays,Fail
@@ -1569,7 +1569,6 @@ spec@glsl-1.30@execution@tex-miplevel-selection textureoffset(bias) 1darrayshado
 spec@glsl-1.50@execution@geometry@tri-strip-ordering-with-prim-restart gl_triangle_strip_adjacency ffs,Fail
 spec@glsl-1.50@execution@geometry@tri-strip-ordering-with-prim-restart gl_triangle_strip_adjacency other,Fail
 
-spec@glsl-1.50@execution@variable-indexing@gs-input-array-vec2-index-rd,Fail
 spec@glsl-1.50@execution@variable-indexing@gs-input-array-vec3-index-rd,Fail
 
 # "void glsl_to_tgsi_visitor::visit_expression(ir_expression*, st_src_reg*): Assertion `ir->operands[2]->type->vector_elements == 1' failed."
index e1d9bc1..cac6ba0 100644 (file)
@@ -258,6 +258,12 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
        use_sb &= !shader->shader.uses_images;
        use_sb &= !shader->shader.uses_helper_invocation;
 
+       /* sb has bugs in array reg allocation
+        * (dEQP-GLES2.functional.shaders.struct.local.struct_array_dynamic_index_fragment
+        * with NTT)
+        */
+       use_sb &= !(shader->shader.indirect_files & (1 << TGSI_FILE_TEMPORARY));
+
        /* Check if the bytecode has already been built. */
        if (!shader->shader.bc.bytecode) {
                r = r600_bytecode_build(&shader->shader.bc);