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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user