summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nv50
diff options
context:
space:
mode:
authorBen Skeggs <[email protected]>2008-06-16 22:02:02 +1000
committerBen Skeggs <[email protected]>2008-06-29 15:46:18 +1000
commit5d3070149267251bafc1ff982b77e7f422554f50 (patch)
tree9df80c1e5f9b873cd8ad9e212949d90435373ffb /src/gallium/drivers/nv50
parent431504b99cd55948522e86a249e656e78598ddbd (diff)
nv50: use stateobjs for sampler/image_control uploads
Diffstat (limited to 'src/gallium/drivers/nv50')
-rw-r--r--src/gallium/drivers/nv50/nv50_state_validate.c45
1 files changed, 26 insertions, 19 deletions
diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c
index 63c1756bcbf..b5a9195231b 100644
--- a/src/gallium/drivers/nv50/nv50_state_validate.c
+++ b/src/gallium/drivers/nv50/nv50_state_validate.c
@@ -181,34 +181,41 @@ nv50_state_validate(struct nv50_context *nv50)
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);
+ so = so_new(nv50->sampler_nr * 8 + 3, 0);
+ so_method(so, tesla, 0x0f00, 1);
+ so_data (so, NV50_CB_TSC);
+ so_method(so, tesla, 0x40000f04, nv50->sampler_nr * 8);
for (i = 0; i < nv50->sampler_nr; i++)
- OUT_RINGp(nv50->sampler[i], 8);
+ so_datap (so, nv50->sampler[i], 8);
+ so_emit(nvws, so);
+ so_ref(NULL, &so);
}
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++) {
+ so = so_new(nv50->miptree_nr * 8 + 3, nv50->miptree_nr * 2);
+ so_method(so, tesla, 0x0f00, 1);
+ so_data (so, NV50_CB_TIC);
+ so_method(so, tesla, 0x40000f04, nv50->miptree_nr * 8);
+ for (i = 0; i < nv50->miptree_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);
+ so_data (so, 0x2a712488);
+ so_reloc(so, mt->buffer, 0, NOUVEAU_BO_VRAM |
+ NOUVEAU_BO_LOW, 0, 0);
+ so_data (so, 0xd0c05000);
+ so_data (so, 0x00300000);
+ so_data (so, mt->base.width[0]);
+ so_data (so, (mt->base.depth[0] << 16) |
+ mt->base.height[0]);
+ so_data (so, 0x03000000);
+ so_reloc(so, mt->buffer, 0, NOUVEAU_BO_VRAM |
+ NOUVEAU_BO_HIGH, 0, 0);
}
+
+ so_emit(nvws, so);
+ so_ref(NULL, &so);
}
if (nv50->dirty & NV50_NEW_ARRAYS)