[Bf-blender-cvs] [8de878e2025] master: Draw: make 'ibo.lines_loose' extracting safer

Germano Cavalcante noreply at git.blender.org
Mon Jun 28 16:48:39 CEST 2021


Commit: 8de878e202514efbbaeaff7a0693e4899e150bed
Author: Germano Cavalcante
Date:   Mon Jun 28 10:59:40 2021 -0300
Branches: master
https://developer.blender.org/rB8de878e202514efbbaeaff7a0693e4899e150bed

Draw: make 'ibo.lines_loose' extracting safer

No functional changes.

===================================================================

M	source/blender/draw/intern/draw_cache_extract_mesh.cc

===================================================================

diff --git a/source/blender/draw/intern/draw_cache_extract_mesh.cc b/source/blender/draw/intern/draw_cache_extract_mesh.cc
index d7d43ffe1a3..344150014ed 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh.cc
+++ b/source/blender/draw/intern/draw_cache_extract_mesh.cc
@@ -649,10 +649,20 @@ static void mesh_buffer_cache_create_requested(struct TaskGraph *task_graph,
   EXTRACT_ADD_REQUESTED(vbo, skin_roots);
 
   EXTRACT_ADD_REQUESTED(ibo, tris);
-  if (DRW_ibo_requested(mbc->ibo.lines)) {
+  if (DRW_ibo_requested(mbc->ibo.lines_loose)) {
+    /* `ibo.lines_loose` require the `ibo.lines` buffer. */
+    if (mbc->ibo.lines == nullptr) {
+      DRW_ibo_request(nullptr, &mbc->ibo.lines);
+    }
+    const MeshExtract *extractor = DRW_ibo_requested(mbc->ibo.lines) ?
+                                       &extract_lines_with_lines_loose :
+                                       &extract_lines_loose_only;
+    extractors.append(extractor);
+  }
+  else if (DRW_ibo_requested(mbc->ibo.lines)) {
     const MeshExtract *extractor;
     if (mbc->ibo.lines_loose != nullptr) {
-      /* Update #lines_loose ibo. */
+      /* Update `ibo.lines_loose` as it depends on `ibo.lines`. */
       extractor = &extract_lines_with_lines_loose;
     }
     else {
@@ -660,11 +670,6 @@ static void mesh_buffer_cache_create_requested(struct TaskGraph *task_graph,
     }
     extractors.append(extractor);
   }
-  else if (DRW_ibo_requested(mbc->ibo.lines_loose)) {
-    /* Note: #ibo.lines must have been created first. */
-    const MeshExtract *extractor = &extract_lines_loose_only;
-    extractors.append(extractor);
-  }
   EXTRACT_ADD_REQUESTED(ibo, points);
   EXTRACT_ADD_REQUESTED(ibo, fdots);
   EXTRACT_ADD_REQUESTED(ibo, lines_paint_mask);



More information about the Bf-blender-cvs mailing list