diff options
-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. |