nv50: fix bogus error message about 3d surfaces
[mesa.git] / src / gallium / drivers / svga / svga_pipe_vertex.c
index 1715a47fc6298b0b988bacbf0695382eb7daa3a2..58469910732ea9970bfef84f1c223300cfce790a 100644 (file)
 #include "pipe/p_defines.h"
 #include "util/u_math.h"
 #include "util/u_memory.h"
+#include "util/u_transfer.h"
 #include "tgsi/tgsi_parse.h"
 
 #include "svga_screen.h"
-#include "svga_screen_buffer.h"
+#include "svga_resource_buffer.h"
 #include "svga_context.h"
 
 
@@ -49,13 +50,13 @@ static void svga_set_vertex_buffers(struct pipe_context *pipe,
 
    /* Adjust refcounts */
    for (i = 0; i < count; i++) {
-      pipe_buffer_reference(&svga->curr.vb[i].buffer, buffers[i].buffer);
+      pipe_resource_reference(&svga->curr.vb[i].buffer, buffers[i].buffer);
       if (svga_buffer_is_user_buffer(buffers[i].buffer))
          any_user_buffer = TRUE;
    }
 
    for ( ; i < svga->curr.num_vertex_buffers; i++)
-      pipe_buffer_reference(&svga->curr.vb[i].buffer, NULL);
+      pipe_resource_reference(&svga->curr.vb[i].buffer, NULL);
 
    /* Copy remaining data */
    memcpy(svga->curr.vb, buffers, count * sizeof buffers[0]);
@@ -66,6 +67,24 @@ static void svga_set_vertex_buffers(struct pipe_context *pipe,
 }
 
 
+static void svga_set_index_buffer(struct pipe_context *pipe,
+                                  const struct pipe_index_buffer *ib)
+{
+   struct svga_context *svga = svga_context(pipe);
+
+   if (ib) {
+      pipe_resource_reference(&svga->curr.ib.buffer, ib->buffer);
+      memcpy(&svga->curr.ib, ib, sizeof(svga->curr.ib));
+   }
+   else {
+      pipe_resource_reference(&svga->curr.ib.buffer, NULL);
+      memset(&svga->curr.ib, 0, sizeof(svga->curr.ib));
+   }
+
+   /* TODO make this more like a state */
+}
+
+
 static void *
 svga_create_vertex_elements_state(struct pipe_context *pipe,
                                   unsigned count,
@@ -102,13 +121,14 @@ void svga_cleanup_vertex_state( struct svga_context *svga )
    unsigned i;
    
    for (i = 0 ; i < svga->curr.num_vertex_buffers; i++)
-      pipe_buffer_reference(&svga->curr.vb[i].buffer, NULL);
+      pipe_resource_reference(&svga->curr.vb[i].buffer, NULL);
 }
 
 
 void svga_init_vertex_functions( struct svga_context *svga )
 {
    svga->pipe.set_vertex_buffers = svga_set_vertex_buffers;
+   svga->pipe.set_index_buffer = svga_set_index_buffer;
    svga->pipe.create_vertex_elements_state = svga_create_vertex_elements_state;
    svga->pipe.bind_vertex_elements_state = svga_bind_vertex_elements_state;
    svga->pipe.delete_vertex_elements_state = svga_delete_vertex_elements_state;