Commit: 846c11c8cfc2409fd8ed9b4d531124cf12c2ec28
Author: Campbell Barton
Date:   Wed Aug 16 19:50:27 2017 +1000
Branches: blender2.8
https://developer.blender.org/rB846c11c8cfc2409fd8ed9b4d531124cf12c2ec28

Gawain: remove GWN_batch_discard_all

Use ownership flags instead.

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

M       intern/gawain/gawain/gwn_batch.h
M       intern/gawain/src/gwn_batch.c
M       source/blender/draw/intern/draw_cache.c
M       source/blender/draw/intern/draw_cache_impl_curve.c
M       source/blender/draw/intern/draw_cache_impl_displist.c
M       source/blender/draw/intern/draw_cache_impl_lattice.c
M       source/blender/draw/intern/draw_manager.c
M       source/blender/editors/interface/interface_draw.c
M       source/blender/editors/manipulator_library/manipulator_draw_utils.c
M       source/blender/editors/space_view3d/drawobject.c
M       source/blender/editors/uvedit/uvedit_smart_stitch.c
M       source/blender/gpu/intern/gpu_batch.c
M       source/blender/gpu/intern/gpu_compositing.c

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

diff --git a/intern/gawain/gawain/gwn_batch.h b/intern/gawain/gawain/gwn_batch.h
index 96d519450b5..1dd4621f1a3 100644
--- a/intern/gawain/gawain/gwn_batch.h
+++ b/intern/gawain/gawain/gwn_batch.h
@@ -58,7 +58,6 @@ void GWN_batch_init_ex(Gwn_Batch*, Gwn_PrimType, 
Gwn_VertBuf*, Gwn_IndexBuf*, un
        GWN_batch_init_ex(batch, prim, verts, elem, 0)
 
 void GWN_batch_discard(Gwn_Batch*); // verts & elem are not discarded
-void GWN_batch_discard_all(Gwn_Batch*); // including verts & elem
 
 int GWN_batch_vertbuf_add_ex(Gwn_Batch*, Gwn_VertBuf*, bool own_vbo);
 
@@ -136,9 +135,3 @@ Gwn_Batch* create_BatchInGeneral(Gwn_PrimType, 
VertexBufferStuff, ElementListStu
                batch = NULL; \
        } \
 } while (0)
-#define BATCH_DISCARD_ALL_SAFE(batch) do { \
-       if (batch != NULL) { \
-               GWN_batch_discard_all(batch); \
-               batch = NULL; \
-       } \
-} while (0)
diff --git a/intern/gawain/src/gwn_batch.c b/intern/gawain/src/gwn_batch.c
index 23160668ca8..c95b67e39cf 100644
--- a/intern/gawain/src/gwn_batch.c
+++ b/intern/gawain/src/gwn_batch.c
@@ -69,22 +69,6 @@ void GWN_batch_discard(Gwn_Batch* batch)
        free(batch);
        }
 
-/* TODO, remove */
-void GWN_batch_discard_all(Gwn_Batch* batch)
-       {
-       for (int v = 0; v < GWN_BATCH_VBO_MAX_LEN; ++v)
-               {
-               if (batch->verts[v] == NULL)
-                       break;
-               GWN_vertbuf_discard(batch->verts[v]);
-               }
-
-       if (batch->elem)
-               GWN_indexbuf_discard(batch->elem);
-
-       GWN_batch_discard(batch);
-       }
-
 int GWN_batch_vertbuf_add_ex(
         Gwn_Batch* batch, Gwn_VertBuf* verts,
         bool own_vbo)
diff --git a/source/blender/draw/intern/draw_cache.c 
b/source/blender/draw/intern/draw_cache.c
index 0472feb8352..453fb2cf41a 100644
--- a/source/blender/draw/intern/draw_cache.c
+++ b/source/blender/draw/intern/draw_cache.c
@@ -40,6 +40,7 @@
 #include "draw_cache.h"
 #include "draw_cache_impl.h"
 
+/* Batch's only (free'd as an array) */
 static struct DRWShapeCache {
        Gwn_Batch *drw_single_vertice;
        Gwn_Batch *drw_fullscreen_quad;
@@ -94,54 +95,12 @@ static struct DRWShapeCache {
 
 void DRW_shape_cache_free(void)
 {
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_single_vertice);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_fullscreen_quad);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_plain_axes);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_single_arrow);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_cube);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_circle);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_square);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_line);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_line_endpoints);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_empty_sphere);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_empty_cone);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_arrows);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_axis_names);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_image_plane);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_image_plane_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_field_wind);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_field_force);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_field_vortex);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_field_tube_limit);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_field_cone_limit);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lamp);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lamp_sunrays);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lamp_area);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lamp_hemi);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lamp_spot);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lamp_spot_square);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_speaker);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lightprobe_cube);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lightprobe_planar);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_lightprobe_grid);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_octahedral);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_octahedral_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_box);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_box_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_wire_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_envelope);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_envelope_distance);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_envelope_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_envelope_head_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_point);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_point_wire);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_bone_arrows);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_camera);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_camera_tria);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_camera_focus);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_particle_cross);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_particle_circle);
-       BATCH_DISCARD_ALL_SAFE(SHC.drw_particle_axis);
+       uint i = sizeof(SHC) / sizeof(Gwn_Batch *);
+       Gwn_Batch **batch = (Gwn_Batch **)&SHC;
+       while (i--) {
+               GWN_BATCH_DISCARD_SAFE(*batch);
+               batch++;
+       }
 }
 
 
@@ -294,7 +253,7 @@ Gwn_Batch *DRW_cache_fullscreen_quad_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.uvs, i, uvs[i]);
                }
 
-               SHC.drw_fullscreen_quad = GWN_batch_create(GWN_PRIM_TRIS, vbo, 
NULL);
+               SHC.drw_fullscreen_quad = GWN_batch_create_ex(GWN_PRIM_TRIS, 
vbo, NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_fullscreen_quad;
 }
@@ -342,7 +301,7 @@ Gwn_Batch *DRW_cache_cube_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, i, 
verts[indices[i]]);
                }
 
-               SHC.drw_cube = GWN_batch_create(GWN_PRIM_LINES, vbo, NULL);
+               SHC.drw_cube = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, NULL, 
GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_cube;
 }
@@ -375,7 +334,7 @@ Gwn_Batch *DRW_cache_circle_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, a * 2 + 1, v);
                }
 
-               SHC.drw_circle = GWN_batch_create(GWN_PRIM_LINES, vbo, NULL);
+               SHC.drw_circle = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, NULL, 
GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_circle;
 #undef CIRCLE_RESOL
@@ -404,7 +363,7 @@ Gwn_Batch *DRW_cache_square_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, i * 2 + 1, 
p[(i+1) % 4]);
                }
 
-               SHC.drw_square = GWN_batch_create(GWN_PRIM_LINES, vbo, NULL);
+               SHC.drw_square = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, NULL, 
GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_square;
 }
@@ -429,7 +388,7 @@ Gwn_Batch *DRW_cache_single_line_get(void)
                GWN_vertbuf_attr_set(vbo, attr_id.pos, 0, v1);
                GWN_vertbuf_attr_set(vbo, attr_id.pos, 1, v2);
 
-               SHC.drw_line = GWN_batch_create(GWN_PRIM_LINES, vbo, NULL);
+               SHC.drw_line = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, NULL, 
GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_line;
 }
@@ -454,7 +413,7 @@ Gwn_Batch *DRW_cache_single_line_endpoints_get(void)
                GWN_vertbuf_attr_set(vbo, attr_id.pos, 0, v1);
                GWN_vertbuf_attr_set(vbo, attr_id.pos, 1, v2);
 
-               SHC.drw_line_endpoints = GWN_batch_create(GWN_PRIM_POINTS, vbo, 
NULL);
+               SHC.drw_line_endpoints = GWN_batch_create_ex(GWN_PRIM_POINTS, 
vbo, NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_line_endpoints;
 }
@@ -481,7 +440,7 @@ Gwn_Batch *DRW_cache_screenspace_circle_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, a, v);
                }
 
-               SHC.drw_screenspace_circle = 
GWN_batch_create(GWN_PRIM_LINE_STRIP, vbo, NULL);
+               SHC.drw_screenspace_circle = 
GWN_batch_create_ex(GWN_PRIM_LINE_STRIP, vbo, NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_screenspace_circle;
 #undef CIRCLE_RESOL
@@ -569,7 +528,7 @@ Gwn_Batch *DRW_cache_plain_axes_get(void)
                        v1[axis] = v2[axis] = 0.0f;
                }
 
-               SHC.drw_plain_axes = GWN_batch_create(GWN_PRIM_LINES, vbo, 
NULL);
+               SHC.drw_plain_axes = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_plain_axes;
 }
@@ -609,7 +568,7 @@ Gwn_Batch *DRW_cache_single_arrow_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, sides * 3 + 2, 
v3);
                }
 
-               SHC.drw_single_arrow = GWN_batch_create(GWN_PRIM_TRIS, vbo, 
NULL);
+               SHC.drw_single_arrow = GWN_batch_create_ex(GWN_PRIM_TRIS, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_single_arrow;
 }
@@ -618,7 +577,7 @@ Gwn_Batch *DRW_cache_empty_sphere_get(void)
 {
        if (!SHC.drw_empty_sphere) {
                Gwn_VertBuf *vbo = sphere_wire_vbo(1.0f);
-               SHC.drw_empty_sphere = GWN_batch_create(GWN_PRIM_LINES, vbo, 
NULL);
+               SHC.drw_empty_sphere = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_empty_sphere;
 }
@@ -665,7 +624,7 @@ Gwn_Batch *DRW_cache_empty_cone_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, i * 4 + 3, v);
                }
 
-               SHC.drw_empty_cone = GWN_batch_create(GWN_PRIM_LINES, vbo, 
NULL);
+               SHC.drw_empty_cone = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_empty_cone;
 #undef NSEGMENTS
@@ -676,7 +635,7 @@ Gwn_Batch *DRW_cache_arrows_get(void)
        if (!SHC.drw_arrows) {
                Gwn_VertBuf *vbo = fill_arrows_vbo(1.0f);
 
-               SHC.drw_arrows = GWN_batch_create(GWN_PRIM_LINES, vbo, NULL);
+               SHC.drw_arrows = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, NULL, 
GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_arrows;
 }
@@ -737,7 +696,7 @@ Gwn_Batch *DRW_cache_axis_names_get(void)
                GWN_vertbuf_attr_set(vbo, attr_id.pos, 12, v1);
                GWN_vertbuf_attr_set(vbo, attr_id.pos, 13, v2);
 
-               SHC.drw_axis_names = GWN_batch_create(GWN_PRIM_LINES, vbo, 
NULL);
+               SHC.drw_axis_names = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_axis_names;
 }
@@ -758,7 +717,7 @@ Gwn_Batch *DRW_cache_image_plane_get(void)
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, j, quad[j]);
                        GWN_vertbuf_attr_set(vbo, attr_id.texCoords, j, 
quad[j]);
                }
-               SHC.drw_image_plane = GWN_batch_create(GWN_PRIM_TRI_FAN, vbo, 
NULL);
+               SHC.drw_image_plane = GWN_batch_create_ex(GWN_PRIM_TRI_FAN, 
vbo, NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_image_plane;
 }
@@ -777,7 +736,7 @@ Gwn_Batch *DRW_cache_image_plane_wire_get(void)
                for (uint j = 0; j < 4; j++) {
                        GWN_vertbuf_attr_set(vbo, attr_id.pos, j, quad[j]);
                }
-               SHC.drw_image_plane_wire = GWN_batch_create(GWN_PRIM_LINE_LOOP, 
vbo, NULL);
+               SHC.drw_image_plane_wire = 
GWN_batch_create_ex(GWN_PRIM_LINE_LOOP, vbo, NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_image_plane_wire;
 }
@@ -814,7 +773,7 @@ Gwn_Batch *DRW_cache_field_wind_get(void)
                        }
                }
 
-               SHC.drw_field_wind = GWN_batch_create(GWN_PRIM_LINES, vbo, 
NULL);
+               SHC.drw_field_wind = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_field_wind;
 #undef CIRCLE_RESOL
@@ -851,7 +810,7 @@ Gwn_Batch *DRW_cache_field_force_get(void)
                        }
                }
 
-               SHC.drw_field_force = GWN_batch_create(GWN_PRIM_LINES, vbo, 
NULL);
+               SHC.drw_field_force = GWN_batch_create_ex(GWN_PRIM_LINES, vbo, 
NULL, GWN_BATCH_OWNS_VBO);
        }
        return SHC.drw_fie

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to