nir/xfb: Fix offset accounting for dvec3/4
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 6 Dec 2018 22:49:27 +0000 (16:49 -0600)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 22 Jan 2019 16:42:56 +0000 (10:42 -0600)
Before, we were double-counting the component slots when we had a dvec3
or dvec4.  Instead, just add them in once and manually offset the
recorded output offset.

Fixes: 19064b8c "nir: Add a pass for gathering transform feedback info"
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
src/compiler/nir/nir_gather_xfb_info.c

index e282bba00817ccfc4f0271cb6c367a0d74927409..7e441adc07cd58cacf9eb0259d00235761d3a403 100644 (file)
@@ -76,13 +76,13 @@ add_var_xfb_outputs(nir_xfb_info *xfb,
          nir_xfb_output_info *output = &xfb->outputs[xfb->output_count++];
 
          output->buffer = var->data.xfb_buffer;
-         output->offset = *offset;
+         output->offset = *offset + s * 16;
          output->location = *location;
          output->component_mask = (comp_mask >> (s * 4)) & 0xf;
 
          (*location)++;
-         *offset += comp_slots * 4;
       }
+      *offset += comp_slots * 4;
    }
 }