summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/r300_emit.c
diff options
context:
space:
mode:
authorJerome Glisse <glisse@freedesktop.org>2008-11-09 19:00:28 +0100
committerJerome Glisse <glisse@freedesktop.org>2008-11-14 11:26:17 +0100
commit3b43c28195ffce79822728b546a707ee14a03320 (patch)
treead1193c5807aff1c4797b0a36772d7d2f84f17ae /src/mesa/drivers/dri/r300/r300_emit.c
parente5d5dab8c03f72097ec3e5b465fe93b6e369bb2d (diff)
r300: cs + DRI2 support
If DRI2 is enabled then switch cmd assembly to directly build hw packet.
Diffstat (limited to 'src/mesa/drivers/dri/r300/r300_emit.c')
-rw-r--r--src/mesa/drivers/dri/r300/r300_emit.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_emit.c b/src/mesa/drivers/dri/r300/r300_emit.c
index d07e7baf6b..d2628633d4 100644
--- a/src/mesa/drivers/dri/r300/r300_emit.c
+++ b/src/mesa/drivers/dri/r300/r300_emit.c
@@ -178,7 +178,7 @@ static void r300EmitVec(GLcontext * ctx, struct r300_aos *aos,
aos->stride = size;
}
aos->bo = radeon_bo_open(rmesa->radeon.radeonScreen->bom,
- 0, bo_size, 32, RADEON_GEM_DOMAIN_GTT);
+ 0, bo_size, 32, RADEON_GEM_DOMAIN_GTT, 0);
aos->offset = 0;
aos->components = size;
aos->count = count;
@@ -436,6 +436,18 @@ int r300EmitArrays(GLcontext * ctx)
}
/* Setup INPUT_ROUTE. */
+ if (rmesa->radeon.radeonScreen->driScreen->dri2.enabled) {
+ R300_STATECHANGE(rmesa, vir[0]);
+ rmesa->hw.vir[0].cmd[0] &= 0xC000FFFF;
+ rmesa->hw.vir[1].cmd[0] &= 0xC000FFFF;
+ rmesa->hw.vir[0].cmd[0] |=
+ (r300VAPInputRoute0(&rmesa->hw.vir[0].cmd[R300_VIR_CNTL_0],
+ vb->AttribPtr, inputs, tab, nr) & 0x3FFF) << 16;
+ R300_STATECHANGE(rmesa, vir[1]);
+ rmesa->hw.vir[1].cmd[0] |=
+ (r300VAPInputRoute1(&rmesa->hw.vir[1].cmd[R300_VIR_CNTL_0], swizzle,
+ nr) & 0x3FFF) << 16;
+ } else {
R300_STATECHANGE(rmesa, vir[0]);
((drm_r300_cmd_header_t *) rmesa->hw.vir[0].cmd)->packet0.count =
r300VAPInputRoute0(&rmesa->hw.vir[0].cmd[R300_VIR_CNTL_0],
@@ -444,6 +456,7 @@ int r300EmitArrays(GLcontext * ctx)
((drm_r300_cmd_header_t *) rmesa->hw.vir[1].cmd)->packet0.count =
r300VAPInputRoute1(&rmesa->hw.vir[1].cmd[R300_VIR_CNTL_0], swizzle,
nr);
+ }
/* Setup INPUT_CNTL. */
R300_STATECHANGE(rmesa, vic);