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() */
static struct gl_transform_feedback_object *
new_transform_feedback(struct gl_context *ctx, GLuint name)
{
struct gl_transform_feedback_object *obj;
obj = CALLOC_STRUCT(gl_transform_feedback_object);
if (obj) {
obj->Name = name;
obj->RefCount = 1;
obj->EverBound = GL_FALSE;
}
_mesa_init_transform_feedback_object(obj, name);
return obj;
}

View File

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