[Bf-blender-cvs] [846c11c8cfc] blender2.8: Gawain: remove GWN_batch_discard_all

Campbell Barton noreply at git.blender.org
Wed Aug 16 11:49:23 CEST 2017


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. @@




More information about the Bf-blender-cvs mailing list