intel/fs: Fix nir_intrinsic_load_barycentric_at_sample for SIMD32.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 28 Dec 2019 01:06:30 +0000 (17:06 -0800)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 10 Jan 2020 19:01:52 +0000 (11:01 -0800)
For uniform sample ID, only the first channel of msg_data will be
initialized.  We need to pass that component only to the SEND message
for SIMD lowering to unzip the descriptor source correctly.

Fixes several dozens of conformance test failures with SIMD32 fragment
shaders enabled, including:

dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at_sample.dynamic_sample_number.*

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/intel/compiler/brw_fs_nir.cpp

index 3564e9de7ba22b74e52f9e660bc0f8c4274dea35..3b05d424cbb14b784d60d56663d45f41c54517ca 100644 (file)
@@ -3597,7 +3597,7 @@ fs_visitor::nir_emit_fs_intrinsic(const fs_builder &bld,
                                          FS_OPCODE_INTERPOLATE_AT_SAMPLE,
                                          tmp,
                                          fs_reg(), /* src */
-                                         msg_data,
+                                         component(msg_data, 0),
                                          interpolation);
          } else {
             /* Make a loop that sends a message to the pixel interpolater