meta/blit: Track temporary texture using gl_texture_object instead of GL API object...
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 14 Jan 2016 19:14:49 +0000 (11:14 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 3 Jan 2018 00:23:51 +0000 (16:23 -0800)
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/mesa/drivers/common/meta.h
src/mesa/drivers/common/meta_blit.c

index 863997e9cc54a84d750c75793acd8381781d0263..252b236716312c4dafed8e4d25247363a6f24fb0 100644 (file)
@@ -313,8 +313,8 @@ struct fb_tex_blit_state
    struct gl_sampler_object *samp_obj;
    struct gl_sampler_object *samp_obj_save;
    struct gl_texture_object *tex_obj;
+   struct gl_texture_object *temp_tex_obj;
    GLuint stencilSamplingSave;
-   GLuint tempTex;
 };
 
 
index ea0bd3fead1f14d3a6f2b2c25f8d053e2992d7a1..0c08109e1073737f00bec6dbdf4571904c16721a 100644 (file)
@@ -644,7 +644,7 @@ blitframebuffer_texture(struct gl_context *ctx,
       if (texObj == NULL)
          return false;
 
-      fb_tex_blit.tempTex = texObj->Name;
+      fb_tex_blit.temp_tex_obj = texObj;
 
       srcLevel = 0;
       if (_mesa_is_winsys_fbo(readFb)) {
@@ -834,7 +834,7 @@ _mesa_meta_fb_tex_blit_begin(struct gl_context *ctx,
    blit->samp_obj_save = NULL;
    _mesa_reference_sampler_object(ctx, &blit->samp_obj_save,
                                   ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler);
-   blit->tempTex = 0;
+   blit->temp_tex_obj = NULL;
 }
 
 void
@@ -845,13 +845,13 @@ _mesa_meta_fb_tex_blit_end(struct gl_context *ctx, GLenum target,
       _mesa_get_current_tex_object(ctx, target);
 
    /* Either there is no temporary texture or the temporary texture is bound. */
-   assert(blit->tempTex == 0 || texObj->Name == blit->tempTex);
+   assert(blit->temp_tex_obj == NULL || blit->temp_tex_obj == texObj);
 
    /* Restore texture object state, the texture binding will be restored by
     * _mesa_meta_end().  If the texture is the temporary texture that is about
     * to be destroyed, don't bother restoring its state.
     */
-   if (blit->tempTex == 0) {
+   if (blit->temp_tex_obj == NULL) {
       /* If the target restricts values for base level or max level, we assume
        * that the original values were valid.
        */
@@ -880,8 +880,8 @@ _mesa_meta_fb_tex_blit_end(struct gl_context *ctx, GLenum target,
    _mesa_reference_sampler_object(ctx, &blit->samp_obj_save, NULL);
    _mesa_reference_sampler_object(ctx, &blit->samp_obj, NULL);
 
-   if (blit->tempTex)
-      _mesa_DeleteTextures(1, &blit->tempTex);
+   if (blit->temp_tex_obj)
+      _mesa_DeleteTextures(1, &blit->temp_tex_obj->Name);
 }
 
 struct gl_texture_object *