mesa: Add _mesa_bind_texture method
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 13 Jan 2016 09:20:09 +0000 (01:20 -0800)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 3 Jan 2018 00:23:50 +0000 (16:23 -0800)
Light-weight glBindTexture for internal use.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
src/mesa/main/texobj.c
src/mesa/main/texobj.h

index db405988239868b9f8ee657ce519af7f1f3860b9..5dc5cb8e1a962791cc11fde1cbac4656cb7818b9 100644 (file)
@@ -1692,6 +1692,29 @@ bind_texture_object(struct gl_context *ctx, unsigned unit,
    }
 }
 
+/**
+ * Light-weight bind texture for internal users
+ *
+ * This is really just \c finish_texture_init plus \c bind_texture_object.
+ * This is intended to be used by internal Mesa functions that use
+ * \c _mesa_CreateTexture and need to bind textures (e.g., meta).
+ */
+void
+_mesa_bind_texture(struct gl_context *ctx, GLenum target,
+                   struct gl_texture_object *tex_obj)
+{
+   const GLint targetIndex = _mesa_tex_target_to_index(ctx, target);
+
+   assert(targetIndex >= 0 && targetIndex < NUM_TEXTURE_TARGETS);
+
+   if (tex_obj->Target == 0)
+      finish_texture_init(ctx, target, tex_obj, targetIndex);
+
+   assert(tex_obj->Target == target);
+   assert(tex_obj->TargetIndex == targetIndex);
+
+   bind_texture_object(ctx, ctx->Texture.CurrentUnit, tex_obj);
+}
 
 /**
  * Implement glBindTexture().  Do error checking, look-up or create a new
@@ -1764,7 +1787,6 @@ bind_texture(struct gl_context *ctx, GLenum target, GLuint texName,
    bind_texture_object(ctx, ctx->Texture.CurrentUnit, newTexObj);
 }
 
-
 void GLAPIENTRY
 _mesa_BindTexture_no_error(GLenum target, GLuint texName)
 {
index 8dea85303d6aea2250f3be47f40d714676a26635..f2d78aca0dce76ef4585ffdb6f6d86056b7ea9fc 100644 (file)
@@ -175,7 +175,9 @@ extern void
 _mesa_delete_nameless_texture(struct gl_context *ctx,
                               struct gl_texture_object *texObj);
 
-
+extern void
+_mesa_bind_texture(struct gl_context *ctx, GLenum target,
+                   struct gl_texture_object *tex_obj);
 /*@}*/
 
 /**