mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 10:20:09 +01:00
st/mesa: restore the transfer_inline_write path for BufferData
Version 2 that shouldn't crash. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
6a2ad679e6
commit
1ba1d617bf
1 changed files with 15 additions and 0 deletions
|
|
@ -182,6 +182,21 @@ st_bufferobj_data(struct gl_context *ctx,
|
|||
struct st_buffer_object *st_obj = st_buffer_object(obj);
|
||||
unsigned bind, pipe_usage;
|
||||
|
||||
if (size && data && st_obj->buffer &&
|
||||
st_obj->Base.Size == size && st_obj->Base.Usage == usage) {
|
||||
/* Just discard the old contents and write new data.
|
||||
* This should be the same as creating a new buffer, but we avoid
|
||||
* a lot of validation in Mesa.
|
||||
*/
|
||||
struct pipe_box box;
|
||||
|
||||
u_box_1d(0, size, &box);
|
||||
pipe->transfer_inline_write(pipe, st_obj->buffer, 0,
|
||||
PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE,
|
||||
&box, data, 0, 0);
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
st_obj->Base.Size = size;
|
||||
st_obj->Base.Usage = usage;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue