Mesa (master): nv30: reset fragprog bufctx at bind time

Ilia Mirkin imirkin at kemper.freedesktop.org
Tue Jun 30 03:19:36 UTC 2015


Module: Mesa
Branch: master
Commit: bad107f2ec24b16118f4d99c54b853277b1a966d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bad107f2ec24b16118f4d99c54b853277b1a966d

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Mon Jun 29 02:38:38 2015 -0400

nv30: reset fragprog bufctx at bind time

A clear will do a partial validate, which will in turn reference all the
buffers in the bufctx again. However the fragprog last validated might
have already been deleted. So reset the bufctx when updating state.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/gallium/drivers/nouveau/nv30/nv30_fragprog.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c b/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c
index dbf36fd..54f91bb 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_fragprog.c
@@ -165,8 +165,15 @@ static void
 nv30_fp_state_bind(struct pipe_context *pipe, void *hwcso)
 {
    struct nv30_context *nv30 = nv30_context(pipe);
+   struct nv30_fragprog *fp = hwcso;
+
+   /* reset the bucftx so that we don't keep a dangling reference to the fp
+    * code
+    */
+   if (fp != nv30->state.fragprog)
+      PUSH_RESET(nv30->base.pushbuf, BUFCTX_FRAGPROG);
 
-   nv30->fragprog.program = hwcso;
+   nv30->fragprog.program = fp;
    nv30->dirty |= NV30_NEW_FRAGPROG;
 }
 




More information about the mesa-commit mailing list