diff options
author | Sergii Romantsov <[email protected]> | 2019-05-27 16:45:35 +0300 |
---|---|---|
committer | Sergii Romantsov <[email protected]> | 2019-07-16 13:48:47 +0300 |
commit | 7417b432113cd5b542f5bb4efd6c2b6120157576 (patch) | |
tree | 1e23477b23ad15910a354420a0b790ae260ec6ec /src | |
parent | afa102d65bb6df27b3cbbb78355101cdd2e139cf (diff) |
meta: memory leak of CopyPixels usage
Meta of CopyPixel generates a buffer object
but does not free it on cleanup.
Fixes: 37d11b13ce1d (meta: Don't pollute the buffer object namespace in _mesa_meta_setup_vertex_objects)
Signed-off-by: Sergii Romantsov <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/common/meta.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 302c5fffeb9..18ed6e7f168 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -104,6 +104,8 @@ static void cleanup_temp_texture(struct gl_context *ctx, struct temp_texture *tex); static void meta_glsl_clear_cleanup(struct gl_context *ctx, struct clear_state *clear); +static void meta_copypix_cleanup(struct gl_context *ctx, + struct copypix_state *copypix); static void meta_decompress_cleanup(struct gl_context *ctx, struct decompress_state *decompress); static void meta_drawpix_cleanup(struct gl_context *ctx, @@ -422,6 +424,7 @@ _mesa_meta_free(struct gl_context *ctx) _mesa_make_current(ctx, NULL, NULL); _mesa_meta_glsl_blit_cleanup(ctx, &ctx->Meta->Blit); meta_glsl_clear_cleanup(ctx, &ctx->Meta->Clear); + meta_copypix_cleanup(ctx, &ctx->Meta->CopyPix); _mesa_meta_glsl_generate_mipmap_cleanup(ctx, &ctx->Meta->Mipmap); cleanup_temp_texture(ctx, &ctx->Meta->TempTex); meta_decompress_cleanup(ctx, &ctx->Meta->Decompress); @@ -1595,6 +1598,17 @@ meta_glsl_clear_cleanup(struct gl_context *ctx, struct clear_state *clear) } } +static void +meta_copypix_cleanup(struct gl_context *ctx, struct copypix_state *copypix) +{ + if (copypix->VAO == 0) + return; + _mesa_DeleteVertexArrays(1, ©pix->VAO); + copypix->VAO = 0; + _mesa_reference_buffer_object(ctx, ©pix->buf_obj, NULL); +} + + /** * Given a bitfield of BUFFER_BIT_x draw buffers, call glDrawBuffers to * set GL to only draw to those buffers. |