gallium: Enable multiple constant buffers for vertex and geometry shaders.
[mesa.git] / src / gallium / auxiliary / draw / draw_context.c
index 16390438323ae2a8d1992b5744f031f27c378e8d..a52b93e12298e5255ba50c3d547b4d0c79ce1eef 100644 (file)
@@ -234,17 +234,20 @@ draw_set_mapped_vertex_buffer(struct draw_context *draw,
 void
 draw_set_mapped_constant_buffer(struct draw_context *draw,
                                 unsigned shader_type,
+                                unsigned slot,
                                 const void *buffer,
                                 unsigned size )
 {
    debug_assert(shader_type == PIPE_SHADER_VERTEX ||
                 shader_type == PIPE_SHADER_GEOMETRY);
+   debug_assert(slot < PIPE_MAX_CONSTANT);
+
    if (shader_type == PIPE_SHADER_VERTEX) {
-      draw->pt.user.vs_constants = buffer;
-      draw_vs_set_constants( draw, (const float (*)[4])buffer, size );
+      draw->pt.user.vs_constants[slot] = buffer;
+      draw_vs_set_constants(draw, slot, buffer, size);
    } else if (shader_type == PIPE_SHADER_GEOMETRY) {
-      draw->pt.user.gs_constants = buffer;
-      draw_gs_set_constants( draw, (const float (*)[4])buffer, size );
+      draw->pt.user.gs_constants[slot] = buffer;
+      draw_gs_set_constants(draw, slot, buffer, size);
    }
 }