From 4474c46f5f3fde1e5699bb03347074a1bb32c40a Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 17 Sep 2021 10:50:32 -0700 Subject: [PATCH] mesa/st: Allow loops in GLSL when NIR is enabled, even if the HW can't. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The jump lowering enabled by EmitNoLoops breaks GLSL's loop unrolling on various obviously unrollable loops, resulting in a lot of deqp-gles2 and piglit failures. NIR will help unroll whatever GLSL doesn't, so we can trust the driver to apply that after GLSL's unrolling, so no need to ask GLSL to lower all loops. Fixes: #4979 Reviewed-by: Ian Romanick Reviewed-by: Zoltán Böszörményi Reviewed-by: Marek Olšák Part-of: --- .../drivers/i915/ci/deqp-i915-g33-fails.txt | 106 +----------------- .../drivers/i915/ci/piglit-i915-g33-fails.txt | 32 ------ src/gallium/drivers/i915/ci/traces-i915.yml | 2 +- src/mesa/state_tracker/st_extensions.c | 9 +- 4 files changed, 14 insertions(+), 135 deletions(-) diff --git a/src/gallium/drivers/i915/ci/deqp-i915-g33-fails.txt b/src/gallium/drivers/i915/ci/deqp-i915-g33-fails.txt index c7c219958d3..4cd540a76e1 100644 --- a/src/gallium/drivers/i915/ci/deqp-i915-g33-fails.txt +++ b/src/gallium/drivers/i915/ci/deqp-i915-g33-fails.txt @@ -50,118 +50,32 @@ dEQP-GLES2.functional.rasterization.primitives.lines_wide,Fail # https://gitlab.freedesktop.org/mesa/mesa/-/issues/4980 dEQP-GLES2.functional.shaders.builtin_variable.frontfacing,Fail -dEQP-GLES2.functional.shaders.discard.function_static_loop_always,Fail -dEQP-GLES2.functional.shaders.discard.function_static_loop_dynamic,Fail -dEQP-GLES2.functional.shaders.discard.function_static_loop_texture,Fail -dEQP-GLES2.functional.shaders.discard.function_static_loop_uniform,Fail -dEQP-GLES2.functional.shaders.discard.static_loop_always,Fail -dEQP-GLES2.functional.shaders.discard.static_loop_dynamic,Fail -dEQP-GLES2.functional.shaders.discard.static_loop_texture,Fail -dEQP-GLES2.functional.shaders.discard.static_loop_uniform,Fail dEQP-GLES2.functional.shaders.functions.control_flow.mixed_return_break_continue_fragment,Fail -dEQP-GLES2.functional.shaders.functions.control_flow.return_after_break_fragment,Fail dEQP-GLES2.functional.shaders.functions.control_flow.return_after_continue_fragment,Fail -dEQP-GLES2.functional.shaders.functions.control_flow.return_after_loop_fragment,Fail dEQP-GLES2.functional.shaders.functions.control_flow.return_in_loop_if_fragment,Fail dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat2_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat2_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat2_static_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat3_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat3_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat3_static_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_dynamic_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_static_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.float_dynamic_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.float_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.float_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.float_static_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_dynamic_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_static_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_const_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_const_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_dynamic_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_static_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_const_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_const_write_static_loop_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_write_dynamic_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_static_loop_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_static_loop_write_static_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_static_write_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.uniform_array.float_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.uniform_array.vec2_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.uniform_array.vec3_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.uniform_array.vec4_static_loop_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.float_static_loop_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.float_static_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.vec2_static_loop_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.vec2_static_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_static_loop_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.vec3_static_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_static_loop_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.varying_array.vec4_static_write_static_loop_read,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_component_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_direct_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_static_loop_subscript_write_component_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_static_loop_subscript_write_direct_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_static_loop_subscript_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_static_loop_subscript_write_static_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec2_static_subscript_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_component_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_direct_write_static_loop_subscript_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_static_loop_subscript_write_component_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_static_loop_subscript_write_direct_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_static_loop_subscript_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_static_loop_subscript_write_static_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec3_static_subscript_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_component_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_direct_write_static_loop_subscript_read_fragment,Fail +dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_static_loop_subscript_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_component_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_direct_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_dynamic_subscript_read_fragment,Fail dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_dynamic_subscript_write_static_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_static_loop_subscript_write_component_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_static_loop_subscript_write_direct_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_static_loop_subscript_write_static_loop_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_static_loop_subscript_write_static_subscript_read_fragment,Fail -dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_static_subscript_write_static_loop_subscript_read_fragment,Fail + dEQP-GLES2.functional.shaders.loops.for_constant_iterations.101_iterations_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.basic_highp_float_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.basic_highp_int_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.basic_lowp_float_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.basic_lowp_int_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.basic_mediump_float_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.basic_mediump_int_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.compound_statement_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.conditional_body_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.conditional_break_fragment,Fail dEQP-GLES2.functional.shaders.loops.for_constant_iterations.conditional_continue_fragment,Fail dEQP-GLES2.functional.shaders.loops.for_constant_iterations.double_continue_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.function_call_inout_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.function_call_return_fragment,Fail dEQP-GLES2.functional.shaders.loops.for_constant_iterations.mixed_break_continue_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_sequence_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_tricky_dataflow_1_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_tricky_dataflow_2_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.no_iterations_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.post_increment_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.pre_increment_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.sequence_statement_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.single_iteration_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.single_statement_fragment,Fail -dEQP-GLES2.functional.shaders.loops.for_constant_iterations.unconditional_continue_fragment,Fail + dEQP-GLES2.functional.shaders.random.all_features.fragment.22,Fail dEQP-GLES2.functional.shaders.random.all_features.fragment.32,Fail dEQP-GLES2.functional.shaders.random.all_features.fragment.34,Fail @@ -180,15 +94,8 @@ dEQP-GLES2.functional.shaders.random.trigonometric.fragment.42,Fail dEQP-GLES2.functional.shaders.random.trigonometric.fragment.45,Fail dEQP-GLES2.functional.shaders.random.trigonometric.fragment.52,Fail dEQP-GLES2.functional.shaders.random.trigonometric.fragment.81,Fail -dEQP-GLES2.functional.shaders.return.return_in_static_loop_dynamic_fragment,Fail -dEQP-GLES2.functional.shaders.return.return_in_static_loop_never_fragment,Fail -dEQP-GLES2.functional.shaders.struct.local.loop_assignment_fragment,Fail -dEQP-GLES2.functional.shaders.struct.local.loop_nested_struct_array_fragment,Fail -dEQP-GLES2.functional.shaders.struct.local.loop_struct_array_fragment,Fail -dEQP-GLES2.functional.shaders.struct.local.nested_loop_assignment_fragment,Fail + dEQP-GLES2.functional.shaders.struct.local.nested_struct_array_dynamic_index_fragment,Fail -dEQP-GLES2.functional.shaders.struct.uniform.loop_nested_struct_array_fragment,Fail -dEQP-GLES2.functional.shaders.struct.uniform.loop_struct_array_fragment,Fail dEQP-GLES2.functional.shaders.struct.uniform.nested_struct_array_dynamic_index_fragment,Fail # Need to port the DP3 trick for all_equal from st_glsl_to_tgsi. @@ -274,9 +181,6 @@ KHR-GLES2.core.internalformat.texture2d.depth_component_unsigned_short_depth_com # https://gitlab.freedesktop.org/mesa/mesa/-/issues/4979 # Non-unrolled loops, but they should be unrollable. -KHR-GLES2.shaders.aggressive_optimizations.cos_float_frag,Fail -KHR-GLES2.shaders.aggressive_optimizations.cos_vec2_frag,Fail -KHR-GLES2.shaders.aggressive_optimizations.cos_vec3_frag,Fail KHR-GLES2.shaders.aggressive_optimizations.sin_vec2_frag,Fail KHR-GLES2.shaders.aggressive_optimizations.sin_vec3_frag,Fail diff --git a/src/gallium/drivers/i915/ci/piglit-i915-g33-fails.txt b/src/gallium/drivers/i915/ci/piglit-i915-g33-fails.txt index 93854b76a20..42b01068324 100644 --- a/src/gallium/drivers/i915/ci/piglit-i915-g33-fails.txt +++ b/src/gallium/drivers/i915/ci/piglit-i915-g33-fails.txt @@ -186,11 +186,6 @@ spec@!opengl 1.4@tex-miplevel-selection-lod,Fail spec@!opengl 1.4@tex-miplevel-selection-lod-bias,Fail spec@!opengl 1.5@depth-tex-compare,Fail -# testcase bug: -# "Failed to link: error: sampler arrays indexed with non-constant expressions is forbidden in GLSL 110" -spec@!opengl 2.0@max-samplers,Fail -spec@!opengl 2.0@max-samplers border,Fail - # Need to be able to report 0 OQ bits, since there are no HW OQs. spec@!opengl 2.0@occlusion-query-discard,Fail @@ -773,7 +768,6 @@ spec@glsl-1.10@execution@built-in-functions@fs-smoothstep-vec3-vec3-vec3,Fail spec@glsl-1.10@execution@built-in-functions@fs-smoothstep-vec4-vec4-vec4,Fail spec@glsl-1.10@execution@builtins@glsl-fs-atan-3,Fail spec@glsl-1.10@execution@copy-propagation@glsl-copy-propagation-loop-1,Fail -spec@glsl-1.10@execution@copy-propagation@glsl-copy-propagation-loop-2,Fail # No derivatives support in the HW. spec@glsl-1.10@execution@derivatives@glsl-derivs-abs,Fail @@ -802,11 +796,8 @@ spec@glsl-1.10@execution@glsl-1.10-built-in-uniform-state,Fail spec@glsl-1.10@execution@glsl-clamp-vertex-color,Fail spec@glsl-1.10@execution@glsl-fs-convolution-1,Fail spec@glsl-1.10@execution@glsl-fs-convolution-2,Fail -spec@glsl-1.10@execution@glsl-fs-functions-5,Fail -spec@glsl-1.10@execution@glsl-fs-functions-6,Fail spec@glsl-1.10@execution@glsl-fs-if-nested-loop,Fail spec@glsl-1.10@execution@glsl-fs-loop-while-false-03,Fail -spec@glsl-1.10@execution@glsl-texcoord-array-2,Fail spec@glsl-1.10@execution@interpolation@interpolation-none-gl_backcolor-flat-fixed,Fail spec@glsl-1.10@execution@interpolation@interpolation-none-gl_backcolor-flat-none,Fail spec@glsl-1.10@execution@interpolation@interpolation-none-gl_backcolor-flat-vertex,Fail @@ -827,25 +818,9 @@ spec@glsl-1.10@execution@interpolation@interpolation-none-gl_frontsecondarycolor spec@glsl-1.10@execution@interpolation@interpolation-none-gl_frontsecondarycolor-smooth-vertex,Fail spec@glsl-1.10@execution@loops@glsl-fs-continue-inside-do-while,Fail spec@glsl-1.10@execution@loops@glsl-fs-loop-300,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-break,Fail - -# error: looping not supported i915 fragment shaders, all loops must be statically unrollable. -# but it's a static 0-10 loop and should unroll. -spec@glsl-1.10@execution@loops@glsl-fs-loop-const-decr,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-const-incr,Fail spec@glsl-1.10@execution@loops@glsl-fs-loop-continue,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-ge,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-gt,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-le,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-lt,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-nested-if,Fail spec@glsl-1.10@execution@loops@glsl-fs-loop-redundant-condition,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-two-counter-01,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-two-counter-02,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-two-counter-03,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-two-counter-04,Fail -spec@glsl-1.10@execution@loops@glsl-fs-loop-zero-iter,Fail spec@glsl-1.10@execution@loops@glsl-fs-unroll-out-param,Fail spec@glsl-1.10@execution@loops@glsl-fs-unroll-side-effect,Fail spec@glsl-1.10@execution@samplers@glsl-fs-shadow1d,Fail @@ -886,7 +861,6 @@ spec@glsl-1.10@execution@variable-indexing@fs-temp-array-mat4-index-wr,Fail spec@glsl-1.10@execution@variable-indexing@fs-uniform-array-mat4-index-col-row-rd,Fail spec@glsl-1.10@execution@variable-indexing@fs-varying-array-mat3-index-col-rd,Fail spec@glsl-1.10@execution@variable-indexing@fs-varying-array-mat3-index-col-row-rd,Fail -spec@glsl-1.10@execution@variable-indexing@vs-output-array-float-index-wr,Fail spec@glsl-1.10@execution@variable-indexing@vs-output-array-vec2-index-wr,Fail spec@glsl-1.10@execution@variable-indexing@vs-output-array-vec3-index-wr,Fail spec@glsl-1.10@execution@variable-indexing@vs-output-array-vec4-index-wr,Fail @@ -924,10 +898,6 @@ spec@glsl-1.10@execution@varying-packing@simple vec4 array,Fail spec@glsl-1.10@execution@varying-packing@simple vec4 separate,Fail spec@glsl-1.20@compiler@invalid-vec4-array-to-vec3-array-conversion.vert,Fail -# error: looping not supported i915 fragment shaders, all loops must be statically unrollable. -# but it's a static 0-4 loop and should unroll. -spec@glsl-1.10@linker@fs-loop-unrolled-divide-by-zero,Fail - spec@glsl-1.20@execution@built-in-functions@fs-matrixcompmult-mat2x3-mat2x3,Fail spec@glsl-1.20@execution@built-in-functions@fs-matrixcompmult-mat2x4-mat2x4,Fail spec@glsl-1.20@execution@built-in-functions@fs-matrixcompmult-mat3x2-mat3x2,Fail @@ -1052,7 +1022,6 @@ spec@glsl-1.20@execution@built-in-functions@fs-outerproduct-vec4-vec4,Fail spec@glsl-1.20@execution@fs-const-array-of-struct,Fail spec@glsl-1.20@execution@fs-const-array-of-struct-of-array,Fail spec@glsl-1.20@execution@fs-function-inout-array-of-structs,Fail -spec@glsl-1.20@execution@fs-mix-1.0,Fail spec@glsl-1.20@execution@fs-nan-builtin-max,Fail spec@glsl-1.20@execution@fs-nan-builtin-min,Fail spec@glsl-1.20@execution@fs-vec4-const-array-indirect-access-032-elements,Fail @@ -1120,7 +1089,6 @@ spec@glsl-1.20@execution@variable-indexing@vs-varying-array-mat3-index-col-row-w spec@glsl-1.20@execution@variable-indexing@vs-varying-array-mat3-index-col-wr,Fail spec@glsl-1.20@execution@variable-indexing@vs-varying-array-mat3-index-row-wr,Fail spec@glsl-1.20@execution@variable-indexing@vs-varying-array-mat3-index-wr,Fail -spec@glsl-es-1.00@execution@unroll-do-while-false-loop-only-once,Fail spec@intel_performance_query@intel_performance_query-issue_2235,Fail spec@nv_primitive_restart@primitive-restart-draw-mode-lines,Fail spec@nv_primitive_restart@primitive-restart-draw-mode-quad_strip,Fail diff --git a/src/gallium/drivers/i915/ci/traces-i915.yml b/src/gallium/drivers/i915/ci/traces-i915.yml index da9fded88dd..f8ee679d474 100644 --- a/src/gallium/drivers/i915/ci/traces-i915.yml +++ b/src/gallium/drivers/i915/ci/traces-i915.yml @@ -12,7 +12,7 @@ traces: - path: gputest/plot3d.trace expectations: - device: i915-g33 - checksum: 6a3f62f1c6cc57c91188f93f37ebf9b4 + checksum: 4731890d1f782c106dd9c12af77b3607 - path: gputest/triangle.trace expectations: # Weird white bar behind Tux's head. diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index c7d5a4bc960..f27051115d1 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -326,9 +326,16 @@ void st_init_limits(struct pipe_screen *screen, options->MaxIfDepth = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); - options->EmitNoLoops = + + /* If we're using NIR, then leave GLSL loop handling to NIR. If we set + * this flag, then GLSL jump lowering will turn the breaks into something + * that GLSL loop unrolling can't handle, and then you get linker failures + * about samplers with non-const indexes in loops that should be unrollable. + */ + options->EmitNoLoops = !prefer_nir && !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); + options->EmitNoMainReturn = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_SUBROUTINES);