diff options
author | Francisco Jerez <currojerez@riseup.net> | 2010-03-10 23:51:06 +0100 |
---|---|---|
committer | Francisco Jerez <currojerez@riseup.net> | 2010-03-11 00:59:59 +0100 |
commit | 878eef8c40046f77cf1527fef06f1ea95bd1629a (patch) | |
tree | 7270a42bb61615e99f69ebe20e1bbace76e71423 /src/mesa/drivers/dri/nouveau/nv04_context.c | |
parent | 56ff30a9f97a1a7094432333906544d6138d6bf2 (diff) |
dri/nouveau: Just reemit the BO state on pushbuf flush.
Reemitting dirty states on flush causes problems if the GL context
isn't fully consistent when we get to it. It didn't serve any specific
purpose, so, use nouveau_bo_state_emit instead.
Diffstat (limited to 'src/mesa/drivers/dri/nouveau/nv04_context.c')
-rw-r--r-- | src/mesa/drivers/dri/nouveau/nv04_context.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index a442425e44..3624b3af92 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.c +++ b/src/mesa/drivers/dri/nouveau/nv04_context.c @@ -75,18 +75,16 @@ nv04_channel_flush_notify(struct nouveau_channel *chan) struct nouveau_context *nctx = chan->user_private; GLcontext *ctx = &nctx->base; - if (nctx->fallback < SWRAST && ctx->DrawBuffer) { - GLcontext *ctx = &nctx->base; - + if (nctx->fallback < SWRAST) { /* Flushing seems to clobber the engine context. */ - context_dirty_i(ctx, TEX_OBJ, 0); - context_dirty_i(ctx, TEX_OBJ, 1); - context_dirty_i(ctx, TEX_ENV, 0); - context_dirty_i(ctx, TEX_ENV, 1); - context_dirty(ctx, CONTROL); - context_dirty(ctx, BLEND); - - nouveau_state_emit(ctx); + context_emit(ctx, TEX_OBJ0); + context_emit(ctx, TEX_OBJ1); + context_emit(ctx, TEX_ENV0); + context_emit(ctx, TEX_ENV1); + context_emit(ctx, CONTROL); + context_emit(ctx, BLEND); + + nouveau_bo_state_emit(ctx); } } @@ -200,9 +198,9 @@ nv04_context_create(struct nouveau_screen *screen, const GLvisual *visual, if (ret) goto fail; + init_dummy_texture(ctx); nv04_hwctx_init(ctx); nv04_render_init(ctx); - init_dummy_texture(ctx); return ctx; |