summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r--src/mesa/drivers/common/meta_generate_mipmap.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/mesa/drivers/common/meta_generate_mipmap.c b/src/mesa/drivers/common/meta_generate_mipmap.c
index 5ccc1d4664c..aa812580f0b 100644
--- a/src/mesa/drivers/common/meta_generate_mipmap.c
+++ b/src/mesa/drivers/common/meta_generate_mipmap.c
@@ -137,11 +137,7 @@ _mesa_meta_glsl_generate_mipmap_cleanup(struct gl_context *ctx,
_mesa_DeleteVertexArrays(1, &mipmap->VAO);
mipmap->VAO = 0;
_mesa_reference_buffer_object(ctx, &mipmap->buf_obj, NULL);
-
- if (mipmap->samp_obj != NULL) {
- _mesa_DeleteSamplers(1, &mipmap->samp_obj->Name);
- mipmap->samp_obj = NULL;
- }
+ _mesa_reference_sampler_object(ctx, &mipmap->samp_obj, NULL);
if (mipmap->FBO != 0) {
_mesa_DeleteFramebuffers(1, &mipmap->FBO);
@@ -227,12 +223,16 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
_mesa_BindTexture(target, texObj->Name);
if (mipmap->samp_obj == NULL) {
- GLuint sampler;
-
- _mesa_GenSamplers(1, &sampler);
-
- mipmap->samp_obj = _mesa_lookup_samplerobj(ctx, sampler);
- assert(mipmap->samp_obj != NULL && mipmap->samp_obj->Name == sampler);
+ mipmap->samp_obj = ctx->Driver.NewSamplerObject(ctx, 0xDEADBEEF);
+ if (mipmap->samp_obj == NULL) {
+ /* This is a bit lazy. Flag out of memory, and then don't bother to
+ * clean up. Once out of memory is flagged, the only realistic next
+ * move is to destroy the context. That will trigger all the right
+ * clean up.
+ */
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenerateMipmap");
+ return;
+ }
_mesa_bind_sampler(ctx, ctx->Texture.CurrentUnit, mipmap->samp_obj);