mesa/st: Allow loops in GLSL when NIR is enabled, even if the HW can't.

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 <ian.d.romanick@intel.com>
Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12917>
This commit is contained in:
Emma Anholt 2021-09-17 10:50:32 -07:00 committed by Marge Bot
parent 346a2950bb
commit 4474c46f5f
4 changed files with 14 additions and 135 deletions

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -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);