OSDN Git Service

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)
committerEmil Velikov <emil.l.velikov@gmail.com>
Tue, 29 Jan 2019 17:44:27 +0000 (17:44 +0000)
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>
(cherry picked from commit 4f99ac9144abda9b4e7d0891571eb1691b853c25)

src/compiler/nir/nir_gather_xfb_info.c

index e282bba..7e441ad 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;
    }
 }