summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErik Faye-Lund <[email protected]>2019-03-06 12:18:28 +0100
committerErik Faye-Lund <[email protected]>2019-04-29 10:28:38 +0000
commitbe110ba2e4d5f8e5c71294d29dc991f4b6600e79 (patch)
tree34cc4fa27f30fa6a0750585ce6ac95994d03f3e6
parentef13691e0c07d909a4f14280ca4fefbd79a9865b (diff)
mesa/st: accept NULL and empty buffer objects
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 <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/mesa/state_tracker/st_atom_array.c9
1 files 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 21e00ff17b9..a726d06cd4a 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 {