gallium: Add interfaces needed for instanced drawing.
authorMichal Krol <michal@vmware.com>
Wed, 23 Dec 2009 18:37:18 +0000 (19:37 +0100)
committerMichal Krol <michal@vmware.com>
Wed, 23 Dec 2009 18:37:18 +0000 (19:37 +0100)
src/gallium/include/pipe/p_context.h
src/gallium/include/pipe/p_shader_tokens.h
src/gallium/include/pipe/p_state.h

index 11bcdc0a24c2ae69992eb129e774eda7ae7774e3..d5d1e0e76bca22b893ea15649bdd13212f6c35df 100644 (file)
@@ -69,6 +69,22 @@ struct pipe_context {
                             unsigned indexSize,
                             unsigned mode, unsigned start, unsigned count);
 
+   boolean (*draw_arrays_instanced)(struct pipe_context *pipe,
+                                    unsigned mode,
+                                    unsigned start,
+                                    unsigned count,
+                                    unsigned startInstance,
+                                    unsigned instanceCount);
+
+   boolean (*draw_elements_instanced)(struct pipe_context *pipe,
+                                      struct pipe_buffer *indexBuffer,
+                                      unsigned indexSize,
+                                      unsigned mode,
+                                      unsigned start,
+                                      unsigned count,
+                                      unsigned startInstance,
+                                      unsigned instanceCount);
+
    /* XXX: this is (probably) a temporary entrypoint, as the range
     * information should be available from the vertex_buffer state.
     * Using this to quickly evaluate a specialized path in the draw
index 5da85bbbc24451b026c3aaf19862030cbec4fd4e..d79124828f92ff76260d60794489ae3cacd0efe2 100644 (file)
@@ -130,7 +130,8 @@ struct tgsi_declaration_range
 #define TGSI_SEMANTIC_NORMAL   6
 #define TGSI_SEMANTIC_FACE     7
 #define TGSI_SEMANTIC_EDGEFLAG 8
-#define TGSI_SEMANTIC_COUNT    9 /**< number of semantic values */
+#define TGSI_SEMANTIC_INSTANCEID 9
+#define TGSI_SEMANTIC_COUNT      10 /**< number of semantic values */
 
 struct tgsi_declaration_semantic
 {
index 60e96b98debb3d90690e3f5e125933285e9d5c1e..4d38bbcc32695755f7a884469e027440761d4bc5 100644 (file)
@@ -364,6 +364,7 @@ struct pipe_vertex_buffer
    unsigned stride;    /**< stride to same attrib in next vertex, in bytes */
    unsigned max_index;   /**< number of vertices in this buffer */
    unsigned buffer_offset;  /**< offset to start of data in buffer, in bytes */
+   unsigned instance_divisor;    /**< instance data rate divisor, 0 means per-vertex data */
    struct pipe_buffer *buffer;  /**< the actual buffer */
 };