Browse Source

mesa: Fixed a texture memory leak

The current texture for any particular texture unit is given an additional
reference in update_texture_state(); but if the context is closed before
that texture can be released (which is quite frequent in normal use, unless
a program unbinds and deletes the texture and renders without it to force
a call to update_texture_state(), the memory is lost.

This affects general Mesa; but the i965 is particularly affected because
it allocates a considerable amount of additional memory for each allocated
texture.
tags/mesa_7_6_rc1
Robert Ellison 16 years ago
parent
commit
c230767d69
1 changed files with 3 additions and 0 deletions
  1. 3
    0
      src/mesa/main/texstate.c

+ 3
- 0
src/mesa/main/texstate.c View File

@@ -791,6 +791,9 @@ _mesa_free_texture_data(GLcontext *ctx)

/* unreference current textures */
for (u = 0; u < MAX_TEXTURE_IMAGE_UNITS; u++) {
/* The _Current texture could account for another reference */
_mesa_reference_texobj(&ctx->Texture.Unit[u]._Current, NULL);

for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) {
_mesa_reference_texobj(&ctx->Texture.Unit[u].CurrentTex[tgt], NULL);
}

Loading…
Cancel
Save