From 7d11b761f248ebf5cc2c6732e67656f828afb110 Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Sun, 12 May 2013 15:41:29 +0200 Subject: [PATCH] nv50,nvc0: always pull out bufctx on context destruction Reviewed-by: Ilia Mirkin Cc: "10.2" --- src/gallium/drivers/nouveau/nv50/nv50_context.c | 7 ++----- src/gallium/drivers/nouveau/nvc0/nvc0_context.c | 9 +++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/nouveau/nv50/nv50_context.c b/src/gallium/drivers/nouveau/nv50/nv50_context.c index 52e14bf9ce2..f84459224c2 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_context.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_context.c @@ -122,12 +122,9 @@ nv50_destroy(struct pipe_context *pipe) { struct nv50_context *nv50 = nv50_context(pipe); - if (nv50_context_screen(nv50)->cur_ctx == nv50) { - nv50->base.pushbuf->kick_notify = NULL; + if (nv50_context_screen(nv50)->cur_ctx == nv50) nv50_context_screen(nv50)->cur_ctx = NULL; - nouveau_pushbuf_bufctx(nv50->base.pushbuf, NULL); - } - /* need to flush before destroying the bufctx */ + nouveau_pushbuf_bufctx(nv50->base.pushbuf, NULL); nouveau_pushbuf_kick(nv50->base.pushbuf, nv50->base.pushbuf->channel); nv50_context_unreference_resources(nv50); diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_context.c b/src/gallium/drivers/nouveau/nvc0/nvc0_context.c index 83c8c34fa5b..e5040c46332 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_context.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_context.c @@ -123,11 +123,12 @@ nvc0_destroy(struct pipe_context *pipe) { struct nvc0_context *nvc0 = nvc0_context(pipe); - if (nvc0->screen->cur_ctx == nvc0) { - nvc0->base.pushbuf->kick_notify = NULL; + if (nvc0->screen->cur_ctx == nvc0) nvc0->screen->cur_ctx = NULL; - nouveau_pushbuf_bufctx(nvc0->base.pushbuf, NULL); - } + /* Unset bufctx, we don't want to revalidate any resources after the flush. + * Other contexts will always set their bufctx again on action calls. + */ + nouveau_pushbuf_bufctx(nvc0->base.pushbuf, NULL); nouveau_pushbuf_kick(nvc0->base.pushbuf, nvc0->base.pushbuf->channel); nvc0_context_unreference_resources(nvc0); -- 2.30.2