mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 14:40:10 +01:00
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
3 changed files with 13 additions and 13 deletions
|
|
@ -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…
Add table
Reference in a new issue