mesa: add new DeleteTextureImage() driver hook
Matches the NewTextureImage() hook. With new subclasses of gl_texture_image coming we need a new hook to properly delete objects of those subclasses.
This commit is contained in:
@@ -111,6 +111,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
|
||||
driver->NewTextureObject = _mesa_new_texture_object;
|
||||
driver->DeleteTexture = _mesa_delete_texture_object;
|
||||
driver->NewTextureImage = _mesa_new_texture_image;
|
||||
driver->DeleteTextureImage = _mesa_delete_texture_image;
|
||||
driver->FreeTextureImageBuffer = _mesa_free_texture_image_data;
|
||||
driver->MapTextureImage = _swrast_map_teximage;
|
||||
driver->UnmapTextureImage = _swrast_unmap_teximage;
|
||||
|
@@ -18,6 +18,13 @@ intelNewTextureImage(struct gl_context * ctx)
|
||||
return (struct gl_texture_image *) CALLOC_STRUCT(intel_texture_image);
|
||||
}
|
||||
|
||||
static void
|
||||
intelDeleteTextureImage(struct gl_context * ctx, struct gl_texture_image *img)
|
||||
{
|
||||
/* nothing special (yet) for intel_texture_image */
|
||||
_mesa_delete_texture_image(ctx, img);
|
||||
}
|
||||
|
||||
|
||||
static struct gl_texture_object *
|
||||
intelNewTextureObject(struct gl_context * ctx, GLuint name, GLenum target)
|
||||
@@ -207,6 +214,7 @@ intelInitTextureFuncs(struct dd_function_table *functions)
|
||||
|
||||
functions->NewTextureObject = intelNewTextureObject;
|
||||
functions->NewTextureImage = intelNewTextureImage;
|
||||
functions->DeleteTextureImage = intelDeleteTextureImage;
|
||||
functions->DeleteTexture = intelDeleteTextureObject;
|
||||
functions->FreeTextureImageBuffer = intel_free_texture_image_buffer;
|
||||
functions->MapTextureImage = intel_map_texture_image;
|
||||
|
@@ -83,6 +83,13 @@ struct gl_texture_image *radeonNewTextureImage(struct gl_context *ctx)
|
||||
return CALLOC(sizeof(radeon_texture_image));
|
||||
}
|
||||
|
||||
static void
|
||||
radeonDeleteTextureImage(struct gl_context * ctx, struct gl_texture_image *img)
|
||||
{
|
||||
/* nothing special (yet) for radeon_texture_image */
|
||||
_mesa_delete_texture_image(ctx, img);
|
||||
}
|
||||
|
||||
/**
|
||||
* Free memory associated with this texture image.
|
||||
*/
|
||||
@@ -1162,6 +1169,7 @@ radeon_init_common_texture_funcs(radeonContextPtr radeon,
|
||||
struct dd_function_table *functions)
|
||||
{
|
||||
functions->NewTextureImage = radeonNewTextureImage;
|
||||
functions->DeleteTextureImage = radeonDeleteTextureImage;
|
||||
functions->FreeTextureImageBuffer = radeonFreeTextureImageBuffer;
|
||||
functions->MapTexture = radeonMapTexture;
|
||||
functions->UnmapTexture = radeonUnmapTexture;
|
||||
|
@@ -476,6 +476,10 @@ struct dd_function_table {
|
||||
*/
|
||||
struct gl_texture_image * (*NewTextureImage)( struct gl_context *ctx );
|
||||
|
||||
/** Called to free a texture image object returned by NewTextureImage() */
|
||||
void (*DeleteTextureImage)(struct gl_context *ctx,
|
||||
struct gl_texture_image *);
|
||||
|
||||
/**
|
||||
* Called to free tImage->Data.
|
||||
*/
|
||||
|
@@ -601,7 +601,8 @@ _mesa_free_texture_image_data(struct gl_context *ctx,
|
||||
|
||||
|
||||
/**
|
||||
* Free texture image.
|
||||
* Free a gl_texture_image and associated data.
|
||||
* This function is a fallback called via ctx->Driver.DeleteTextureImage().
|
||||
*
|
||||
* \param texImage texture image.
|
||||
*
|
||||
|
@@ -202,7 +202,7 @@ _mesa_delete_texture_object(struct gl_context *ctx,
|
||||
for (face = 0; face < 6; face++) {
|
||||
for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
|
||||
if (texObj->Image[face][i]) {
|
||||
_mesa_delete_texture_image( ctx, texObj->Image[face][i] );
|
||||
ctx->Driver.DeleteTextureImage(ctx, texObj->Image[face][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -105,6 +105,15 @@ st_NewTextureImage(struct gl_context * ctx)
|
||||
}
|
||||
|
||||
|
||||
/** called via ctx->Driver.DeleteTextureImage() */
|
||||
static void
|
||||
st_DeleteTextureImage(struct gl_context * ctx, struct gl_texture_image *img)
|
||||
{
|
||||
/* nothing special (yet) for st_texture_image */
|
||||
_mesa_delete_texture_image(ctx, img);
|
||||
}
|
||||
|
||||
|
||||
/** called via ctx->Driver.NewTextureObject() */
|
||||
static struct gl_texture_object *
|
||||
st_NewTextureObject(struct gl_context * ctx, GLuint name, GLenum target)
|
||||
@@ -1918,6 +1927,7 @@ st_init_texture_functions(struct dd_function_table *functions)
|
||||
|
||||
functions->NewTextureObject = st_NewTextureObject;
|
||||
functions->NewTextureImage = st_NewTextureImage;
|
||||
functions->DeleteTextureImage = st_DeleteTextureImage;
|
||||
functions->DeleteTexture = st_DeleteTextureObject;
|
||||
functions->FreeTextureImageBuffer = st_FreeTextureImageBuffer;
|
||||
functions->MapTextureImage = st_MapTextureImage;
|
||||
|
Reference in New Issue
Block a user