X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fstate_tracker%2Fst_cb_xformfb.c;h=4126e64345b35d0c5a624181d50501c60c2b4b1d;hb=feb32f898c6d36f3c81c3ce2d5a3f8ddd915e332;hp=a5cf3dfd5a940d082bfbc277351c4d65d0f412d9;hpb=95106f6bfbbb87b702e4bbba98e2eaea71924cd9;p=mesa.git diff --git a/src/mesa/state_tracker/st_cb_xformfb.c b/src/mesa/state_tracker/st_cb_xformfb.c index a5cf3dfd5a9..4126e64345b 100644 --- a/src/mesa/state_tracker/st_cb_xformfb.c +++ b/src/mesa/state_tracker/st_cb_xformfb.c @@ -37,6 +37,7 @@ #include "main/bufferobj.h" #include "main/context.h" #include "main/transformfeedback.h" +#include "util/u_memory.h" #include "st_cb_bufferobjects.h" #include "st_cb_xformfb.h" @@ -96,11 +97,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); + _mesa_delete_transform_feedback_object(ctx, obj); } @@ -124,8 +121,8 @@ st_begin_transform_feedback(struct gl_context *ctx, GLenum mode, struct st_buffer_object *bo = st_buffer_object(sobj->base.Buffers[i]); if (bo && bo->buffer) { - unsigned stream = - obj->shader_program->LinkedTransformFeedback.Buffers[i].Stream; + unsigned stream = obj->program->sh.LinkedTransformFeedback-> + Buffers[i].Stream; /* Check whether we need to recreate the target. */ if (!sobj->targets[i] || @@ -203,8 +200,8 @@ st_end_transform_feedback(struct gl_context *ctx, pipe_so_target_reference(&sobj->draw_count[i], NULL); for (i = 0; i < ARRAY_SIZE(sobj->targets); i++) { - unsigned stream = - obj->shader_program->LinkedTransformFeedback.Buffers[i].Stream; + unsigned stream = obj->program->sh.LinkedTransformFeedback-> + Buffers[i].Stream; /* Is it not bound or already set for this stream? */ if (!sobj->targets[i] || sobj->draw_count[stream])