mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
mesa: Use _mesa_delete_transform_feedback_object in drivers
Function _mesa_delete_transform_feedback_object called from within drivers once driver-specific clean-up has been done. Brings into conformity with how other GL objects are handled. CC: Eric Anholt <eric@anholt.net> CC: Kenneth Graunke <kenneth@whitecape.org> Signed-off-by: Yevhenii Kolesnikov <yevhenii.kolesnikov@globallogic.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
4f767ded6e
commit
0325860e90
4 changed files with 29 additions and 29 deletions
|
|
@ -211,15 +211,10 @@ brw_delete_transform_feedback(struct gl_context *ctx,
|
|||
struct brw_transform_feedback_object *brw_obj =
|
||||
(struct brw_transform_feedback_object *) obj;
|
||||
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(obj->Buffers); i++) {
|
||||
_mesa_reference_buffer_object(ctx, &obj->Buffers[i], NULL);
|
||||
}
|
||||
|
||||
brw_bo_unreference(brw_obj->offset_bo);
|
||||
brw_bo_unreference(brw_obj->prim_count_bo);
|
||||
|
||||
free(obj->Label);
|
||||
free(brw_obj);
|
||||
_mesa_delete_transform_feedback_object(ctx, obj);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -198,6 +198,27 @@ _mesa_init_transform_feedback_object(struct gl_transform_feedback_object *obj,
|
|||
obj->EverBound = GL_FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a transform feedback object. Called via
|
||||
* ctx->Driver->DeleteTransformFeedback, if not overwritten by driver. In
|
||||
* the latter case, called from the driver after all driver-specific clean-up
|
||||
* has been done.
|
||||
*
|
||||
* \param ctx GL context to wich transform feedback object belongs.
|
||||
* \param obj Transform feedback object due to be deleted.
|
||||
*/
|
||||
void
|
||||
_mesa_delete_transform_feedback_object(struct gl_context *ctx,
|
||||
struct gl_transform_feedback_object
|
||||
*obj)
|
||||
{
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(obj->Buffers); i++) {
|
||||
_mesa_reference_buffer_object(ctx, &obj->Buffers[i], NULL);
|
||||
}
|
||||
|
||||
free(obj->Label);
|
||||
free(obj);
|
||||
}
|
||||
|
||||
/** Default fallback for ctx->Driver.NewTransformFeedback() */
|
||||
static struct gl_transform_feedback_object *
|
||||
|
|
@ -213,22 +234,6 @@ new_transform_feedback_fallback(struct gl_context *ctx, GLuint name)
|
|||
return obj;
|
||||
}
|
||||
|
||||
/** Default fallback for ctx->Driver.DeleteTransformFeedback() */
|
||||
static void
|
||||
delete_transform_feedback_fallback(struct gl_context *ctx,
|
||||
struct gl_transform_feedback_object *obj)
|
||||
{
|
||||
GLuint i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(obj->Buffers); i++) {
|
||||
_mesa_reference_buffer_object(ctx, &obj->Buffers[i], NULL);
|
||||
}
|
||||
|
||||
free(obj->Label);
|
||||
free(obj);
|
||||
}
|
||||
|
||||
|
||||
/** Default fallback for ctx->Driver.BeginTransformFeedback() */
|
||||
static void
|
||||
begin_transform_feedback_fallback(struct gl_context *ctx, GLenum mode,
|
||||
|
|
@ -270,7 +275,7 @@ void
|
|||
_mesa_init_transform_feedback_functions(struct dd_function_table *driver)
|
||||
{
|
||||
driver->NewTransformFeedback = new_transform_feedback_fallback;
|
||||
driver->DeleteTransformFeedback = delete_transform_feedback_fallback;
|
||||
driver->DeleteTransformFeedback = _mesa_delete_transform_feedback_object;
|
||||
driver->BeginTransformFeedback = begin_transform_feedback_fallback;
|
||||
driver->EndTransformFeedback = end_transform_feedback_fallback;
|
||||
driver->PauseTransformFeedback = pause_transform_feedback_fallback;
|
||||
|
|
|
|||
|
|
@ -108,6 +108,11 @@ extern void
|
|||
_mesa_init_transform_feedback_object(struct gl_transform_feedback_object *obj,
|
||||
GLuint name);
|
||||
|
||||
extern void
|
||||
_mesa_delete_transform_feedback_object(struct gl_context *ctx,
|
||||
struct gl_transform_feedback_object
|
||||
*obj);
|
||||
|
||||
struct gl_transform_feedback_object *
|
||||
_mesa_lookup_transform_feedback_object(struct gl_context *ctx, GLuint name);
|
||||
|
||||
|
|
|
|||
|
|
@ -96,12 +96,7 @@ st_delete_transform_feedback(struct gl_context *ctx,
|
|||
pipe_so_target_reference(&sobj->targets[i], NULL);
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sobj->base.Buffers); i++) {
|
||||
_mesa_reference_buffer_object(ctx, &sobj->base.Buffers[i], NULL);
|
||||
}
|
||||
|
||||
free(obj->Label);
|
||||
free(obj);
|
||||
_mesa_delete_transform_feedback_object(ctx, obj);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue