static struct blit_shader *
choose_blit_shader(GLenum target, struct blit_shader_table *table);
-static void cleanup_temp_texture(struct temp_texture *tex);
+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_decompress_cleanup(struct gl_context *ctx,
_mesa_meta_glsl_blit_cleanup(ctx, &ctx->Meta->Blit);
meta_glsl_clear_cleanup(ctx, &ctx->Meta->Clear);
_mesa_meta_glsl_generate_mipmap_cleanup(ctx, &ctx->Meta->Mipmap);
- cleanup_temp_texture(&ctx->Meta->TempTex);
+ cleanup_temp_texture(ctx, &ctx->Meta->TempTex);
meta_decompress_cleanup(ctx, &ctx->Meta->Decompress);
meta_drawpix_cleanup(ctx, &ctx->Meta->DrawPix);
if (old_context)
static void
init_temp_texture(struct gl_context *ctx, struct temp_texture *tex)
{
- GLuint texObj;
-
/* prefer texture rectangle */
if (_mesa_is_desktop_gl(ctx) && ctx->Extensions.NV_texture_rectangle) {
tex->Target = GL_TEXTURE_RECTANGLE;
tex->MinSize = 16; /* 16 x 16 at least */
assert(tex->MaxSize > 0);
- _mesa_CreateTextures(tex->Target, 1, &texObj);
- tex->tex_obj = NULL;
-
- if (texObj == 0)
- return;
-
- tex->tex_obj = _mesa_lookup_texture(ctx, texObj);
+ tex->tex_obj = ctx->Driver.NewTextureObject(ctx, 0xDEADBEEF, tex->Target);
}
static void
-cleanup_temp_texture(struct temp_texture *tex)
+cleanup_temp_texture(struct gl_context *ctx, struct temp_texture *tex)
{
- if (tex->tex_obj == NULL)
- return;
- _mesa_DeleteTextures(1, &tex->tex_obj->Name);
+ _mesa_delete_nameless_texture(ctx, tex->tex_obj);
tex->tex_obj = NULL;
}
_mesa_bind_sampler(ctx, ctx->Texture.CurrentUnit, blit->samp_obj_save);
_mesa_reference_sampler_object(ctx, &blit->samp_obj_save, NULL);
_mesa_reference_sampler_object(ctx, &blit->samp_obj, NULL);
-
- if (blit->temp_tex_obj)
- _mesa_DeleteTextures(1, &blit->temp_tex_obj->Name);
+ _mesa_delete_nameless_texture(ctx, blit->temp_tex_obj);
}
struct gl_texture_object *
{
struct gl_texture_image *texImage;
struct gl_texture_object *texObj;
- GLuint tempTex;
const GLenum target = rb->NumSamples > 1
? GL_TEXTURE_2D_MULTISAMPLE : GL_TEXTURE_2D;
- tempTex = 0;
- _mesa_CreateTextures(target, 1, &tempTex);
- if (tempTex == 0)
- return NULL;
-
- texObj = _mesa_lookup_texture(ctx, tempTex);
+ texObj = ctx->Driver.NewTextureObject(ctx, 0xDEADBEEF, target);
texImage = _mesa_get_tex_image(ctx, texObj, target, 0);
if (!ctx->Driver.BindRenderbufferTexImage(ctx, rb, texImage)) {
- _mesa_DeleteTextures(1, &tempTex);
+ _mesa_delete_nameless_texture(ctx, texObj);
return NULL;
}
ctx->Driver.FinishRenderTexture(ctx, rb);
}
- assert(target == texObj->Target);
- assert(tempTex == texObj->Name);
return texObj;
}
_mesa_meta_blit_shader_table_cleanup(ctx, &blit->shaders_without_depth);
if (blit->depthTex.tex_obj != NULL) {
- _mesa_DeleteTextures(1, &blit->depthTex.tex_obj->Name);
+ _mesa_delete_nameless_texture(ctx, blit->depthTex.tex_obj);
blit->depthTex.tex_obj = NULL;
}
}