mesa: Separate transform feedback object initialization from allocation.

Both Gallium and i965 subclass gl_transform_feedback_object, which
requires implementing a custom NewTransformFeedback hook.  Creating a
helper function to initialize the fields avoids code duplication and
divergence.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Kenneth Graunke
2013-10-25 15:54:10 -07:00
parent 0e2f0baa43
commit f02ee3044f
2 changed files with 18 additions and 5 deletions

View File

@@ -205,17 +205,27 @@ _mesa_free_transform_feedback(struct gl_context *ctx)
} }
/** Initialize the fields of a gl_transform_feedback_object. */
void
_mesa_init_transform_feedback_object(struct gl_transform_feedback_object *obj,
GLuint name)
{
if (!obj)
return;
obj->Name = name;
obj->RefCount = 1;
obj->EverBound = GL_FALSE;
}
/** Default fallback for ctx->Driver.NewTransformFeedback() */ /** Default fallback for ctx->Driver.NewTransformFeedback() */
static struct gl_transform_feedback_object * static struct gl_transform_feedback_object *
new_transform_feedback(struct gl_context *ctx, GLuint name) new_transform_feedback(struct gl_context *ctx, GLuint name)
{ {
struct gl_transform_feedback_object *obj; struct gl_transform_feedback_object *obj;
obj = CALLOC_STRUCT(gl_transform_feedback_object); obj = CALLOC_STRUCT(gl_transform_feedback_object);
if (obj) { _mesa_init_transform_feedback_object(obj, name);
obj->Name = name;
obj->RefCount = 1;
obj->EverBound = GL_FALSE;
}
return obj; return obj;
} }

View File

@@ -91,6 +91,9 @@ _mesa_GetTransformFeedbackVarying(GLuint program, GLuint index,
/*** GL_ARB_transform_feedback2 ***/ /*** GL_ARB_transform_feedback2 ***/
extern void
_mesa_init_transform_feedback_object(struct gl_transform_feedback_object *obj,
GLuint name);
struct gl_transform_feedback_object * struct gl_transform_feedback_object *
_mesa_lookup_transform_feedback_object(struct gl_context *ctx, GLuint name); _mesa_lookup_transform_feedback_object(struct gl_context *ctx, GLuint name);