summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv50/nv50_tex.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2009-10-07 16:07:34 +1000
committerBen Skeggs <bskeggs@redhat.com>2009-10-19 09:49:02 +1000
commit869d3eea37ee060d62cd5b7f6031ef5a93e328a1 (patch)
treeb251eb2750f2313edf02872c7eeaf4072d9d0d21 /src/gallium/drivers/nv50/nv50_tex.c
parent16a06fea73b1e6e8857f7568762bfc56dcfe2940 (diff)
drm/nv50: write tic/tsc setup to correct slots when skipping units
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_tex.c')
-rw-r--r--src/gallium/drivers/nv50/nv50_tex.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gallium/drivers/nv50/nv50_tex.c b/src/gallium/drivers/nv50/nv50_tex.c
index 72d33150af..ca2b883e9b 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");