From 4dd81b4e2f4f9e7f0ccaf5cc32aa43b5b40c4efd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Iv=C3=A1n=20Briano?= Date: Wed, 16 Mar 2022 19:26:54 -0700 Subject: [PATCH] intel/fs: handle interpolation modes for at_sample and at_offset too Fixes dEQP-VK.draw.*.linear_interpolation.* Reviewed-by: Lionel Landwerlin Cc: mesa-stable Reviewed-by: Ivan Briano Part-of: --- src/intel/ci/anv-tgl-fails.txt | 35 ----------------------------------- src/intel/compiler/brw_fs.cpp | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/src/intel/ci/anv-tgl-fails.txt b/src/intel/ci/anv-tgl-fails.txt index b513dbc..dfd323f 100644 --- a/src/intel/ci/anv-tgl-fails.txt +++ b/src/intel/ci/anv-tgl-fails.txt @@ -46,29 +46,7 @@ dEQP-VK.drm_format_modifiers.export_import.r8_unorm,Crash dEQP-VK.drm_format_modifiers.export_import.r8g8_unorm,Crash dEQP-VK.drm_format_modifiers.export_import.r8g8b8a8_srgb,Crash -# 1.3.3.0 uprev: -dEQP-VK.draw.dynamic_rendering.linear_interpolation.no_offset_16_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.no_offset_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.no_offset_8_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.offset_min_16_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.offset_min_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.offset_min_4_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.offset_min_8_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.no_offset_2_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.no_offset_4_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.no_offset_8_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_max_16_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_max_2_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_max_4_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_max_8_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_min_16_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_min_4_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_min_8_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.offset_min_2_samples,Fail - # sharding from 10 to 12 jobs -dEQP-VK.draw.dynamic_rendering.linear_interpolation.offset_max_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.linear_interpolation.offset_max_16_samples,Fail dEQP-VK.drm_format_modifiers.export_import.r8g8b8a8_unorm,Crash dEQP-VK.drm_format_modifiers.export_import_fmt_features2.a4r4g4b4_unorm_pack16,Crash dEQP-VK.drm_format_modifiers.export_import_fmt_features2.b5g6r5_unorm_pack16,Crash @@ -84,17 +62,4 @@ dEQP-VK.dynamic_rendering.suballocation.load_store_op_none.stencil_d24_unorm_s8_ dEQP-VK.dynamic_rendering.suballocation.load_store_op_none.stencil_d32_sfloat_s8_uint_load_op_none_store_op_dontcare,Crash # New CTS failures in 1.3.5.0 -dEQP-VK.draw.dynamic_rendering.complete_secondary_cmd_buff.linear_interpolation.offset_max_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail -dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_max_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_max_4_samples,Fail -dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_min_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.partial_secondary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail -dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.no_offset_4_samples,Fail -dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_max_8_samples,Fail -dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_16_samples,Fail -dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_2_samples,Fail -dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_4_samples,Fail -dEQP-VK.draw.dynamic_rendering.primary_cmd_buff.linear_interpolation.offset_min_8_samples,Fail -dEQP-VK.draw.renderpass.linear_interpolation.no_offset_16_samples,Fail dEQP-VK.drm_format_modifiers.export_import_fmt_features2.b4g4r4a4_unorm_pack16,Crash diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index 72ed143..2335e80 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -7159,6 +7159,8 @@ brw_compute_barycentric_interp_modes(const struct intel_device_info *devinfo, case nir_intrinsic_load_barycentric_pixel: case nir_intrinsic_load_barycentric_centroid: case nir_intrinsic_load_barycentric_sample: + case nir_intrinsic_load_barycentric_at_sample: + case nir_intrinsic_load_barycentric_at_offset: break; default: continue; @@ -7375,6 +7377,20 @@ brw_nir_populate_wm_prog_data(const nir_shader *shader, prog_data->barycentric_interp_modes = brw_compute_barycentric_interp_modes(devinfo, shader); + + /* From the BDW PRM documentation for 3DSTATE_WM: + * + * "MSDISPMODE_PERSAMPLE is required in order to select Perspective + * Sample or Non- perspective Sample barycentric coordinates." + * + * So cleanup any potentially set sample barycentric mode when not in per + * sample dispatch. + */ + if (prog_data->persample_dispatch == BRW_NEVER) { + prog_data->barycentric_interp_modes &= + ~BITFIELD_BIT(BRW_BARYCENTRIC_PERSPECTIVE_SAMPLE); + } + prog_data->uses_nonperspective_interp_modes |= (prog_data->barycentric_interp_modes & BRW_BARYCENTRIC_NONPERSPECTIVE_BITS) != 0; -- 2.7.4