st/mesa: reorder code in draw_vbo
authorMarek Olšák <maraeo@gmail.com>
Thu, 26 Apr 2012 09:19:35 +0000 (11:19 +0200)
committerMarek Olšák <maraeo@gmail.com>
Sun, 29 Apr 2012 23:18:47 +0000 (01:18 +0200)
src/mesa/state_tracker/st_draw.c

index 6128320d7c260b90a0f064a949cb8037274ad9d6..cbf4e59fb6d7db4ff59ddd735d710a1bdc3fd754 100644 (file)
@@ -912,14 +912,6 @@ st_draw_vbo(struct gl_context *ctx,
    /* Mesa core state should have been validated already */
    assert(ctx->NewState == 0x0);
 
-   if (ib) {
-      /* Gallium probably doesn't want this in some cases. */
-      if (!index_bounds_valid)
-         if (!all_varyings_in_vbos(arrays))
-            vbo_get_minmax_indices(ctx, prims, ib, &min_index, &max_index,
-                                   nr_prims);
-   }
-
    /* Validate state. */
    if (st->dirty.st) {
       GLboolean vertDataEdgeFlags;
@@ -951,6 +943,12 @@ st_draw_vbo(struct gl_context *ctx,
 
    util_draw_init_info(&info);
    if (ib) {
+      /* Get index bounds for user buffers. */
+      if (!index_bounds_valid)
+         if (!all_varyings_in_vbos(arrays))
+            vbo_get_minmax_indices(ctx, prims, ib, &min_index, &max_index,
+                                   nr_prims);
+
       setup_index_buffer(st, ib, &ibuffer);
 
       info.indexed = TRUE;
@@ -965,10 +963,12 @@ st_draw_vbo(struct gl_context *ctx,
       info.primitive_restart = ctx->Array.PrimitiveRestart;
       info.restart_index = ctx->Array.RestartIndex;
    }
-
-   /* Set info.count_from_stream_output. */
-   if (tfb_vertcount) {
-      st_transform_feedback_draw_init(tfb_vertcount, &info);
+   else {
+      /* Transform feedback drawing is always non-indexed. */
+      /* Set info.count_from_stream_output. */
+      if (tfb_vertcount) {
+         st_transform_feedback_draw_init(tfb_vertcount, &info);
+      }
    }
 
    /* do actual drawing */