The datastructures to track dirty constants weren't freed. Signed-off-by: Axel Davy <axel.d...@ens.fr> --- src/gallium/state_trackers/nine/device9.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c index c0a3c39..d7f3a40 100644 --- a/src/gallium/state_trackers/nine/device9.c +++ b/src/gallium/state_trackers/nine/device9.c @@ -481,6 +481,8 @@ void NineDevice9_dtor( struct NineDevice9 *This ) { unsigned i; + struct nine_range *r; + struct nine_range_pool *pool = &This->base.device->range_pool; DBG("This=%p\n", This); @@ -514,6 +516,23 @@ NineDevice9_dtor( struct NineDevice9 *This ) FREE(This->state.vs_const_b); FREE(This->state.vs_const_f_swvp); + if (This->state.changed.ps_const_f) { + for (r = This->state.changed.ps_const_f; r->next; r = r->next); + nine_range_pool_put_chain(pool, This->state.changed.ps_const_f, r); + } + if (This->state.changed.vs_const_f) { + for (r = This->state.changed.vs_const_f; r->next; r = r->next); + nine_range_pool_put_chain(pool, This->state.changed.vs_const_f, r); + } + if (This->state.changed.vs_const_i) { + for (r = This->state.changed.vs_const_i; r->next; r = r->next); + nine_range_pool_put_chain(pool, This->state.changed.vs_const_i, r); + } + if (This->state.changed.vs_const_b) { + for (r = This->state.changed.vs_const_b; r->next; r = r->next); + nine_range_pool_put_chain(pool, This->state.changed.vs_const_b, r); + } + if (This->swapchains) { for (i = 0; i < This->nswapchains; ++i) if (This->swapchains[i]) -- 2.10.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev