img->layer = 0;
img->use = 0;
img->loader_private = loaderPrivate;
+ img->sPriv = _screen;
return img;
}
img->use = use;
img->loader_private = loaderPrivate;
+ img->sPriv = _screen;
return img;
}
/* This should be 0 for sub images, but dup is also used for base images. */
img->dri_components = image->dri_components;
img->loader_private = loaderPrivate;
+ img->sPriv = image->sPriv;
return img;
}
img->dri_format = driGLFormatToImageFormat(rb->Format);
img->loader_private = loaderPrivate;
+ img->sPriv = context->driScreenPriv;
pipe_resource_reference(&img->texture, tex);
void
dri2_destroy_image(__DRIimage *img)
{
+ const __DRIimageLoaderExtension *imgLoader = img->sPriv->image.loader;
+ const __DRIdri2LoaderExtension *dri2Loader = img->sPriv->dri2.loader;
+
+ if (imgLoader && imgLoader->base.version >= 4 &&
+ imgLoader->destroyLoaderImageState) {
+ imgLoader->destroyLoaderImageState(img->loader_private);
+ } else if (dri2Loader && dri2Loader->base.version >= 5 &&
+ dri2Loader->destroyLoaderImageState) {
+ dri2Loader->destroyLoaderImageState(img->loader_private);
+ }
+
pipe_resource_reference(&img->texture, NULL);
FREE(img);
}
img->dri_format = driGLFormatToImageFormat(obj->Image[face][level]->TexFormat);
img->loader_private = loaderPrivate;
+ img->sPriv = context->driScreenPriv;
pipe_resource_reference(&img->texture, tex);