diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-08-18 14:53:00 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-08-18 14:53:07 +0300 |
commit | 41235eed1dad40abf7a34750beedff1176e0c6e5 (patch) | |
tree | fc7bd480017dfd95a8c4a8a74785f040e469b17d /source/blender | |
parent | fe1827df821cdba2d66b03c0f3366e8df3c2fe76 (diff) |
GPU: Avoid invalid GL API usage
Drawing with 0 sized buffer is prohibited.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/gpu/opengl/gl_batch.cc | 2 | ||||
-rw-r--r-- | source/blender/gpu/opengl/gl_drawlist.cc | 5 |
2 files changed, 7 insertions, 0 deletions
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<GLDrawCommandIndexed *>(data_ + command_offset_); cmd->v_first = v_first_; |