From 41235eed1dad40abf7a34750beedff1176e0c6e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 18 Aug 2020 13:53:00 +0200 Subject: GPU: Avoid invalid GL API usage Drawing with 0 sized buffer is prohibited. --- source/blender/gpu/opengl/gl_batch.cc | 2 ++ source/blender/gpu/opengl/gl_drawlist.cc | 5 +++++ 2 files changed, 7 insertions(+) (limited to 'source/blender/gpu') diff --git a/source/blender/gpu/opengl/gl_batch.cc b/source/blender/gpu/opengl/gl_batch.cc index 00e1a61f7cf..38448e8a0b8 100644 --- a/source/blender/gpu/opengl/gl_batch.cc +++ b/source/blender/gpu/opengl/gl_batch.cc @@ -325,6 +325,8 @@ void GLBatch::draw(int v_first, int v_count, int i_first, int i_count) { this->bind(i_first); + BLI_assert(v_count > 0 && i_count > 0); + GLenum gl_type = convert_prim_type_to_gl(prim_type); if (elem) { diff --git a/source/blender/gpu/opengl/gl_drawlist.cc b/source/blender/gpu/opengl/gl_drawlist.cc index b02681af892..16ea924d8dc 100644 --- a/source/blender/gpu/opengl/gl_drawlist.cc +++ b/source/blender/gpu/opengl/gl_drawlist.cc @@ -151,6 +151,11 @@ void GLDrawList::append(GPUBatch *batch, int i_first, int i_count) v_count_ = batch->elem ? batch->elem->index_len : batch->verts[0]->vertex_len; } + if (v_count_ == 0) { + /* Nothing to draw. */ + return; + } + if (MDI_INDEXED) { GLDrawCommandIndexed *cmd = reinterpret_cast(data_ + command_offset_); cmd->v_first = v_first_; -- cgit v1.2.3