summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nouveau
diff options
context:
space:
mode:
authorChristoph Bumiller <christoph.bumiller@speed.at>2013-05-12 15:41:29 +0200
committerIan Romanick <ian.d.romanick@intel.com>2014-05-29 15:01:49 -0700
commit4afbd9b0e29fa7d45f6d9168b52d9b207d5b61a8 (patch)
treebe330171f17e3a612c7557695ba6e2aa5b1b85bb /src/gallium/drivers/nouveau
parent697316fe0667fcf44dd52f69906a920450cbd1e4 (diff)
nv50,nvc0: always pull out bufctx on context destruction
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "10.2" <mesa-stable@lists.freedesktop.org> (cherry picked from commit 7d11b761f248ebf5cc2c6732e67656f828afb110)
Diffstat (limited to 'src/gallium/drivers/nouveau')
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_context.c7
-rw-r--r--src/gallium/drivers/nouveau/nvc0/nvc0_context.c9
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 0e13556631a..2e6e3fef804 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);