diff options
author | Brian Paul <[email protected]> | 2011-01-15 17:35:08 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-01-15 17:37:41 -0700 |
commit | a6860f0913d5d4be0c73da963e84e97fc926225f (patch) | |
tree | 01134e782f70373b5686c0d5b581153365be95a2 | |
parent | 1d1eb9578716913f4133786b30c6e6edc69a8a0c (diff) |
st/mesa: GL_ARB_instanced_arrays support
-rw-r--r-- | src/mesa/state_tracker/st_draw.c | 17 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_extensions.c | 1 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index b3256a3cb08..8e1263fe84e 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -387,9 +387,16 @@ setup_interleaved_attribs(struct gl_context *ctx, vbuffer->max_index = max_index; } + /* + if (arrays[mesaAttr]->InstanceDivisor) + vbuffer[attr].max_index = arrays[mesaAttr]->_MaxElement; + else + vbuffer[attr].max_index = max_index; + */ + velements[attr].src_offset = (unsigned) (arrays[mesaAttr]->Ptr - offset0); - velements[attr].instance_divisor = 0; + velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor; velements[attr].vertex_buffer_index = 0; velements[attr].src_format = st_pipe_vertex_format(arrays[mesaAttr]->Type, @@ -481,9 +488,13 @@ setup_non_interleaved_attribs(struct gl_context *ctx, /* common-case setup */ vbuffer[attr].stride = stride; /* in bytes */ - vbuffer[attr].max_index = max_index; + if (arrays[mesaAttr]->InstanceDivisor) + vbuffer[attr].max_index = arrays[mesaAttr]->_MaxElement; + else + vbuffer[attr].max_index = max_index; + velements[attr].src_offset = 0; - velements[attr].instance_divisor = 0; + velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor; velements[attr].vertex_buffer_index = attr; velements[attr].src_format = st_pipe_vertex_format(arrays[mesaAttr]->Type, diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index df4f5cf8b5c..6798675fb89 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -464,5 +464,6 @@ void st_init_extensions(struct st_context *st) if (screen->get_param(screen, PIPE_CAP_INSTANCED_DRAWING)) { ctx->Extensions.ARB_draw_instanced = GL_TRUE; + ctx->Extensions.ARB_instanced_arrays = GL_TRUE; } } |