Reviewed-by: Marek Olšák <mar...@gmail.com> Marek
On Thu, Jul 25, 2013 at 5:32 PM, Brian Paul <bri...@vmware.com> wrote: > This was never a problem since the Mesa state tracker always gives > us a user-space constant buffer with buffer_offset=0. But if another > state tracker ever gave us a "HW" constant buffer with non-zero > buffer_offset we'd mis-render. > > Also, use the correct buffer size. And move an assertion to the > top of the function. > --- > src/gallium/drivers/softpipe/sp_state_shader.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/drivers/softpipe/sp_state_shader.c > b/src/gallium/drivers/softpipe/sp_state_shader.c > index 79bd597..d80955e 100644 > --- a/src/gallium/drivers/softpipe/sp_state_shader.c > +++ b/src/gallium/drivers/softpipe/sp_state_shader.c > @@ -347,6 +347,8 @@ softpipe_set_constant_buffer(struct pipe_context *pipe, > unsigned size; > const void *data; > > + assert(shader < PIPE_SHADER_TYPES); > + > if (cb && cb->user_buffer) { > constants = softpipe_user_buffer_create(pipe->screen, > (void *) cb->user_buffer, > @@ -354,10 +356,10 @@ softpipe_set_constant_buffer(struct pipe_context *pipe, > PIPE_BIND_CONSTANT_BUFFER); > } > > - size = constants ? constants->width0 : 0; > + size = cb ? cb->buffer_size : 0; > data = constants ? softpipe_resource(constants)->data : NULL; > - > - assert(shader < PIPE_SHADER_TYPES); > + if (data) > + data = (const char *) data + cb->buffer_offset; > > draw_flush(softpipe->draw); > > -- > 1.7.10.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev