summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv50/nv50_state_validate.c
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-06-13 12:09:46 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-06-29 15:46:18 +1000
commitc0ed6a871cd3513e17a1fab960f5626485ffed13 (patch)
treed757892d923a980a365a257b0bdd4b752d4c8ab9 /src/gallium/drivers/nv50/nv50_state_validate.c
parent0d7f25c890e1f1505625542c256d4512c065449a (diff)
nv50: do tsc/tic upload + stub out shader TEX stuff
Diffstat (limited to 'src/gallium/drivers/nv50/nv50_state_validate.c')
-rw-r--r--src/gallium/drivers/nv50/nv50_state_validate.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c
index a3f399a139..63c1756bcb 100644
--- a/src/gallium/drivers/nv50/nv50_state_validate.c
+++ b/src/gallium/drivers/nv50/nv50_state_validate.c
@@ -178,6 +178,39 @@ nv50_state_validate(struct nv50_context *nv50)
so_ref(NULL, &so);
}
+ if (nv50->dirty & NV50_NEW_SAMPLER) {
+ int i;
+
+ BEGIN_RING(tesla, 0x0f00, 1);
+ OUT_RING ((NV50_CB_TSC << 0) | (0 << 8));
+ BEGIN_RING(tesla, 0x40000f04, nv50->sampler_nr * 8);
+ for (i = 0; i < nv50->sampler_nr; i++)
+ OUT_RINGp(nv50->sampler[i], 8);
+ }
+
+ if (nv50->dirty & NV50_NEW_TEXTURE) {
+ int i;
+
+ BEGIN_RING(tesla, 0x0f00, 1);
+ OUT_RING ((NV50_CB_TIC << 0) | (0 << 8));
+ BEGIN_RING(tesla, 0x40000f04, nv50->miptree_nr * 8);
+ for (i = 0; i < nv50->sampler_nr; i++) {
+ struct nv50_miptree *mt = nv50->miptree[i];
+
+ OUT_RING (0x2a712488);
+ OUT_RELOCl(mt->buffer, 0,
+ NOUVEAU_BO_VRAM | NOUVEAU_BO_LOW);
+ OUT_RING (0xd0c05000);
+ OUT_RING (0x00300000);
+ OUT_RING (mt->base.width[0]);
+ OUT_RING ((mt->base.depth[0] << 16) |
+ mt->base.height[0]);
+ OUT_RING (0x03000000);
+ OUT_RELOCh(mt->buffer, 0,
+ NOUVEAU_BO_VRAM | NOUVEAU_BO_HIGH);
+ }
+ }
+
if (nv50->dirty & NV50_NEW_ARRAYS)
nv50_vbo_validate(nv50);