These three patches are Tested-by: Mark Janes <mark.a.ja...@intel.com>
Neil Roberts <n...@linux.intel.com> writes: > When the edge flag element is enabled then the elements are slightly > reordered so that the edge flag is always the last one. This was > confusing the code to upload the 3DSTATE_VF_INSTANCING state because > that is uploaded with a separate loop which has an instruction for > each element. The indices used in these instructions weren't taking > into account the reordering so the state would be incorrect. > > v2: Use nr_elements instead of brw->vb.nr_enabled so that it will cope > when gl_VertexID is used. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91292 > Cc: "10.6 10.5" <mesa-sta...@lists.freedesktop.org> > --- > src/mesa/drivers/dri/i965/gen8_draw_upload.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/gen8_draw_upload.c > b/src/mesa/drivers/dri/i965/gen8_draw_upload.c > index 2bac5ff..1b48643 100644 > --- a/src/mesa/drivers/dri/i965/gen8_draw_upload.c > +++ b/src/mesa/drivers/dri/i965/gen8_draw_upload.c > @@ -246,13 +246,24 @@ gen8_emit_vertices(struct brw_context *brw) > } > ADVANCE_BATCH(); > > - for (unsigned i = 0; i < brw->vb.nr_enabled; i++) { > + for (unsigned i = 0, j = 0; i < brw->vb.nr_enabled; i++) { > const struct brw_vertex_element *input = brw->vb.enabled[i]; > const struct brw_vertex_buffer *buffer = > &brw->vb.buffers[input->buffer]; > + unsigned element_index; > + > + /* The edge flag element is reordered to be the last one in the code > + * above so we need to compensate for that in the element indices used > + * below. > + */ > + if (input == gen6_edgeflag_input) > + element_index = nr_elements - 1; > + else > + element_index = j++; > > BEGIN_BATCH(3); > OUT_BATCH(_3DSTATE_VF_INSTANCING << 16 | (3 - 2)); > - OUT_BATCH(i | (buffer->step_rate ? GEN8_VF_INSTANCING_ENABLE : 0)); > + OUT_BATCH(element_index | > + (buffer->step_rate ? GEN8_VF_INSTANCING_ENABLE : 0)); > OUT_BATCH(buffer->step_rate); > ADVANCE_BATCH(); > } > -- > 1.9.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev