summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2014-12-30 23:19:47 -0500
committerIlia Mirkin <imirkin@alum.mit.edu>2014-12-30 23:30:23 -0500
commitbe0311c9626eef841f6d245359759cf1e082aebf (patch)
tree35180d95102abd447bd5efc2264108a713745443 /src/gallium/drivers/nouveau/nv50/nv50_vbo.c
parent609c3e51f5ca8abb15867537997369e7e8a678e3 (diff)
downloadexternal_mesa3d-be0311c9626eef841f6d245359759cf1e082aebf.zip
external_mesa3d-be0311c9626eef841f6d245359759cf1e082aebf.tar.gz
external_mesa3d-be0311c9626eef841f6d245359759cf1e082aebf.tar.bz2
nv50,nvc0: set vertex id base to index_bias
Fixes the piglits which check that gl_VertexID includes the base vertex offset: arb_draw_indirect-vertexid elements gl-3.2-basevertex-vertexid Note that this leaves out the original G80, for which this will continue to fail. It could be fixed by passing a driver constbuf value in, but that's beyond the scope of this change. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "10.3 10.4" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/gallium/drivers/nouveau/nv50/nv50_vbo.c')
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_vbo.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
index 5a4a457..c1590ee 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_vbo.c
@@ -472,6 +472,10 @@ nv50_draw_arrays(struct nv50_context *nv50,
if (nv50->state.index_bias) {
BEGIN_NV04(push, NV50_3D(VB_ELEMENT_BASE), 1);
PUSH_DATA (push, 0);
+ if (nv50->screen->base.class_3d >= NV84_3D_CLASS) {
+ BEGIN_NV04(push, SUBC_3D(NV84_3D_VERTEX_ID_BASE), 1);
+ PUSH_DATA (push, 0);
+ }
nv50->state.index_bias = 0;
}
@@ -594,6 +598,10 @@ nv50_draw_elements(struct nv50_context *nv50, boolean shorten,
if (index_bias != nv50->state.index_bias) {
BEGIN_NV04(push, NV50_3D(VB_ELEMENT_BASE), 1);
PUSH_DATA (push, index_bias);
+ if (nv50->screen->base.class_3d >= NV84_3D_CLASS) {
+ BEGIN_NV04(push, SUBC_3D(NV84_3D_VERTEX_ID_BASE), 1);
+ PUSH_DATA (push, index_bias);
+ }
nv50->state.index_bias = index_bias;
}