gallium: Fix uninitialized variable warning in compute test.
[mesa.git] / src / gallium / auxiliary / util / u_draw.h
index 5a7ead27e31014f55943d0c42a9f347ff1efa76c..d0955fa3f978d041803bd4ec76741743c1b35432 100644 (file)
@@ -39,7 +39,7 @@ extern "C" {
 #endif
 
 
-static INLINE void
+static inline void
 util_draw_init_info(struct pipe_draw_info *info)
 {
    memset(info, 0, sizeof(*info));
@@ -48,8 +48,11 @@ util_draw_init_info(struct pipe_draw_info *info)
 }
 
 
-static INLINE void
-util_draw_arrays(struct pipe_context *pipe, uint mode, uint start, uint count)
+static inline void
+util_draw_arrays(struct pipe_context *pipe,
+                 enum pipe_prim_type mode,
+                 uint start,
+                 uint count)
 {
    struct pipe_draw_info info;
 
@@ -63,14 +66,20 @@ util_draw_arrays(struct pipe_context *pipe, uint mode, uint start, uint count)
    pipe->draw_vbo(pipe, &info);
 }
 
-static INLINE void
-util_draw_elements(struct pipe_context *pipe, int index_bias,
-                   uint mode, uint start, uint count)
+static inline void
+util_draw_elements(struct pipe_context *pipe,
+                   void *indices,
+                   unsigned index_size,
+                   int index_bias, enum pipe_prim_type mode,
+                   uint start,
+                   uint count)
 {
    struct pipe_draw_info info;
 
    util_draw_init_info(&info);
-   info.indexed = TRUE;
+   info.index.user = indices;
+   info.has_user_indices = true;
+   info.index_size = index_size;
    info.mode = mode;
    info.start = start;
    info.count = count;
@@ -79,9 +88,11 @@ util_draw_elements(struct pipe_context *pipe, int index_bias,
    pipe->draw_vbo(pipe, &info);
 }
 
-static INLINE void
+static inline void
 util_draw_arrays_instanced(struct pipe_context *pipe,
-                           uint mode, uint start, uint count,
+                           enum pipe_prim_type mode,
+                           uint start,
+                           uint count,
                            uint start_instance,
                            uint instance_count)
 {
@@ -99,17 +110,23 @@ util_draw_arrays_instanced(struct pipe_context *pipe,
    pipe->draw_vbo(pipe, &info);
 }
 
-static INLINE void
+static inline void
 util_draw_elements_instanced(struct pipe_context *pipe,
+                             void *indices,
+                             unsigned index_size,
                              int index_bias,
-                             uint mode, uint start, uint count,
+                             enum pipe_prim_type mode,
+                             uint start,
+                             uint count,
                              uint start_instance,
                              uint instance_count)
 {
    struct pipe_draw_info info;
 
    util_draw_init_info(&info);
-   info.indexed = TRUE;
+   info.index.user = indices;
+   info.has_user_indices = true;
+   info.index_size = index_size;
    info.mode = mode;
    info.start = start;
    info.count = count;
@@ -120,26 +137,13 @@ util_draw_elements_instanced(struct pipe_context *pipe,
    pipe->draw_vbo(pipe, &info);
 }
 
-static INLINE void
-util_draw_range_elements(struct pipe_context *pipe,
-                         int index_bias,
-                         uint min_index,
-                         uint max_index,
-                         uint mode, uint start, uint count)
-{
-   struct pipe_draw_info info;
-
-   util_draw_init_info(&info);
-   info.indexed = TRUE;
-   info.mode = mode;
-   info.start = start;
-   info.count = count;
-   info.index_bias = index_bias;
-   info.min_index = min_index;
-   info.max_index = max_index;
 
-   pipe->draw_vbo(pipe, &info);
-}
+/* This converts an indirect draw into a direct draw by mapping the indirect
+ * buffer, extracting its arguments, and calling pipe->draw_vbo.
+ */
+void
+util_draw_indirect(struct pipe_context *pipe,
+                   const struct pipe_draw_info *info);
 
 
 unsigned