gallium/tgsi: Add a helper for initializing ureg from a shader_info.
[mesa.git] / src / mesa / state_tracker / st_cb_xformfb.c
index a5cf3dfd5a940d082bfbc277351c4d65d0f412d9..4126e64345b35d0c5a624181d50501c60c2b4b1d 100644 (file)
@@ -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])