summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nvfx
diff options
context:
space:
mode:
authorLuca Barbieri <luca@luca-barbieri.com>2010-04-12 20:36:44 +0200
committerLuca Barbieri <luca@luca-barbieri.com>2010-04-12 20:39:09 +0200
commit6d6acaebad86241dd2f94db6476554346d5aec91 (patch)
treeec4446476f606632a77ea1e06a8483e5cc1b0c0b /src/gallium/drivers/nvfx
parentf9397f34b67b49ffb00b8b98e6a11e1cdb021016 (diff)
nvfx: don't use hw index buffers on nv3x and nv44
They only apparently work on nv40 grclass cards, and this was the previous behavior of the driver. This really needs to be investigated more.
Diffstat (limited to 'src/gallium/drivers/nvfx')
-rw-r--r--src/gallium/drivers/nvfx/nvfx_screen.c3
-rw-r--r--src/gallium/drivers/nvfx/nvfx_vbo.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c
index 0950dc87b4..55bcf6abca 100644
--- a/src/gallium/drivers/nvfx/nvfx_screen.c
+++ b/src/gallium/drivers/nvfx/nvfx_screen.c
@@ -70,8 +70,9 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, int param)
case PIPE_CAP_BLEND_EQUATION_SEPARATE:
return !!screen->is_nv4x;
case NOUVEAU_CAP_HW_VTXBUF:
- case NOUVEAU_CAP_HW_IDXBUF:
return !screen->force_swtnl;
+ case NOUVEAU_CAP_HW_IDXBUF:
+ return !screen->force_swtnl && nvfx->screen->eng3d->grclass == NV40TCL;
case PIPE_CAP_MAX_COMBINED_SAMPLERS:
return 16;
case PIPE_CAP_INDEP_BLEND_ENABLE:
diff --git a/src/gallium/drivers/nvfx/nvfx_vbo.c b/src/gallium/drivers/nvfx/nvfx_vbo.c
index f40e24061f..bb8a2b63f0 100644
--- a/src/gallium/drivers/nvfx/nvfx_vbo.c
+++ b/src/gallium/drivers/nvfx/nvfx_vbo.c
@@ -90,7 +90,7 @@ nvfx_vbo_set_idxbuf(struct nvfx_context *nvfx, struct pipe_resource *ib,
return FALSE;
}
- if (!pscreen->get_param(pscreen, NOUVEAU_CAP_HW_IDXBUF) || ib_size == 1)
+ if (nvfx->screen->eng3d->grclass != NV40TCL || ib_size == 1)
return FALSE;
switch (ib_size) {