From 8bc3a87f4046c995c31a06ee100852c2261625d1 Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Sat, 15 Oct 2011 12:03:03 +0200 Subject: [PATCH] nv50,nvc0: reset per-instance state for inactive vertex elements --- src/gallium/drivers/nv50/nv50_vbo.c | 4 ++++ src/gallium/drivers/nvc0/nvc0_vbo.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/gallium/drivers/nv50/nv50_vbo.c b/src/gallium/drivers/nv50/nv50_vbo.c index 0ce19bec4af..ef01e61172d 100644 --- a/src/gallium/drivers/nv50/nv50_vbo.c +++ b/src/gallium/drivers/nv50/nv50_vbo.c @@ -351,6 +351,10 @@ nv50_vertex_arrays_validate(struct nv50_context *nv50) for (; i < nv50->state.num_vtxelts; ++i) { BEGIN_RING(chan, RING_3D(VERTEX_ARRAY_ATTRIB(i)), 1); OUT_RING (chan, NV50_3D_VERTEX_ATTRIB_INACTIVE); + if (unlikely(nv50->state.instance_elts & (1 << i))) { + BEGIN_RING(chan, RING_3D(VERTEX_ARRAY_PER_INSTANCE(i)), 1); + OUT_RING (chan, 0); + } BEGIN_RING(chan, RING_3D(VERTEX_ARRAY_FETCH(i)), 1); OUT_RING (chan, 0); } diff --git a/src/gallium/drivers/nvc0/nvc0_vbo.c b/src/gallium/drivers/nvc0/nvc0_vbo.c index ac778a7491c..50e99ac5df3 100644 --- a/src/gallium/drivers/nvc0/nvc0_vbo.c +++ b/src/gallium/drivers/nvc0/nvc0_vbo.c @@ -327,6 +327,8 @@ nvc0_vertex_arrays_validate(struct nvc0_context *nvc0) for (; i < nvc0->state.num_vtxelts; ++i) { BEGIN_RING(chan, RING_3D(VERTEX_ATTRIB_FORMAT(i)), 1); OUT_RING (chan, NVC0_3D_VERTEX_ATTRIB_INACTIVE); + if (unlikely(nvc0->state.instance_elts & (1 << i))) + IMMED_RING(chan, RING_3D(VERTEX_ARRAY_PER_INSTANCE(i)), 0); BEGIN_RING(chan, RING_3D(VERTEX_ARRAY_FETCH(i)), 1); OUT_RING (chan, 0); } -- 2.30.2