From 869d3eea37ee060d62cd5b7f6031ef5a93e328a1 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Wed, 7 Oct 2009 16:07:34 +1000 Subject: drm/nv50: write tic/tsc setup to correct slots when skipping units --- src/gallium/drivers/nv50/nv50_state_validate.c | 7 ++++--- src/gallium/drivers/nv50/nv50_tex.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c index fd276203710..9079de918d0 100644 --- a/src/gallium/drivers/nv50/nv50_state_validate.c +++ b/src/gallium/drivers/nv50/nv50_state_validate.c @@ -356,13 +356,14 @@ viewport_uptodate: if (nv50->dirty & NV50_NEW_SAMPLER) { int i; - so = so_new(nv50->sampler_nr * 9 + 2, 0); - so_method(so, tesla, NV50TCL_CB_ADDR, 1); - so_data (so, NV50_CB_TSC); + so = so_new(nv50->sampler_nr * 11, 0); for (i = 0; i < nv50->sampler_nr; i++) { if (!nv50->sampler[i]) continue; + so_method(so, tesla, NV50TCL_CB_ADDR, 1); + so_data (so, ((i * 8) << NV50TCL_CB_ADDR_ID_SHIFT) | + NV50_CB_TSC); so_method(so, tesla, NV50TCL_CB_DATA(0) | (2<<29), 8); so_datap (so, nv50->sampler[i]->tsc, 8); } diff --git a/src/gallium/drivers/nv50/nv50_tex.c b/src/gallium/drivers/nv50/nv50_tex.c index 72d33150af1..ca2b883e9b1 100644 --- a/src/gallium/drivers/nv50/nv50_tex.c +++ b/src/gallium/drivers/nv50/nv50_tex.c @@ -148,18 +148,19 @@ nv50_tex_validate(struct nv50_context *nv50) struct nouveau_stateobj *so; int unit, push; - push = nv50->miptree_nr * 9 + 2; + push = nv50->miptree_nr * 11; push += MAX2(nv50->miptree_nr, nv50->state.miptree_nr) * 2; so = so_new(push, nv50->miptree_nr * 2); - so_method(so, tesla, NV50TCL_CB_ADDR, 1); - so_data (so, NV50_CB_TIC); for (unit = 0; unit < nv50->miptree_nr; unit++) { struct nv50_miptree *mt = nv50->miptree[unit]; if (!mt) continue; + so_method(so, tesla, NV50TCL_CB_ADDR, 1); + so_data (so, ((unit * 8) << NV50TCL_CB_ADDR_ID_SHIFT) | + NV50_CB_TIC); so_method(so, tesla, NV50TCL_CB_DATA(0) | 0x40000000, 8); if (nv50_tex_construct(nv50, so, mt, unit)) { NOUVEAU_ERR("failed tex validate\n"); -- cgit v1.2.3