nv50,nvc0: implement texture barrier

This commit is contained in:
Christoph Bumiller 2011-03-17 17:07:30 +01:00
parent 9d2ef284bb
commit 83ff3809f1
2 changed files with 22 additions and 0 deletions

View File

@ -46,6 +46,17 @@ nv50_flush(struct pipe_context *pipe,
FIRE_RING(screen->channel);
}
static void
nv50_texture_barrier(struct pipe_context *pipe)
{
struct nouveau_channel *chan = nv50_context(pipe)->screen->base.channel;
BEGIN_RING(chan, RING_3D(SERIALIZE), 1);
OUT_RING (chan, 0);
BEGIN_RING(chan, RING_3D(TEX_CACHE_CTL), 1);
OUT_RING (chan, 0x20);
}
void
nv50_default_flush_notify(struct nouveau_channel *chan)
{
@ -125,6 +136,7 @@ nv50_create(struct pipe_screen *pscreen, void *priv)
pipe->clear = nv50_clear;
pipe->flush = nv50_flush;
pipe->texture_barrier = nv50_texture_barrier;
if (!screen->cur_ctx)
screen->cur_ctx = nv50;

View File

@ -46,6 +46,15 @@ nvc0_flush(struct pipe_context *pipe,
FIRE_RING(screen->channel);
}
static void
nvc0_texture_barrier(struct pipe_context *pipe)
{
struct nouveau_channel *chan = nvc0_context(pipe)->screen->base.channel;
IMMED_RING(chan, RING_3D(SERIALIZE), 0);
IMMED_RING(chan, RING_3D(TEX_CACHE_CTL), 0);
}
static void
nvc0_context_unreference_resources(struct nvc0_context *nvc0)
{
@ -128,6 +137,7 @@ nvc0_create(struct pipe_screen *pscreen, void *priv)
pipe->clear = nvc0_clear;
pipe->flush = nvc0_flush;
pipe->texture_barrier = nvc0_texture_barrier;
if (!screen->cur_ctx)
screen->cur_ctx = nvc0;