llvmpipe: Silent warnings about undeclared llvmpipe_check_render_cond.
[mesa.git] / src / gallium / drivers / llvmpipe / lp_draw_arrays.c
index b6dbb9d288ebc5d565a28ec855280a87a8fd2ff2..239a596bce0698c770c5258c4befece490d88630 100644 (file)
 #include "pipe/p_defines.h"
 #include "pipe/p_context.h"
 #include "util/u_prim.h"
-#include "util/u_draw_quad.h"
 
 #include "lp_context.h"
 #include "lp_state.h"
+#include "lp_query.h"
 
 #include "draw/draw_context.h"
 
@@ -57,6 +57,9 @@ llvmpipe_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
    void *mapped_indices = NULL;
    unsigned i;
 
+   if (!llvmpipe_check_render_cond(lp))
+      return;
+
    if (lp->dirty)
       llvmpipe_update_derived( lp );
 
@@ -69,25 +72,17 @@ llvmpipe_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
    }
 
    /* Map index buffer, if present */
-   if (info->indexed && lp->index_buffer.buffer) {
+   if (info->indexed && lp->index_buffer.buffer)
       mapped_indices = llvmpipe_resource_data(lp->index_buffer.buffer);
-      mapped_indices += lp->index_buffer.offset;
-   }
 
-   draw_set_mapped_element_buffer_range(draw, (mapped_indices) ?
-                                        lp->index_buffer.index_size : 0,
-                                        info->index_bias,
-                                        info->min_index,
-                                        info->max_index,
-                                        mapped_indices);
+   draw_set_mapped_index_buffer(draw, mapped_indices);
 
    llvmpipe_prepare_vertex_sampling(lp,
                                     lp->num_vertex_sampler_views,
                                     lp->vertex_sampler_views);
 
    /* draw! */
-   draw_arrays_instanced(draw, info->mode, info->start, info->count,
-         info->start_instance, info->instance_count);
+   draw_vbo(draw, info);
 
    /*
     * unmap vertex/index buffers
@@ -96,7 +91,7 @@ llvmpipe_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
       draw_set_mapped_vertex_buffer(draw, i, NULL);
    }
    if (mapped_indices) {
-      draw_set_mapped_element_buffer(draw, 0, 0, NULL);
+      draw_set_mapped_index_buffer(draw, NULL);
    }
    llvmpipe_cleanup_vertex_sampling(lp);
 
@@ -109,158 +104,8 @@ llvmpipe_draw_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
 }
 
 
-static void
-llvmpipe_draw_range_elements_instanced(struct pipe_context *pipe,
-                                       struct pipe_resource *indexBuffer,
-                                       unsigned indexSize,
-                                       int indexBias,
-                                       unsigned minIndex,
-                                       unsigned maxIndex,
-                                       unsigned mode,
-                                       unsigned start,
-                                       unsigned count,
-                                       unsigned startInstance,
-                                       unsigned instanceCount)
-{
-   struct llvmpipe_context *lp = llvmpipe_context(pipe);
-   struct pipe_draw_info info;
-   struct pipe_index_buffer saved_ib, ib;
-
-   util_draw_init_info(&info);
-   info.mode = mode;
-   info.start = start;
-   info.count = count;
-   info.start_instance = startInstance;
-   info.instance_count = instanceCount;
-
-   info.index_bias = indexBias;
-   info.min_index = minIndex;
-   info.max_index = maxIndex;
-
-   if (indexBuffer) {
-      info.indexed = TRUE;
-      saved_ib = lp->index_buffer;
-
-      ib.buffer = indexBuffer;
-      ib.offset = 0;
-      ib.index_size = indexSize;
-      pipe->set_index_buffer(pipe, &ib);
-   }
-
-   llvmpipe_draw_vbo(pipe, &info);
-
-   if (indexBuffer)
-      pipe->set_index_buffer(pipe, &saved_ib);
-}
-
-static void
-llvmpipe_draw_arrays_instanced(struct pipe_context *pipe,
-                               unsigned mode,
-                               unsigned start,
-                               unsigned count,
-                               unsigned startInstance,
-                               unsigned instanceCount)
-{
-   llvmpipe_draw_range_elements_instanced(pipe,
-                                          NULL, /* no indexBuffer */
-                                          0, 0, /* indexSize, indexBias */
-                                          0, ~0, /* minIndex, maxIndex */
-                                          mode,
-                                          start,
-                                          count,
-                                          startInstance,
-                                          instanceCount);
-}
-
-
-static void
-llvmpipe_draw_elements_instanced(struct pipe_context *pipe,
-                                 struct pipe_resource *indexBuffer,
-                                 unsigned indexSize,
-                                 int indexBias,
-                                 unsigned mode,
-                                 unsigned start,
-                                 unsigned count,
-                                 unsigned startInstance,
-                                 unsigned instanceCount)
-{
-   llvmpipe_draw_range_elements_instanced(pipe,
-                                          indexBuffer,
-                                          indexSize, indexBias,
-                                          0, ~0, /* minIndex, maxIndex */
-                                          mode,
-                                          start,
-                                          count,
-                                          startInstance,
-                                          instanceCount);
-}
-
-
-static void
-llvmpipe_draw_elements(struct pipe_context *pipe,
-                       struct pipe_resource *indexBuffer,
-                       unsigned indexSize,
-                       int indexBias,
-                       unsigned mode,
-                       unsigned start,
-                       unsigned count)
-{
-   llvmpipe_draw_range_elements_instanced(pipe,
-                                          indexBuffer,
-                                          indexSize, indexBias,
-                                          0, 0xffffffff,  /* min, maxIndex */
-                                          mode, start, count,
-                                          0,  /* startInstance */
-                                          1);  /* instanceCount */
-}
-
-
-static void
-llvmpipe_draw_range_elements(struct pipe_context *pipe,
-                             struct pipe_resource *indexBuffer,
-                             unsigned indexSize,
-                             int indexBias,
-                             unsigned min_index,
-                             unsigned max_index,
-                             unsigned mode,
-                             unsigned start,
-                             unsigned count)
-{
-   llvmpipe_draw_range_elements_instanced(pipe,
-                                          indexBuffer,
-                                          indexSize, indexBias,
-                                          min_index, max_index,
-                                          mode, start, count,
-                                          0,  /* startInstance */
-                                          1);  /* instanceCount */
-}
-
-
-static void
-llvmpipe_draw_arrays(struct pipe_context *pipe,
-                     unsigned mode,
-                     unsigned start,
-                     unsigned count)
-{
-   llvmpipe_draw_range_elements_instanced(pipe,
-                                          NULL,  /* indexBuffer */
-                                          0,  /* indexSize */
-                                          0,  /* indexBias */
-                                          0, ~0,  /* min, maxIndex */
-                                          mode, start, count,
-                                          0,  /* startInstance */
-                                          1);  /* instanceCount */
-}
-
-
 void
 llvmpipe_init_draw_funcs(struct llvmpipe_context *llvmpipe)
 {
-   llvmpipe->pipe.draw_arrays = llvmpipe_draw_arrays;
-   llvmpipe->pipe.draw_elements = llvmpipe_draw_elements;
-   llvmpipe->pipe.draw_range_elements = llvmpipe_draw_range_elements;
-   llvmpipe->pipe.draw_arrays_instanced = llvmpipe_draw_arrays_instanced;
-   llvmpipe->pipe.draw_elements_instanced = llvmpipe_draw_elements_instanced;
-
    llvmpipe->pipe.draw_vbo = llvmpipe_draw_vbo;
 }