intel/fs: Don't copy-propagate stride=0 sources into ddx/ddy
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 2 Sep 2020 15:13:16 +0000 (10:13 -0500)
committerMarge Bot <eric+marge@anholt.net>
Wed, 2 Sep 2020 20:31:32 +0000 (20:31 +0000)
This can come up if, for instance, the shader does a derivative of a
uniform or flat input.  Ideally, NIR would use divergence analysis to
get rid of the derivative in this case but it doesn't right now.  This
fixes a crash in F1 2017.

Cc: mesa-stable@lists.freedesktop.org
Reported-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Tested-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6564>

src/intel/compiler/brw_fs_copy_propagation.cpp

index a33043573a53a23f46b1f3545c660887bf35430a..31e55e64a27bf6fb0b99670e6e0ca15ad8d5ecd7 100644 (file)
@@ -524,7 +524,7 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry)
     */
    const unsigned entry_stride = (entry->src.file == FIXED_GRF ? 1 :
                                   entry->src.stride);
-   if (instruction_requires_packed_data(inst) && entry_stride > 1)
+   if (instruction_requires_packed_data(inst) && entry_stride != 1)
       return false;
 
    /* Bail if the result of composing both strides would exceed the