anv/apply_pipeline_layout: Set the cursor in lower_res_reindex_intrinsic
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 14 Dec 2018 00:33:46 +0000 (18:33 -0600)
committerJason Ekstrand <jason@jlekstrand.net>
Tue, 8 Jan 2019 00:38:29 +0000 (00:38 +0000)
The loop through instructions doesn't set the cursor for us so unless we
set it somewhere, we may end up emitting instructions in the wrong
place.  The only reason why we haven't been bitten by this in the past
is that it only happens in a few variable pointers cases and the CTS
tests for those don't use much control flow so things were getting
emitted in the correct order by accident.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/intel/vulkan/anv_nir_apply_pipeline_layout.c

index 4e405ae4bb0bc9abb4b06893b2d4d7f7d7842cbe..00f0798da35878648e06fc4a3303b29ef9f5ac36 100644 (file)
@@ -169,6 +169,8 @@ lower_res_reindex_intrinsic(nir_intrinsic_instr *intrin,
 {
    nir_builder *b = &state->builder;
 
+   b->cursor = nir_before_instr(&intrin->instr);
+
    /* For us, the resource indices are just indices into the binding table and
     * array elements are sequential.  A resource_reindex just turns into an
     * add of the two indices.