mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
softpipe: don't ignore pipe_constant_buffer::buffer_offset
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. Reviewed-by: Marek Olšák <maraeo@gmail.com> Reviewed-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
089ef37eab
commit
99c42d11a2
1 changed files with 5 additions and 3 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue