Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2020-08-18 14:53:00 +0300
committerClément Foucault <foucault.clem@gmail.com>2020-08-18 14:53:07 +0300
commit41235eed1dad40abf7a34750beedff1176e0c6e5 (patch)
treefc7bd480017dfd95a8c4a8a74785f040e469b17d /source/blender/gpu/opengl
parentfe1827df821cdba2d66b03c0f3366e8df3c2fe76 (diff)
GPU: Avoid invalid GL API usage
Drawing with 0 sized buffer is prohibited.
Diffstat (limited to 'source/blender/gpu/opengl')
-rw-r--r--source/blender/gpu/opengl/gl_batch.cc2
-rw-r--r--source/blender/gpu/opengl/gl_drawlist.cc5
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_;