i915g: Switch to using nir-to-tgsi.

This fixes ~10% of the GLES2 failures thanks to having a better compiler,
though in some cases we get some new compile fails due to instr count or
uniform count.  We still have to do NIR-to-TGSI because the NIR gallivm
draw path isn't ready for non-native-integer NIR code, and st/mesa treats
native-integer as a screen property instead of a stage property.

Other than the noted regressions in the xfails, for
dEQP-GLES2.functional.uniform_api.random.74: compile fail changes reasons
triggering an aassertion instead of drawing magenta.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11329>
This commit is contained in:
Emma Anholt 2021-05-18 16:04:47 -07:00 committed by Marge Bot
parent 934d2c8f7f
commit 2b3fc26da8
6 changed files with 177 additions and 176 deletions

View File

@ -547,21 +547,17 @@ dEQP-GLES2.functional.rasterization.primitives.line_loop_wide,Fail
dEQP-GLES2.functional.rasterization.primitives.line_strip_wide,Fail
dEQP-GLES2.functional.rasterization.primitives.lines_wide,Fail
dEQP-GLES2.functional.rasterization.primitives.points,Fail
dEQP-GLES2.functional.shaders.algorithm.hsl_to_rgb_fragment,Fail
dEQP-GLES2.functional.shaders.builtin_variable.frontfacing,Fail
dEQP-GLES2.functional.shaders.discard.dynamic_loop_always,Fail
dEQP-GLES2.functional.shaders.discard.dynamic_loop_dynamic,Fail
dEQP-GLES2.functional.shaders.discard.dynamic_loop_never,Fail
dEQP-GLES2.functional.shaders.discard.dynamic_loop_texture,Fail
dEQP-GLES2.functional.shaders.discard.dynamic_loop_uniform,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_never,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_never,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
@ -611,7 +607,6 @@ dEQP-GLES2.functional.shaders.indexing.matrix_subscript.mat4_static_write_static
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_const_write_dynamic_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_const_write_static_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_dynamic_loop_write_dynamic_loop_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_dynamic_loop_write_dynamic_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.float_dynamic_loop_write_static_loop_read_fragment,Fail
@ -628,7 +623,6 @@ dEQP-GLES2.functional.shaders.indexing.tmp_array.float_static_write_static_loop_
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_const_write_dynamic_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_const_write_static_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_dynamic_loop_write_dynamic_loop_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_dynamic_loop_write_dynamic_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_dynamic_loop_write_static_loop_read_fragment,Fail
@ -645,7 +639,6 @@ dEQP-GLES2.functional.shaders.indexing.tmp_array.vec2_static_write_static_loop_r
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_const_write_dynamic_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_const_write_static_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_dynamic_loop_write_dynamic_loop_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_dynamic_loop_write_dynamic_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_dynamic_loop_write_static_loop_read_fragment,Fail
@ -662,7 +655,6 @@ dEQP-GLES2.functional.shaders.indexing.tmp_array.vec3_static_write_static_loop_r
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_const_write_dynamic_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_const_write_static_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_loop_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_dynamic_read_fragment,Fail
dEQP-GLES2.functional.shaders.indexing.tmp_array.vec4_dynamic_loop_write_static_loop_read_fragment,Fail
@ -781,14 +773,12 @@ dEQP-GLES2.functional.shaders.indexing.vector_subscript.vec4_static_loop_subscri
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_dynamic_loop_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.custom.continue_in_fragment_for_loop,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.101_iterations_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.compound_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.conditional_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.infinite_with_conditional_break_fragment,Fail
@ -797,13 +787,11 @@ dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.nested_fragment
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.nested_sequence_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.select_iteration_count_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.sequence_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.sequence_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.single_iteration_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.single_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.unconditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_constant_iterations.vector_counter_fragment,Fail
@ -819,7 +807,6 @@ dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.conditional_body
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.infinite_with_conditional_break_fragment,Fail
@ -828,7 +815,6 @@ dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.nested_fragment,
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.nested_sequence_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_dynamic_iterations.select_iteration_count_fragment,Fail
@ -850,7 +836,6 @@ dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.conditional_body
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.infinite_with_conditional_break_fragment,Fail
@ -859,7 +844,6 @@ dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.nested_fragment,
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.nested_sequence_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.do_while_uniform_iterations.select_iteration_count_fragment,Fail
@ -881,7 +865,6 @@ dEQP-GLES2.functional.shaders.loops.for_constant_iterations.conditional_body_fra
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.empty_body_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.infinite_with_conditional_break_fragment,Fail
@ -891,7 +874,6 @@ dEQP-GLES2.functional.shaders.loops.for_constant_iterations.nested_sequence_frag
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.only_continue_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.select_iteration_count_fragment,Fail
@ -913,7 +895,6 @@ dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.conditional_body_frag
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.infinite_with_conditional_break_fragment,Fail
@ -923,7 +904,6 @@ dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.nested_sequence_fragm
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.no_iterations_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.select_iteration_count_fragment,Fail
@ -931,7 +911,6 @@ dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.sequence_fragment,Fai
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.sequence_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.single_iteration_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.single_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.unconditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.unconditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_dynamic_iterations.vector_counter_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.101_iterations_fragment,Fail
@ -946,7 +925,6 @@ dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.conditional_body_frag
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.infinite_with_conditional_break_fragment,Fail
@ -956,7 +934,6 @@ dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.nested_sequence_fragm
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.no_iterations_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.select_iteration_count_fragment,Fail
@ -964,7 +941,6 @@ dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.sequence_fragment,Fai
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.sequence_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.single_iteration_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.single_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.unconditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.unconditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.for_uniform_iterations.vector_counter_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.101_iterations_fragment,Fail
@ -979,7 +955,6 @@ dEQP-GLES2.functional.shaders.loops.while_constant_iterations.conditional_body_f
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.infinite_with_conditional_break_fragment,Fail
@ -989,7 +964,6 @@ dEQP-GLES2.functional.shaders.loops.while_constant_iterations.nested_sequence_fr
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.no_iterations_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.select_iteration_count_fragment,Fail
@ -997,7 +971,6 @@ dEQP-GLES2.functional.shaders.loops.while_constant_iterations.sequence_fragment,
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.sequence_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.single_iteration_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.single_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.unconditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.unconditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_constant_iterations.vector_counter_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.101_iterations_fragment,Fail
@ -1012,7 +985,6 @@ dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.conditional_body_fr
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.infinite_with_conditional_break_fragment,Fail
@ -1022,7 +994,6 @@ dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.nested_sequence_fra
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.no_iterations_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.select_iteration_count_fragment,Fail
@ -1030,7 +1001,6 @@ dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.sequence_fragment,F
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.sequence_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.single_iteration_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.single_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.unconditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.unconditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_dynamic_iterations.vector_counter_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.101_iterations_fragment,Fail
@ -1045,7 +1015,6 @@ dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.conditional_body_fr
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.conditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.conditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.double_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.empty_body_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.function_call_inout_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.function_call_return_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.infinite_with_conditional_break_fragment,Fail
@ -1055,7 +1024,6 @@ dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.nested_sequence_fra
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.nested_tricky_dataflow_1_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.nested_tricky_dataflow_2_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.no_iterations_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.only_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.post_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.pre_increment_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.select_iteration_count_fragment,Fail
@ -1063,17 +1031,8 @@ dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.sequence_fragment,F
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.sequence_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.single_iteration_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.single_statement_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.unconditional_break_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.unconditional_continue_fragment,Fail
dEQP-GLES2.functional.shaders.loops.while_uniform_iterations.vector_counter_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.highp_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.highp_vec2_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.highp_vec3_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.highp_vec4_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.mediump_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.mediump_vec2_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.mediump_vec3_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.atan2.mediump_vec4_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.cos.highp_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.cos.highp_vec2_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.cos.highp_vec3_fragment,Fail
@ -1102,16 +1061,7 @@ dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.tan.mediump_float_
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.tan.mediump_vec2_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.tan.mediump_vec3_fragment,Fail
dEQP-GLES2.functional.shaders.operator.angle_and_trigonometry.tan.mediump_vec4_fragment,Fail
dEQP-GLES2.functional.shaders.operator.common_functions.sign.highp_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.common_functions.sign.highp_vec3_fragment,Fail
dEQP-GLES2.functional.shaders.operator.common_functions.sign.lowp_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.common_functions.sign.lowp_vec3_fragment,Fail
dEQP-GLES2.functional.shaders.operator.common_functions.sign.mediump_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.common_functions.sign.mediump_vec3_fragment,Fail
dEQP-GLES2.functional.shaders.operator.geometric.normalize.highp_float_fragment,Fail
dEQP-GLES2.functional.shaders.operator.geometric.normalize.mediump_float_fragment,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.22,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.28,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.32,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.34,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.38,Fail
@ -1120,11 +1070,9 @@ dEQP-GLES2.functional.shaders.random.all_features.fragment.49,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.5,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.53,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.63,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.73,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.78,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.80,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.86,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.88,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.89,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.93,Fail
dEQP-GLES2.functional.shaders.random.all_features.fragment.95,Fail
@ -1157,20 +1105,15 @@ dEQP-GLES2.functional.shaders.random.trigonometric.fragment.63,Fail
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.7,Fail
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.81,Fail
dEQP-GLES2.functional.shaders.random.trigonometric.fragment.92,Fail
dEQP-GLES2.functional.shaders.return.return_in_dynamic_loop_always_fragment,Fail
dEQP-GLES2.functional.shaders.return.return_in_dynamic_loop_dynamic_fragment,Fail
dEQP-GLES2.functional.shaders.return.return_in_dynamic_loop_never_fragment,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.scoping.valid.for_init_statement_variable_hides_global_variable_fragment,Fail
dEQP-GLES2.functional.shaders.scoping.valid.for_init_statement_variable_hides_local_variable_fragment,Fail
dEQP-GLES2.functional.shaders.scoping.valid.while_condition_variable_hides_global_variable_fragment,Fail
dEQP-GLES2.functional.shaders.scoping.valid.while_condition_variable_hides_local_variable_fragment,Fail
dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_assignment_fragment,Fail
dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_nested_struct_array_fragment,Crash
dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_nested_struct_array_fragment,Fail
dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_struct_array_fragment,Fail
dEQP-GLES2.functional.shaders.struct.local.loop_assignment_fragment,Fail
dEQP-GLES2.functional.shaders.struct.local.loop_nested_struct_array_fragment,Crash
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_dynamic_loop_assignment_fragment,Fail
dEQP-GLES2.functional.shaders.struct.local.nested_loop_assignment_fragment,Fail
@ -1180,6 +1123,11 @@ dEQP-GLES2.functional.shaders.struct.uniform.dynamic_loop_struct_array_fragment,
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.
dEQP-GLES2.functional.shaders.struct.uniform.equal_fragment,Fail
dEQP-GLES2.functional.shaders.struct.uniform.not_equal_fragment,Fail
dEQP-GLES2.functional.shaders.texture_functions.vertex.texture2dlod,Fail
dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecube,Fail
dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod,Fail
@ -1284,128 +1232,45 @@ dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp,Fail
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror,Fail
dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat,Fail
dEQP-GLES2.functional.texture.wrap.clamp_clamp_nearest_npot_etc1,Fail
dEQP-GLES2.functional.uniform_api.random.0,Fail
dEQP-GLES2.functional.uniform_api.random.13,Fail
dEQP-GLES2.functional.uniform_api.random.17,Fail
dEQP-GLES2.functional.uniform_api.random.20,Fail
dEQP-GLES2.functional.uniform_api.random.21,Fail
dEQP-GLES2.functional.uniform_api.random.24,Fail
dEQP-GLES2.functional.uniform_api.random.33,Fail
dEQP-GLES2.functional.uniform_api.random.47,Fail
dEQP-GLES2.functional.uniform_api.random.48,Fail
dEQP-GLES2.functional.uniform_api.random.54,Fail
dEQP-GLES2.functional.uniform_api.random.55,Fail
dEQP-GLES2.functional.uniform_api.random.71,Fail
dEQP-GLES2.functional.uniform_api.random.74,Fail
dEQP-GLES2.functional.uniform_api.random.74,Crash
dEQP-GLES2.functional.uniform_api.random.80,Fail
dEQP-GLES2.functional.uniform_api.random.81,Fail
dEQP-GLES2.functional.uniform_api.random.94,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.mat3_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.mat3_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.mat4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.mat4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.mat4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.mat4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.sampler2D_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.sampler2D_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_array.vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.mat4_mat2_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.sampler2D_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.sampler2D_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array.both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_nested_structs_arrays.both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_nested_structs_arrays.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_both,Fail
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.bool_bvec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.bool_bvec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.int_ivec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.int_ivec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.mat4_mat2_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.array_in_struct.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic.mat3_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic.mat3_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic.mat4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic.mat4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.mat4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.mat4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.sampler2D_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.sampler2D_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_struct.mat4_mat2_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.basic_struct.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.multiple_basic.both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.multiple_basic.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.multiple_basic_array.both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.multiple_basic_array.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.multiple_nested_structs_arrays.both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.multiple_nested_structs_arrays.fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.bool_bvec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.bool_bvec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.int_ivec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.int_ivec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.nested_structs_arrays.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.struct_in_array.float_vec4_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.struct_in_array.float_vec4_fragment,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.struct_in_array.mat4_mat2_both,Fail
dEQP-GLES2.functional.uniform_api.value.initial.render.struct_in_array.mat4_mat2_fragment,Fail
dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_nearest_nearest_mirror,Fail

View File

@ -131,6 +131,13 @@ spec@!opengl 1.0@gl-1.0-ortho-pos,Crash
spec@!opengl 1.0@gl-1.0-rendermode-feedback,Crash
spec@!opengl 1.0@gl-1.0-scissor-offscreen,Fail
spec@!opengl 1.0@gl-1.0-swapbuffers-behavior,Fail
# mesa/st draw path doesn't do nir-to-tgsi, so gallivm NIR fails
# to handle our vector-y, non-native-integers shaders. We could extend
# gallivm NIR to handle it, or disentangle per-stage native integers on the
# frontend.
spec@!opengl 1.0@rasterpos,Crash
spec@!opengl 1.1@clipflat,Fail
spec@!opengl 1.1@clipflat@glBegin/End(GL_POLYGON)- glFrontFace(GL_CCW)- glPolygonMode(GL_FILL)- quadrant: center bottom PV: FIRST,Fail
spec@!opengl 1.1@clipflat@glBegin/End(GL_POLYGON)- glFrontFace(GL_CCW)- glPolygonMode(GL_FILL)- quadrant: center top PV: FIRST,Fail
@ -417,7 +424,7 @@ spec@!opengl 1.1@linestipple@Factor 3x,Fail
spec@!opengl 1.1@linestipple@Line loop,Fail
spec@!opengl 1.1@linestipple@Line strip,Fail
spec@!opengl 1.1@longprim,Crash
spec@!opengl 1.1@point-line-no-cull,Fail
spec@!opengl 1.1@point-line-no-cull,Crash
spec@!opengl 1.1@polygon-mode-offset,Fail
spec@!opengl 1.1@polygon-mode-offset@config 0: Expected white pixel on bottom edge,Fail
spec@!opengl 1.1@polygon-mode-offset@config 0: Expected white pixel on left edge,Fail
@ -492,6 +499,12 @@ spec@!opengl 1.2@texwrap 3d proj bordercolor,Fail
spec@!opengl 1.2@texwrap 3d proj bordercolor@GL_RGBA8- projected- border color only,Fail
spec@!opengl 1.4@copy-pixels,Fail
spec@!opengl 1.4@gl-1.4-polygon-offset,Fail
# 1D textures are treated as 2D, but we don't force
# the Y clamp to repeat or edge, so you get interpolation, and we get
# different undefined values in the y coordinate in the new shader.
spec@!opengl 1.4@gl-1.4-tex1d-2dborder,Fail
spec@!opengl 1.4@tex-miplevel-selection,Fail
spec@!opengl 1.4@tex-miplevel-selection-lod,Fail
spec@!opengl 1.4@tex-miplevel-selection-lod-bias,Fail
@ -636,7 +649,10 @@ spec@arb_pixel_buffer_object@cubemap npot pbo,Fail
spec@arb_pixel_buffer_object@fbo-pbo-readpixels-small,Fail
spec@arb_pixel_buffer_object@pbo-getteximage,Fail
spec@arb_pixel_buffer_object@texsubimage pbo,Fail
spec@arb_point_parameters@arb_point_parameters-point-attenuation,Fail
# nir_lower_aapoint_impl() uses b32csel instead of fcsel.
spec@arb_point_parameters@arb_point_parameters-point-attenuation,Crash
spec@arb_point_parameters@arb_point_parameters-point-attenuation@Aliased combinations,Fail
spec@arb_point_parameters@arb_point_parameters-point-attenuation@Antialiased combinations,Fail
spec@arb_provoking_vertex@arb-provoking-vertex-render,Fail
@ -661,6 +677,10 @@ spec@arb_texture_rectangle@glsl-fs-shadow2drect-08,Fail
spec@arb_texture_rectangle@glsl-fs-shadow2drectproj,Fail
spec@arb_texture_rectangle@tex-miplevel-selection gl2:texture() 2drectshadow,Fail
spec@arb_texture_rectangle@tex-miplevel-selection gl2:textureproj 2drectshadow,Fail
# Too many texture phases, would be avoided if nir_to_tgsi did TXP or if we scheduled.
spec@arb_texture_rectangle@texrect-many,Fail
spec@arb_texture_rectangle@texwrap rect bordercolor,Fail
spec@arb_texture_rectangle@texwrap rect bordercolor@GL_RGBA8- border color only,Fail
spec@arb_texture_rectangle@texwrap rect proj bordercolor,Fail
@ -867,7 +887,6 @@ spec@ext_texture_srgb@texwrap formats-s3tc bordercolor@GL_COMPRESSED_SLUMINANCE_
spec@ext_texture_srgb@texwrap formats-s3tc bordercolor@GL_COMPRESSED_SRGB- border color only,Fail
spec@ext_texture_srgb@texwrap formats-s3tc bordercolor@GL_COMPRESSED_SRGB_ALPHA- border color only,Fail
spec@ext_texture_srgb@texwrap formats-s3tc bordercolor@GL_COMPRESSED_SRGB_S3TC_DXT1_EXT- border color only,Fail
spec@glsl-1.10@execution@built-in-functions@fs-atan-float-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-atan-vec2-vec2,Fail
spec@glsl-1.10@execution@built-in-functions@fs-atan-vec3-vec3,Fail
spec@glsl-1.10@execution@built-in-functions@fs-atan-vec4-vec4,Fail
@ -906,12 +925,6 @@ spec@glsl-1.10@execution@built-in-functions@fs-matrixcompmult-mat2-mat2,Fail
spec@glsl-1.10@execution@built-in-functions@fs-matrixcompmult-mat3-mat3,Fail
spec@glsl-1.10@execution@built-in-functions@fs-matrixcompmult-mat4-mat4,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-float-float-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-vec2-vec2-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-vec2-vec2-vec2,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-vec3-vec3-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-vec3-vec3-vec3,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-vec4-vec4-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mix-vec4-vec4-vec4,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mod-float-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mod-vec2-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-mod-vec2-vec2,Fail
@ -1057,8 +1070,6 @@ spec@glsl-1.10@execution@built-in-functions@fs-tan-float,Fail
spec@glsl-1.10@execution@built-in-functions@fs-tan-vec2,Fail
spec@glsl-1.10@execution@built-in-functions@fs-tan-vec3,Fail
spec@glsl-1.10@execution@built-in-functions@fs-tan-vec4,Fail
spec@glsl-1.10@execution@builtins@glsl-fs-atan-1,Fail
spec@glsl-1.10@execution@builtins@glsl-fs-atan-2,Fail
spec@glsl-1.10@execution@builtins@glsl-fs-atan-3,Fail
spec@glsl-1.10@execution@builtins@glsl-fs-tan-1,Fail
spec@glsl-1.10@execution@copy-propagation@glsl-copy-propagation-loop-1,Fail
@ -1073,10 +1084,7 @@ spec@glsl-1.10@execution@fs-frontfacing-ternary-0.0-neg-1.0,Fail
spec@glsl-1.10@execution@fs-frontfacing-ternary-1-neg-1,Fail
spec@glsl-1.10@execution@fs-frontfacing-ternary-1.0-neg-1.0,Fail
spec@glsl-1.10@execution@fs-frontfacing-ternary-neg-1.0-1.0,Fail
spec@glsl-1.10@execution@fs-frontfacing-ternary-vec4-neg-1.0-1.0,Fail
spec@glsl-1.10@execution@fs-loop-bounds-unrolled,Fail
spec@glsl-1.10@execution@fs-nested-loop-unrolled-with-return,Fail
spec@glsl-1.10@execution@fs-nested-return-in-loop-nested_in_if,Fail
spec@glsl-1.10@execution@fs-loop-bounds-unrolled,Crash
spec@glsl-1.10@execution@fs-notequal-of-expression,Fail
spec@glsl-1.10@execution@fs-sign-times-abs,Fail
spec@glsl-1.10@execution@fs-sign-times-neg,Fail
@ -1111,12 +1119,10 @@ spec@glsl-1.10@execution@interpolation@interpolation-none-gl_frontcolor-smooth-v
spec@glsl-1.10@execution@interpolation@interpolation-none-gl_frontsecondarycolor-smooth-fixed,Fail
spec@glsl-1.10@execution@interpolation@interpolation-none-gl_frontsecondarycolor-smooth-none,Fail
spec@glsl-1.10@execution@interpolation@interpolation-none-gl_frontsecondarycolor-smooth-vertex,Fail
spec@glsl-1.10@execution@loops@complex-loop-analysis-bug,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
spec@glsl-1.10@execution@loops@glsl-fs-loop-continue,Fail
spec@glsl-1.10@execution@loops@glsl-fs-loop-diagonal-break,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
@ -1130,7 +1136,6 @@ 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-lots-of-tex,Fail
spec@glsl-1.10@execution@samplers@glsl-fs-shadow1d,Fail
spec@glsl-1.10@execution@samplers@glsl-fs-shadow1d-01,Fail
spec@glsl-1.10@execution@samplers@glsl-fs-shadow1d-03,Fail
@ -1165,6 +1170,7 @@ spec@glsl-1.10@execution@variable-indexing@fs-temp-array-mat3-index-row-wr,Fail
spec@glsl-1.10@execution@variable-indexing@fs-temp-array-mat4-index-col-row-wr,Fail
spec@glsl-1.10@execution@variable-indexing@fs-temp-array-mat4-index-col-wr,Fail
spec@glsl-1.10@execution@variable-indexing@fs-temp-array-mat4-index-row-wr,Fail
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
@ -1326,6 +1332,8 @@ spec@glsl-1.20@execution@built-in-functions@fs-outerproduct-vec3-vec4,Fail
spec@glsl-1.20@execution@built-in-functions@fs-outerproduct-vec4-vec2,Fail
spec@glsl-1.20@execution@built-in-functions@fs-outerproduct-vec4-vec3,Fail
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
@ -1337,7 +1345,6 @@ spec@glsl-1.20@execution@fs-vec4-const-array-indirect-access-128-elements,Fail
spec@glsl-1.20@execution@fs-vec4-const-array-indirect-access-256-elements,Fail
spec@glsl-1.20@execution@glsl-fs-frontfacing,Fail
spec@glsl-1.20@execution@glsl-fs-frontfacing-not,Fail
spec@glsl-1.20@execution@matrix-out-of-bounds-access@fs-mat4-out-of-bounds-6,Crash
spec@glsl-1.20@execution@out-parameter-indexing@fs-inout-index-two-level,Fail
spec@glsl-1.20@execution@tex-miplevel-selection gl2:texture() 1d,Fail
spec@glsl-1.20@execution@tex-miplevel-selection gl2:texture() 1dshadow,Fail
@ -1374,6 +1381,8 @@ spec@glsl-1.20@execution@uniform-initializer@fs-mat4,Fail
spec@glsl-1.20@execution@uniform-initializer@fs-mat4-array,Fail
spec@glsl-1.20@execution@uniform-initializer@fs-mat4-from-const,Fail
spec@glsl-1.20@execution@uniform-initializer@fs-mat4-set-by-other-stage,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat2-index-col-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat2-index-row-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat2-index-col-row-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat3-index-col-row-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat3-index-col-wr,Fail
@ -1381,6 +1390,7 @@ spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat3-index-row-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat4-index-col-row-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat4-index-col-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat4-index-row-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-temp-array-mat4-index-wr,Fail
spec@glsl-1.20@execution@variable-indexing@fs-uniform-array-mat4-index-col-row-rd,Fail
spec@glsl-1.20@execution@variable-indexing@fs-varying-array-mat3-index-col-rd,Fail
spec@glsl-1.20@execution@variable-indexing@fs-varying-array-mat3-index-col-row-rd,Fail

View File

@ -12,7 +12,7 @@ traces:
- path: gputest/plot3d.trace
expectations:
- device: i915-g33
checksum: c85a570e1d2a45555b9e92298522f7d8
checksum: dc187485584bc45b9050e88163e72c34
- path: gputest/triangle.trace
expectations:
# Weird white bar behind Tux's head.
@ -23,11 +23,14 @@ traces:
# expectations:
# - device: i915-g33
# checksum: 8d4c52f0af9c09710d358f24c73fae3c
- path: humus/CelShading.trace
# The cel shading is pretty chunky, but maybe that's just precision stuff.
expectations:
- device: i915-g33
checksum: 4605ceed2b5c3a03f9262c546d75a8d8
#- path: humus/CelShading.trace
# # The cel shading is pretty chunky, but maybe that's just precision stuff.
# # Since the NIR change, 1D textures are getting undefined .y channels that
# # could trigger the known bad 1D texture wrap behavior, and the rendering looks
# # like undefined data.
# expectations:
# - device: i915-g33
# checksum: 4605ceed2b5c3a03f9262c546d75a8d8
# Requires GLSL 1.30
#- path: humus/DynamicBranching3.trace
# expectations:
@ -41,7 +44,7 @@ traces:
- path: humus/Portals.trace
expectations:
- device: i915-g33
checksum: 9306a8d9f37d83a327759319c46f7cae
checksum: 46a5f3c04ef40f275e1d330c2ac965c8
# The shadow raytracing shader fails to compile
#- path: humus/RaytracedShadows.trace
# expectations:
@ -55,9 +58,9 @@ traces:
- path: neverball/neverball.trace
expectations:
- device: i915-g33
checksum: 344479e929ad4bc7f7316b5e574b0131
checksum: e621fd97320f24ea4451565390f9b1ac
- path: valve/counterstrike-v2.trace
# Tree foliage rendering is extra aliased.
expectations:
- device: i915-g33
checksum: 66a18e91b95674a3a1d227ed5681257d
checksum: 4a693fcd3b2fbe388ba847ca3a93f079

View File

@ -26,6 +26,7 @@
**************************************************************************/
#include "compiler/nir/nir.h"
#include "draw/draw_context.h"
#include "util/os_misc.h"
#include "util/format/u_format.h"
@ -107,11 +108,107 @@ i915_get_name(struct pipe_screen *screen)
return buffer;
}
static const nir_shader_compiler_options i915_compiler_options = {
.fuse_ffma32 = true,
.lower_bitops = true, /* required for !CAP_INTEGERS nir_to_tgsi */
.lower_extract_byte = true,
.lower_extract_word = true,
.lower_fdiv = true,
.lower_fdph = true,
.lower_flrp32 = true,
.lower_fmod = true,
.lower_rotate = true,
.lower_uniforms_to_ubo = true,
.lower_vector_cmp = true,
.use_interpolated_input_intrinsics = true,
};
static const struct nir_shader_compiler_options gallivm_nir_options = {
.lower_bitops = true, /* required for !CAP_INTEGERS nir_to_tgsi */
.lower_scmp = true,
.lower_flrp32 = true,
.lower_flrp64 = true,
.lower_fsat = true,
.lower_bitfield_insert_to_shifts = true,
.lower_bitfield_extract_to_shifts = true,
.lower_fdph = true,
.lower_ffma16 = true,
.lower_ffma32 = true,
.lower_ffma64 = true,
.lower_fmod = true,
.lower_hadd = true,
.lower_add_sat = true,
.lower_ldexp = true,
.lower_pack_snorm_2x16 = true,
.lower_pack_snorm_4x8 = true,
.lower_pack_unorm_2x16 = true,
.lower_pack_unorm_4x8 = true,
.lower_pack_half_2x16 = true,
.lower_pack_split = true,
.lower_unpack_snorm_2x16 = true,
.lower_unpack_snorm_4x8 = true,
.lower_unpack_unorm_2x16 = true,
.lower_unpack_unorm_4x8 = true,
.lower_unpack_half_2x16 = true,
.lower_extract_byte = true,
.lower_extract_word = true,
.lower_rotate = true,
.lower_uadd_carry = true,
.lower_usub_borrow = true,
.lower_mul_2x32_64 = true,
.lower_ifind_msb = true,
.max_unroll_iterations = 32,
.use_interpolated_input_intrinsics = true,
.lower_cs_local_index_from_id = true,
.lower_uniforms_to_ubo = true,
.lower_vector_cmp = true,
.lower_device_index_to_zero = true,
/* .support_16bit_alu = true, */
};
static const void *
i915_get_compiler_options(struct pipe_screen *pscreen,
enum pipe_shader_ir ir,
enum pipe_shader_type shader)
{
assert(ir == PIPE_SHADER_IR_NIR);
if (shader == PIPE_SHADER_FRAGMENT)
return &i915_compiler_options;
else
return &gallivm_nir_options;
}
static int
i915_get_shader_param(struct pipe_screen *screen,
enum pipe_shader_type shader,
enum pipe_shader_cap cap)
{
switch (cap) {
case PIPE_SHADER_CAP_PREFERRED_IR:
return PIPE_SHADER_IR_NIR;
case PIPE_SHADER_CAP_SUPPORTED_IRS:
return (1 << PIPE_SHADER_IR_NIR) | (1 << PIPE_SHADER_IR_TGSI);
case PIPE_SHADER_CAP_INTEGERS:
/* mesa/st requires that this cap is the same across stages, and the FS
* can't do ints.
*/
return 0;
case PIPE_SHADER_CAP_INT16:
return 0;
case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR:
/* While draw could normally handle this for the VS, the NIR lowering
* to regs can't handle our non-native-integers, so we have to lower to
* if ladders.
*/
return 0;
default:
break;
}
switch(shader) {
case PIPE_SHADER_VERTEX:
switch (cap) {
@ -156,7 +253,6 @@ i915_get_shader_param(struct pipe_screen *screen,
case PIPE_SHADER_CAP_INDIRECT_CONST_ADDR:
case PIPE_SHADER_CAP_SUBROUTINES:
return 0;
case PIPE_SHADER_CAP_INTEGERS:
case PIPE_SHADER_CAP_INT64_ATOMICS:
case PIPE_SHADER_CAP_FP16:
case PIPE_SHADER_CAP_FP16_DERIVATIVES:
@ -175,11 +271,11 @@ i915_get_shader_param(struct pipe_screen *screen,
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
case PIPE_SHADER_CAP_PREFERRED_IR:
case PIPE_SHADER_CAP_TGSI_SKIP_MERGE_REGISTERS:
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTERS:
case PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS:
return 0;
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
return 32;
default:
@ -278,6 +374,9 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
case PIPE_CAP_MAX_VARYINGS:
return 10;
case PIPE_CAP_NIR_IMAGES_AS_DEREF:
return 0;
case PIPE_CAP_VENDOR_ID:
return 0x8086;
case PIPE_CAP_DEVICE_ID:
@ -530,6 +629,7 @@ i915_screen_create(struct i915_winsys *iws)
is->base.get_param = i915_get_param;
is->base.get_shader_param = i915_get_shader_param;
is->base.get_paramf = i915_get_paramf;
is->base.get_compiler_options = i915_get_compiler_options;
is->base.is_format_supported = i915_is_format_supported;
is->base.context_create = i915_create_context;

View File

@ -30,6 +30,8 @@
#include "draw/draw_context.h"
#include "nir.h"
#include "nir/nir_to_tgsi.h"
#include "util/u_helpers.h"
#include "util/u_inlines.h"
#include "util/u_math.h"
@ -476,9 +478,18 @@ i915_create_fs_state(struct pipe_context *pipe,
return NULL;
ifs->draw_data = draw_create_fragment_shader(i915->draw, templ);
ifs->state.tokens = tgsi_dup_tokens(templ->tokens);
tgsi_scan_shader(templ->tokens, &ifs->info);
if (templ->type == PIPE_SHADER_IR_NIR) {
ifs->state.tokens = nir_to_tgsi(templ->ir.nir, pipe->screen);
} else {
assert(templ->type == PIPE_SHADER_IR_TGSI);
/* we need to keep a local copy of the tokens */
ifs->state.tokens = tgsi_dup_tokens(templ->tokens);
}
ifs->state.type = PIPE_SHADER_IR_TGSI;
tgsi_scan_shader(ifs->state.tokens, &ifs->info);
/* The shader's compiled to i915 instructions here */
i915_translate_fragment_program(i915, ifs);
@ -527,7 +538,18 @@ i915_create_vs_state(struct pipe_context *pipe,
{
struct i915_context *i915 = i915_context(pipe);
/* just pass-through to draw module */
struct pipe_shader_state from_nir;
if (templ->type == PIPE_SHADER_IR_NIR) {
/* The gallivm draw path doesn't support non-native-integers NIR shaders,
* st/mesa does native-integers for the screen as a whole rather than
* per-stage, and i915 FS can't do native integers. So, convert to TGSI,
* where the draw path *does* support non-native-integers.
*/
from_nir.type = PIPE_SHADER_IR_TGSI;
from_nir.tokens = nir_to_tgsi(templ->ir.nir, pipe->screen);
templ = &from_nir;
}
return draw_create_vertex_shader(i915->draw, templ);
}

View File

@ -67,6 +67,7 @@ libi915 = static_library(
files_i915,
gnu_symbol_visibility : 'hidden',
include_directories : [inc_include, inc_src, inc_gallium, inc_gallium_aux],
dependencies : idep_nir,
)
driver_i915 = declare_dependency(