[Bf-blender-cvs] [7b524d9b710] master: Cleanup: move and simplify some draw_cache macros

Germano Cavalcante noreply at git.blender.org
Thu Jun 24 15:55:50 CEST 2021


Commit: 7b524d9b710f18dc4539a97de7fad7a760565757
Author: Germano Cavalcante
Date:   Thu Jun 24 10:53:22 2021 -0300
Branches: master
https://developer.blender.org/rB7b524d9b710f18dc4539a97de7fad7a760565757

Cleanup: move and simplify some draw_cache macros

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

M	source/blender/draw/intern/draw_cache_extract.h
M	source/blender/draw/intern/draw_cache_extract_mesh_private.h
M	source/blender/draw/intern/draw_cache_impl_mesh.c

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

diff --git a/source/blender/draw/intern/draw_cache_extract.h b/source/blender/draw/intern/draw_cache_extract.h
index 848253a7e43..be61b0a9baf 100644
--- a/source/blender/draw/intern/draw_cache_extract.h
+++ b/source/blender/draw/intern/draw_cache_extract.h
@@ -263,8 +263,7 @@ typedef struct MeshBatchCache {
 #define MBC_IBO_LEN (sizeof(((MeshBufferCache){0}).ibo) / sizeof(void *))
 
 #define MBC_BATCH_INDEX(batch_name) \
-  ((offsetof(MeshBatchCache, batch_name) - offsetof(MeshBatchCache, batch.surface)) / \
-   sizeof(void *))
+  ((offsetof(MeshBatchCache, batch_name) - offsetof(MeshBatchCache, batch)) / sizeof(void *))
 
 typedef enum DRWBatchFlag {
   MBC_SURFACE = (1u << MBC_BATCH_INDEX(batch.surface)),
diff --git a/source/blender/draw/intern/draw_cache_extract_mesh_private.h b/source/blender/draw/intern/draw_cache_extract_mesh_private.h
index a258967564b..1b4521335ec 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh_private.h
+++ b/source/blender/draw/intern/draw_cache_extract_mesh_private.h
@@ -40,66 +40,6 @@ extern "C" {
 
 #define MIN_RANGE_LEN 1024
 
-/* ---------------------------------------------------------------------- */
-/** \name Dependencies between buffer and batch
- * \{ */
-#ifndef NDEBUG
-#  define _MDEF_type(name) static DRWBatchFlag MDEP_assert_##name = 0, MDEP_##name
-#else
-#  define _MDEF_type(name) static const DRWBatchFlag MDEP_##name
-#endif
-
-/* clang-format off */
-
-#define _MDEPS_CREATE1(b) (1u << MBC_BATCH_INDEX(b))
-#define _MDEPS_CREATE2(b1, b2) _MDEPS_CREATE1(b1) | _MDEPS_CREATE1(b2)
-#define _MDEPS_CREATE3(b1, b2, b3) _MDEPS_CREATE2(b1, b2) | _MDEPS_CREATE1(b3)
-#define _MDEPS_CREATE4(b1, b2, b3, b4) _MDEPS_CREATE3(b1, b2, b3) | _MDEPS_CREATE1(b4)
-#define _MDEPS_CREATE5(b1, b2, b3, b4, b5) _MDEPS_CREATE4(b1, b2, b3, b4) | _MDEPS_CREATE1(b5)
-#define _MDEPS_CREATE6(b1, b2, b3, b4, b5, b6) _MDEPS_CREATE5(b1, b2, b3, b4, b5) | _MDEPS_CREATE1(b6)
-#define _MDEPS_CREATE7(b1, b2, b3, b4, b5, b6, b7) _MDEPS_CREATE6(b1, b2, b3, b4, b5, b6) | _MDEPS_CREATE1(b7)
-#define _MDEPS_CREATE8(b1, b2, b3, b4, b5, b6, b7, b8) _MDEPS_CREATE7(b1, b2, b3, b4, b5, b6, b7) | _MDEPS_CREATE1(b8)
-#define _MDEPS_CREATE9(b1, b2, b3, b4, b5, b6, b7, b8, b9) _MDEPS_CREATE8(b1, b2, b3, b4, b5, b6, b7, b8) | _MDEPS_CREATE1(b9)
-#define _MDEPS_CREATE10(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) _MDEPS_CREATE9(b1, b2, b3, b4, b5, b6, b7, b8, b9) | _MDEPS_CREATE1(b10)
-#define _MDEPS_CREATE19(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19) _MDEPS_CREATE10(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) | _MDEPS_CREATE9(b11, b12, b13, b14, b15, b16, b17, b18, b19)
-
-#define MDEPS_CREATE(name, ...) _MDEF_type(name) = VA_NARGS_CALL_OVERLOAD(_MDEPS_CREATE, __VA_ARGS__)
-
-#define _MDEPS_CREATE_MAP1(a) MDEP_##a
-#define _MDEPS_CREATE_MAP2(a, b) MDEP_##a | MDEP_##b
-#define _MDEPS_CREATE_MAP3(a, b, c) _MDEPS_CREATE_MAP2(a, b) | MDEP_##c
-#define _MDEPS_CREATE_MAP4(a, b, c, d) _MDEPS_CREATE_MAP3(a, b, c) | MDEP_##d
-#define _MDEPS_CREATE_MAP5(a, b, c, d, e) _MDEPS_CREATE_MAP4(a, b, c, d) | MDEP_##e
-#define _MDEPS_CREATE_MAP6(a, b, c, d, e, f) _MDEPS_CREATE_MAP5(a, b, c, d, e) | MDEP_##f
-#define _MDEPS_CREATE_MAP7(a, b, c, d, e, f, g) _MDEPS_CREATE_MAP6(a, b, c, d, e, f) | MDEP_##g
-#define _MDEPS_CREATE_MAP8(a, b, c, d, e, f, g, h) _MDEPS_CREATE_MAP7(a, b, c, d, e, f, g) | MDEP_##h
-#define _MDEPS_CREATE_MAP9(a, b, c, d, e, f, g, h, i) _MDEPS_CREATE_MAP8(a, b, c, d, e, f, g, h) | MDEP_##i
-#define _MDEPS_CREATE_MAP10(a, b, c, d, e, f, g, h, i, j) _MDEPS_CREATE_MAP9(a, b, c, d, e, f, g, h, i) | MDEP_##j
-
-#define MDEPS_CREATE_MAP(...) VA_NARGS_CALL_OVERLOAD(_MDEPS_CREATE_MAP, __VA_ARGS__)
-
-#ifndef NDEBUG
-#  define _MDEPS_ASSERT2(b, name) \
-    MDEP_assert_##name |= _MDEPS_CREATE1(b); \
-    BLI_assert(MDEP_##name & _MDEPS_CREATE1(b))
-#  define _MDEPS_ASSERT3(b, n1, n2) _MDEPS_ASSERT2(b, n1); _MDEPS_ASSERT2(b, n2)
-#  define _MDEPS_ASSERT4(b, n1, n2, n3) _MDEPS_ASSERT3(b, n1, n2); _MDEPS_ASSERT2(b, n3)
-#  define _MDEPS_ASSERT5(b, n1, n2, n3, n4) _MDEPS_ASSERT4(b, n1, n2, n3); _MDEPS_ASSERT2(b, n4)
-#  define _MDEPS_ASSERT6(b, n1, n2, n3, n4, n5) _MDEPS_ASSERT5(b, n1, n2, n3, n4); _MDEPS_ASSERT2(b, n5)
-#  define _MDEPS_ASSERT7(b, n1, n2, n3, n4, n5, n6) _MDEPS_ASSERT6(b, n1, n2, n3, n4, n5); _MDEPS_ASSERT2(b, n6)
-#  define _MDEPS_ASSERT8(b, n1, n2, n3, n4, n5, n6, n7) _MDEPS_ASSERT7(b, n1, n2, n3, n4, n5, n6); _MDEPS_ASSERT2(b, n7)
-
-#  define MDEPS_ASSERT(...) VA_NARGS_CALL_OVERLOAD(_MDEPS_ASSERT, __VA_ARGS__)
-#  define MDEPS_ASSERT_MAP(name) BLI_assert(MDEP_assert_##name == MDEP_##name)
-#else
-#  define MDEPS_ASSERT(...)
-#  define MDEPS_ASSERT_MAP(name) UNUSED_VARS(MDEP_##name)
-#endif
-
-/* clang-format on */
-
-/** \} */
-
 /* ---------------------------------------------------------------------- */
 /** \name Mesh Render Data
  * \{ */
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 3b70490509d..33f8ec38a54 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -72,85 +72,150 @@
 
 #include "draw_cache_impl.h" /* own include */
 
-MDEPS_CREATE(vbo_lnor, batch.surface, batch.wire_loops, batch.edit_lnor, surface_per_mat);
-MDEPS_CREATE(vbo_pos_nor,
-             batch.surface,
-             batch.surface_weights,
-             batch.all_verts,
-             batch.all_edges,
-             batch.loose_edges,
-             batch.edge_detection,
-             batch.wire_loops,
-             batch.wire_edges,
-             batch.edit_vnor,
-             batch.edit_lnor,
-             batch.edit_vertices,
-             batch.edit_edges,
-             batch.edit_triangles,
-             batch.edit_selection_verts,
-             batch.edit_selection_edges,
-             batch.edit_selection_faces,
-             batch.edit_mesh_analysis,
-             batch.sculpt_overlays,
-             surface_per_mat);
-MDEPS_CREATE(vbo_uv,
-             batch.surface,
-             batch.wire_loops_uvs,
-             batch.edituv_faces,
-             batch.edituv_faces_stretch_area,
-             batch.edituv_faces_stretch_angle,
-             batch.edituv_edges,
-             batch.edituv_verts,
-             surface_per_mat);
-MDEPS_CREATE(vbo_vcol, batch.surface, surface_per_mat);
-MDEPS_CREATE(vbo_sculpt_data, batch.sculpt_overlays);
-MDEPS_CREATE(vbo_weights, batch.surface_weights);
-MDEPS_CREATE(vbo_edge_fac, batch.wire_edges);
-MDEPS_CREATE(vbo_mesh_analysis, batch.edit_mesh_analysis);
-MDEPS_CREATE(vbo_tan, surface_per_mat);
-MDEPS_CREATE(vbo_orco, surface_per_mat);
-MDEPS_CREATE(vbo_edit_data, batch.edit_triangles, batch.edit_edges, batch.edit_vertices);
-MDEPS_CREATE(vbo_fdots_pos, batch.edit_fdots, batch.edit_selection_fdots);
-MDEPS_CREATE(vbo_fdots_nor, batch.edit_fdots);
-MDEPS_CREATE(vbo_skin_roots, batch.edit_skin_roots);
-MDEPS_CREATE(vbo_vert_idx, batch.edit_selection_verts);
-MDEPS_CREATE(vbo_edge_idx, batch.edit_selection_edges);
-MDEPS_CREATE(vbo_poly_idx, batch.edit_selection_faces);
-MDEPS_CREATE(vbo_fdot_idx, batch.edit_selection_fdots);
-MDEPS_CREATE(vbo_edituv_data,
-             batch.edituv_faces,
-             batch.edituv_faces_stretch_area,
-             batch.edituv_faces_stretch_angle,
-             batch.edituv_edges,
-             batch.edituv_verts);
-MDEPS_CREATE(vbo_edituv_stretch_area, batch.edituv_faces_stretch_area);
-MDEPS_CREATE(vbo_edituv_stretch_angle, batch.edituv_faces_stretch_angle);
-MDEPS_CREATE(vbo_fdots_uv, batch.edituv_fdots);
-MDEPS_CREATE(vbo_fdots_edituv_data, batch.edituv_fdots);
-
-MDEPS_CREATE(ibo_tris,
-             batch.surface,
-             batch.sculpt_overlays,
-             batch.surface_weights,
-             batch.edit_mesh_analysis,
-             batch.edit_triangles,
-             batch.edit_lnor,
-             batch.edit_selection_faces);
-MDEPS_CREATE(
-    ibo_lines, batch.all_edges, batch.wire_edges, batch.edit_edges, batch.edit_selection_edges);
-MDEPS_CREATE(ibo_lines_loose, batch.loose_edges);
-MDEPS_CREATE(ibo_lines_adjacency, batch.edge_detection);
-MDEPS_CREATE(ibo_lines_paint_mask, batch.wire_loops);
-MDEPS_CREATE(ibo_tris_per_mat, surface_per_mat);
-MDEPS_CREATE(ibo_points, batch.edit_vnor, batch.edit_selection_verts, batch.edit_vertices);
-MDEPS_CREATE(ibo_fdots, batch.edit_fdots, batch.edit_selection_fdots);
-MDEPS_CREATE(ibo_edituv_tris,
-             batch.edituv_faces,
-             batch.edituv_faces_stretch_area,
-             batch.edituv_faces_stretch_angle);
-MDEPS_CREATE(ibo_edituv_lines, batch.edituv_edges, batch.wire_loops_uvs);
-MDEPS_CREATE(ibo_edituv_points, batch.edituv_verts);
-MDEPS_CREATE(ibo_edituv_fdots, batch.edituv_fdots);
+/* ---------------------------------------------------------------------- */
+/** \name Dependencies between buffer and batch
+ * \{ */
+
+/* clang-format off */
+
+#define _BUFFER_INDEX(buff_name) ((offsetof(MeshBufferCache, buff_name) - offsetof(MeshBufferCache, vbo)) / sizeof(void *))
+
+#define _MDEPS_CREATE1(b) (1u << MBC_BATCH_INDEX(b))
+#define _MDEPS_CREATE2(b1, b2) _MDEPS_CREATE1(b1) | _MDEPS_CREATE1(b2)
+#define _MDEPS_CREATE3(b1, b2, b3) _MDEPS_CREATE2(b1, b2) | _MDEPS_CREATE1(b3)
+#define _MDEPS_CREATE4(b1, b2, b3, b4) _MDEPS_CREATE3(b1, b2, b3) | _MDEPS_CREATE1(b4)
+#define _MDEPS_CREATE5(b1, b2, b3, b4, b5) _MDEPS_CREATE4(b1, b2, b3, b4) | _MDEPS_CREATE1(b5)
+#define _MDEPS_CREATE6(b1, b2, b3, b4, b5, b6) _MDEPS_CREATE5(b1, b2, b3, b4, b5) | _MDEPS_CREATE1(b6)
+#define _MDEPS_CREATE7(b1, b2, b3, b4, b5, b6, b7) _MDEPS_CREATE6(b1, b2, b3, b4, b5, b6) | _MDEPS_CREATE1(b7)
+#define _MDEPS_CREATE8(b1, b2, b3, b4, b5, b6, b7, b8) _MDEPS_CREATE7(b1, b2, b3, b4, b5, b6, b7) | _MDEPS_CREATE1(b8)
+#define _MDEPS_CREATE9(b1, b2, b3, b4, b5, b6, b7, b8, b9) _MDEPS_CREATE8(b1, b2, b3, b4, b5, b6, b7, b8) | _MDEPS_CREATE1(b9)
+#define _MDEPS_CREATE10(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) _MDEPS_CREATE9(b1, b2, b3, b4, b5, b6, b7, b8, b9) | _MDEPS_CREATE1(b10)
+#define _MDEPS_CREATE19(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19) _MDEPS_CREATE10(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) | _MDEPS_CREATE9(b1

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list