From be110ba2e4d5f8e5c71294d29dc991f4b6600e79 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 6 Mar 2019 12:18:28 +0100 Subject: [PATCH] mesa/st: accept NULL and empty buffer objects MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It's prefectly legal and well-defined to render using a non-existing or empty buffer object. The data coming out of the buffer object isn't well defined unless we have the robustness flag set on the context, but that's a different matter, and up to the shader hardware; it's the same as out-of-bounds reads. Signed-off-by: Erik Faye-Lund Reviewed-by: Marek Olšák --- src/mesa/state_tracker/st_atom_array.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/mesa/state_tracker/st_atom_array.c b/src/mesa/state_tracker/st_atom_array.c index 21e00ff..a726d06 100644 --- a/src/mesa/state_tracker/st_atom_array.c +++ b/src/mesa/state_tracker/st_atom_array.c @@ -405,14 +405,9 @@ st_setup_arrays(struct st_context *st, const unsigned bufidx = (*num_vbuffers)++; if (_mesa_is_bufferobj(binding->BufferObj)) { - struct st_buffer_object *stobj = st_buffer_object(binding->BufferObj); - if (!stobj || !stobj->buffer) { - st->vertex_array_out_of_memory = true; - return; /* out-of-memory error probably */ - } - /* Set the binding */ - vbuffer[bufidx].buffer.resource = stobj->buffer; + struct st_buffer_object *stobj = st_buffer_object(binding->BufferObj); + vbuffer[bufidx].buffer.resource = stobj ? stobj->buffer : NULL; vbuffer[bufidx].is_user_buffer = false; vbuffer[bufidx].buffer_offset = _mesa_draw_binding_offset(binding); } else { -- 2.7.4