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.
This commit is contained in:
parent
56ff30a9f9
commit
878eef8c40
|
@ -69,8 +69,8 @@ nouveau_channel_flush_notify(struct nouveau_channel *chan)
|
|||
struct nouveau_context *nctx = chan->user_private;
|
||||
GLcontext *ctx = &nctx->base;
|
||||
|
||||
if (nctx->fallback < SWRAST && ctx->DrawBuffer)
|
||||
nouveau_state_emit(&nctx->base);
|
||||
if (nctx->fallback < SWRAST)
|
||||
nouveau_bo_state_emit(ctx);
|
||||
}
|
||||
|
||||
GLboolean
|
||||
|
|
|
@ -85,6 +85,8 @@ struct nouveau_context {
|
|||
BITSET_SET(to_nouveau_context(ctx)->dirty, NOUVEAU_STATE_##s)
|
||||
#define context_dirty_i(ctx, s, i) \
|
||||
BITSET_SET(to_nouveau_context(ctx)->dirty, NOUVEAU_STATE_##s##0 + i)
|
||||
#define context_emit(ctx, s) \
|
||||
context_drv(ctx)->emit[NOUVEAU_STATE_##s](ctx, NOUVEAU_STATE_##s)
|
||||
|
||||
GLboolean
|
||||
nouveau_context_create(const __GLcontextModes *visual, __DRIcontext *dri_ctx,
|
||||
|
|
|
@ -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);
|
||||
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_state_emit(ctx);
|
||||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue