freedreno/ir3: Demote centroid usage to pixel on non-msaa.

Like with the sample qualifier on all GPUs, use pixel on older HW when
MSAA rasterization is disabled to get reliable results.  Since I ran many
CI jobs on this, this updates the A530 TF flakes list, though I don't
think that this MR necessarily made it flakier (we were already struggling
on a5xx TF, which was what was motivating me to look at this!)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9641>
This commit is contained in:
Eric Anholt
2021-03-16 12:00:01 -07:00
parent f5717f9f54
commit 5da520cf3d
6 changed files with 29 additions and 89 deletions
@@ -295,55 +295,3 @@ dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.med
dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles.highp_mat2x4,Fail
dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles.lowp_mat2x4,Fail
dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles.mediump_mat2x4,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_lines_interleaved,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_triangles_interleaved,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_triangles_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_lines_interleaved,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_triangles_interleaved,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_triangles_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_lines_interleaved,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_triangles_interleaved,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_triangles_separate,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.10,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.4,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.8,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.lines.9,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.10,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.10,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.2,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.4,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.7,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.10,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.5,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.6,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.7,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.8,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.9,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.10,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.3,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.4,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.8,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.9,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.10,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.10,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.2,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.4,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.7,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.10,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.5,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.7,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.9,Fail
@@ -3,7 +3,4 @@
# delete lines from the test list. Be careful.
dEQP-GLES3.functional.shaders.texture_functions.texture.*gradoffset.*
dEQP-GLES3.functional.texture.units.4_units.only_3d.*
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.8
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4
dEQP-GLES3.functional.vertex_arrays.single_attribute.*
@@ -17,19 +17,6 @@ dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_array,Crash
dEQP-GLES31.functional.layout_binding.image.image2d.fragment_binding_max,Crash
dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_array,Crash
dEQP-GLES31.functional.layout_binding.image.image3d.fragment_binding_max,Crash
dEQP-GLES31.functional.separate_shader.random.105,Fail
dEQP-GLES31.functional.separate_shader.random.113,Fail
dEQP-GLES31.functional.separate_shader.random.121,Fail
dEQP-GLES31.functional.separate_shader.random.123,Fail
dEQP-GLES31.functional.separate_shader.random.35,Fail
dEQP-GLES31.functional.separate_shader.random.3,Fail
dEQP-GLES31.functional.separate_shader.random.51,Fail
dEQP-GLES31.functional.separate_shader.random.59,Fail
dEQP-GLES31.functional.separate_shader.random.63,Fail
dEQP-GLES31.functional.separate_shader.random.67,Fail
dEQP-GLES31.functional.separate_shader.random.73,Fail
dEQP-GLES31.functional.separate_shader.random.79,Fail
dEQP-GLES31.functional.separate_shader.random.81,Fail
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth24_stencil8.gather_size_pot,Fail
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.gather_size_pot,Fail
dEQP-GLES31.functional.texture.border_clamp.depth_compare_mode.depth32f_stencil8.linear_size_pot,Fail
@@ -501,13 +488,10 @@ dEQP-GLES3.functional.transform_feedback.basic_types.separate.points.mediump_vec
dEQP-GLES3.functional.transform_feedback.basic_types.separate.points.mediump_vec4,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_points_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.highp_vec4_triangles_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_points_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.lowp_vec4_triangles_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_points_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.centroid.mediump_vec4_triangles_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.flat.highp_vec4_lines_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.flat.highp_vec4_points_separate,Fail
dEQP-GLES3.functional.transform_feedback.interpolation.flat.lowp_vec4_lines_separate,Fail
@@ -534,8 +518,6 @@ dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.p
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.5,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.7,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.points.9,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.1,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.5,Fail
@@ -546,11 +528,6 @@ dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.poin
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.5,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.7,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.points.9,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.5,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.7,Fail
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.9,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.1,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.3,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.5,Fail
@@ -561,8 +538,6 @@ dEQP-GLES3.functional.transform_feedback.random.interleaved.points.3,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.points.5,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.points.7,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.points.9,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.1,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.3,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.lines.5,Fail
@@ -573,11 +548,6 @@ dEQP-GLES3.functional.transform_feedback.random.separate.points.3,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.points.5,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.points.7,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.points.9,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.1,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.3,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.5,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.7,Fail
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.9,Fail
# Flaky since running more of GLES31
dEQP-GLES31.functional.texture.border_clamp.*
@@ -10,12 +10,19 @@ dEQP-GLES31.functional.ubo.2_level_struct_array.single_buffer.packed_instance_ar
# unstable results once we enabled SMP -- some state not being reset reliably?
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.highp_mat2x3
dEQP-GLES3.functional.transform_feedback.array_element.interleaved.triangles.mediump_mat2x4
dEQP-GLES3.functional.transform_feedback.array_element.separate.triangles.mediump_vec4
dEQP-GLES3.functional.transform_feedback.array.interleaved.triangles.lowp_mat3x4
dEQP-GLES3.functional.transform_feedback.array.separate.triangles.highp_mat2x4
dEQP-GLES3.functional.transform_feedback.array.separate.triangles.mediump_mat3x4
dEQP-GLES3.functional.transform_feedback.array.separate.triangles.lowp_mat3
dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles.lowp_vec4
dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles.lowp_float
dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles.lowp_vec3
dEQP-GLES3.functional.transform_feedback.interpolation.smooth.highp_vec4_triangles_separate
dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.70
# These are in the xfails list (they usually do), but the random
# behavior occasionally results in UnexpectedPass results.
dEQP-GLES31.functional.separate_shader.random.99
+16 -2
View File
@@ -1467,10 +1467,24 @@ emit_intrinsic_barycentric(struct ir3_context *ctx, nir_intrinsic_instr *intr,
gl_system_value sysval = nir_intrinsic_barycentric_sysval(intr);
if (!ctx->so->key.msaa) {
if (sysval == SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE)
switch (sysval) {
case SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE:
sysval = SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL;
if (sysval == SYSTEM_VALUE_BARYCENTRIC_LINEAR_SAMPLE)
break;
case SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID:
if (ctx->compiler->gpu_id < 600)
sysval = SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL;
break;
case SYSTEM_VALUE_BARYCENTRIC_LINEAR_SAMPLE:
sysval = SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL;
break;
case SYSTEM_VALUE_BARYCENTRIC_LINEAR_CENTROID:
if (ctx->compiler->gpu_id < 600)
sysval = SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL;
break;
default:
break;
}
}
enum ir3_bary bary = sysval - SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL;
+6 -2
View File
@@ -444,9 +444,13 @@ ir3_setup_used_key(struct ir3_shader *shader)
}
/* Only used for deciding on behavior of
* nir_intrinsic_load_barycentric_sample
* nir_intrinsic_load_barycentric_sample, or the centroid demotion
* on older HW.
*/
key->msaa = info->fs.uses_sample_qualifier;
key->msaa = info->fs.uses_sample_qualifier ||
(shader->compiler->gpu_id < 600 &&
(BITSET_TEST(info->system_values_read, SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID) ||
BITSET_TEST(info->system_values_read, SYSTEM_VALUE_BARYCENTRIC_LINEAR_CENTROID)));
} else {
key->tessellation = ~0;
key->has_gs = true;