Mesa (master): draw: Ensure that prepare is always run after LLVM garbagge collection.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Fri Jan 27 18:27:59 UTC 2012


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

Author: José Fonseca <jfonseca at vmware.com>
Date:   Fri Jan 27 14:40:06 2012 +0000

draw: Ensure that prepare is always run after LLVM garbagge collection.

Should avoid dangling pointer derreference with

  glean --run results --overwrite --quick --tests texSwizzle

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/gallium/auxiliary/draw/draw_llvm.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index e71c802..b81c725 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -65,8 +65,13 @@ static void
 draw_llvm_garbage_collect_callback(void *cb_data)
 {
    struct draw_llvm *llvm = (struct draw_llvm *) cb_data;
+   struct draw_context *draw = llvm->draw;
    struct draw_llvm_variant_list_item *li;
 
+   /* Ensure prepare will be run and shaders recompiled */
+   assert(!draw->suspend_flushing);
+   draw_do_flush(draw, DRAW_FLUSH_STATE_CHANGE);
+
    /* free all shader variants */
    li = first_elem(&llvm->vs_variants_list);
    while (!at_end(&llvm->vs_variants_list, li)) {




More information about the mesa-commit mailing list