mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
nv30: avoid leaking render state and draw shaders
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit 9870ed05dd)
This commit is contained in:
parent
c23bbfc007
commit
08baacb6db
3 changed files with 16 additions and 0 deletions
|
|
@ -103,6 +103,7 @@ nv30_render_unmap_vertices(struct vbuf_render *render,
|
|||
{
|
||||
struct nv30_render *r = nv30_render(render);
|
||||
pipe_buffer_unmap(&r->nv30->base.pipe, r->transfer);
|
||||
r->transfer = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -444,6 +445,12 @@ nv30_render_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
|
|||
static void
|
||||
nv30_render_destroy(struct vbuf_render *render)
|
||||
{
|
||||
struct nv30_render *r = nv30_render(render);
|
||||
|
||||
if (r->transfer)
|
||||
pipe_buffer_unmap(&r->nv30->base.pipe, r->transfer);
|
||||
pipe_resource_reference(&r->buffer, NULL);
|
||||
nouveau_heap_free(&r->vertprog);
|
||||
FREE(render);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "draw/draw_context.h"
|
||||
#include "tgsi/tgsi_parse.h"
|
||||
|
||||
#include "nv_object.xml.h"
|
||||
|
|
@ -147,6 +148,9 @@ nv30_fp_state_delete(struct pipe_context *pipe, void *hwcso)
|
|||
|
||||
pipe_resource_reference(&fp->buffer, NULL);
|
||||
|
||||
if (fp->draw)
|
||||
draw_delete_fragment_shader(nv30_context(pipe)->draw, fp->draw);
|
||||
|
||||
FREE((void *)fp->pipe.tokens);
|
||||
FREE(fp->insn);
|
||||
FREE(fp->consts);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "draw/draw_context.h"
|
||||
#include "util/u_dynarray.h"
|
||||
#include "tgsi/tgsi_parse.h"
|
||||
|
||||
|
|
@ -237,6 +238,10 @@ nv30_vp_state_delete(struct pipe_context *pipe, void *hwcso)
|
|||
|
||||
if (vp->translated)
|
||||
nv30_vertprog_destroy(vp);
|
||||
|
||||
if (vp->draw)
|
||||
draw_delete_vertex_shader(nv30_context(pipe)->draw, vp->draw);
|
||||
|
||||
FREE((void *)vp->pipe.tokens);
|
||||
FREE(vp);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue