Mesa (master): nvfx: don't use hw index buffers on nv3x and nv44

Luca Barbieri lb at kemper.freedesktop.org
Mon Apr 12 18:39:51 UTC 2010


Module: Mesa
Branch: master
Commit: 6d6acaebad86241dd2f94db6476554346d5aec91
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d6acaebad86241dd2f94db6476554346d5aec91

Author: Luca Barbieri <luca at luca-barbieri.com>
Date:   Mon Apr 12 20:36:44 2010 +0200

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.

---

 src/gallium/drivers/nvfx/nvfx_screen.c |    3 ++-
 src/gallium/drivers/nvfx/nvfx_vbo.c    |    2 +-
 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 0950dc8..55bcf6a 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 f40e240..bb8a2b6 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) {




More information about the mesa-commit mailing list