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>2018-12-23 02:23:51 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-01-11 18:00:23 +0300
commita46dc9b234399401eac185284559adf713d75ecf (patch)
tree6e34388b0a1df94fe6fc428342fd85236e9659c1 /source/blender/draw/intern/draw_cache_impl_mesh.c
parent44e3fc66c7ef30390e7af8deaeff904ff0ef8adb (diff)
Mesh Batch Cache: Cleanup Unused
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c156
1 files changed, 4 insertions, 152 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 6e28bd6a916..a0da6fb2919 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -2088,61 +2088,6 @@ typedef struct MeshBatchCache {
/* OLD BATCH METHOD, thoses needs to be ported and added in the structs above. */
- /* Indices buffers. */
- GPUIndexBuf *edges_in_order;
- GPUIndexBuf *edges_adjacency; /* Store edges with adjacent vertices. */
- GPUIndexBuf *triangles_in_order;
- GPUIndexBuf *ledges_in_order;
-
- GPUBatch *all_triangles;
-
- GPUVertBuf *pos_with_normals;
- GPUVertBuf *pos_with_normals_visible_only;
- GPUVertBuf *pos_with_normals_edit;
- GPUVertBuf *pos_with_normals_visible_only_edit;
- GPUVertBuf *tri_aligned_uv; /* Active UV layer (mloopuv) */
-
- /**
- * Other uses are all positions or loose elements.
- * This stores all visible elements, needed for selection.
- */
- GPUVertBuf *ed_fcenter_pos_with_nor_and_sel;
- GPUVertBuf *ed_edge_pos;
- GPUVertBuf *ed_vert_pos;
-
- GPUBatch *triangles_with_normals;
- GPUBatch *ledges_with_normals;
-
- /* Skip hidden (depending on paint select mode) */
- GPUBatch *triangles_with_weights;
- GPUBatch *triangles_with_vert_colors;
- /* Always skip hidden */
- GPUBatch *triangles_with_select_mask;
- GPUBatch *triangles_with_select_id;
- uint triangles_with_select_id_offset;
-
- GPUBatch *facedot_with_select_id; /* shares vbo with 'edit_facedots' */
- GPUBatch *edges_with_select_id;
- GPUBatch *verts_with_select_id;
-
- uint facedot_with_select_id_offset;
- uint edges_with_select_id_offset;
- uint verts_with_select_id_offset;
-
- GPUBatch *points_with_normals;
- GPUBatch *fancy_edges; /* owns its vertex buffer (not shared) */
-
- GPUBatch *edge_detection;
-
- /* Texture Paint.*/
- /* per-texture batch */
- GPUBatch **texpaint_triangles;
- GPUBatch *texpaint_triangles_single;
-
- GPUBatch *overlay_weight_faces;
- GPUBatch *overlay_weight_verts;
- GPUBatch *overlay_paint_edges;
-
/* 2D/UV edit */
GPUVertBuf *edituv_pos;
GPUVertBuf *edituv_area;
@@ -2189,7 +2134,7 @@ typedef struct MeshBatchCache {
/* XXX, only keep for as long as sculpt mode uses shaded drawing. */
bool is_sculpt_points_tag;
- /* Valid only if edges_adjacency is up to date. */
+ /* Valid only if edge_detection is up to date. */
bool is_manifold;
} MeshBatchCache;
@@ -2311,8 +2256,6 @@ static void mesh_batch_cache_discard_shaded_tri(MeshBatchCache *cache)
}
MEM_SAFE_FREE(cache->surf_per_mat);
- MEM_SAFE_FREE(cache->texpaint_triangles);
-
MEM_SAFE_FREE(cache->auto_layer_names);
MEM_SAFE_FREE(cache->auto_layer_is_srgb);
@@ -2382,12 +2325,6 @@ void DRW_mesh_batch_cache_dirty_tag(Mesh *me, int mode)
GPU_BATCH_DISCARD_SAFE(cache->batch.edit_loose_verts);
GPU_BATCH_DISCARD_SAFE(cache->batch.edit_loose_edges);
GPU_BATCH_DISCARD_SAFE(cache->batch.edit_facedots);
- GPU_VERTBUF_DISCARD_SAFE(cache->ed_edge_pos);
- GPU_VERTBUF_DISCARD_SAFE(cache->ed_vert_pos);
- /* Edit mode selection. */
- GPU_BATCH_DISCARD_SAFE(cache->facedot_with_select_id);
- GPU_BATCH_DISCARD_SAFE(cache->edges_with_select_id);
- GPU_BATCH_DISCARD_SAFE(cache->verts_with_select_id);
/* Paint mode selection */
/* TODO only do that in paint mode. */
GPU_VERTBUF_DISCARD_SAFE(cache->ordered.loop_pos_nor);
@@ -2398,9 +2335,6 @@ void DRW_mesh_batch_cache_dirty_tag(Mesh *me, int mode)
GPU_BATCH_DISCARD_SAFE(cache->surf_per_mat[i]);
}
}
- GPU_BATCH_DISCARD_SAFE(cache->overlay_paint_edges);
- GPU_BATCH_DISCARD_SAFE(cache->overlay_weight_faces);
- GPU_BATCH_DISCARD_SAFE(cache->overlay_weight_verts);
/* Because visible UVs depends on edit mode selection, discard everything. */
mesh_batch_cache_discard_uvedit(cache);
break;
@@ -2426,49 +2360,6 @@ void DRW_mesh_batch_cache_dirty_tag(Mesh *me, int mode)
}
}
-/**
- * This only clear the batches associated to the given vertex buffer.
- **/
-static void mesh_batch_cache_clear_selective(Mesh *me, GPUVertBuf *vert)
-{
- MeshBatchCache *cache = me->runtime.batch_cache;
- if (!cache) {
- return;
- }
-
- BLI_assert(vert != NULL);
-
- if (ELEM(vert, cache->pos_with_normals, cache->pos_with_normals_visible_only,
- cache->pos_with_normals_edit, cache->pos_with_normals_visible_only_edit))
- {
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_normals);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_weights);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_vert_colors);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_select_id);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_select_mask);
- GPU_BATCH_DISCARD_SAFE(cache->points_with_normals);
- GPU_BATCH_DISCARD_SAFE(cache->ledges_with_normals);
- // if (cache->shaded_triangles) {
- // for (int i = 0; i < cache->mat_len; i++) {
- // GPU_BATCH_DISCARD_SAFE(cache->shaded_triangles[i]);
- // }
- // }
- // MEM_SAFE_FREE(cache->shaded_triangles);
- // if (cache->texpaint_triangles) {
- // for (int i = 0; i < cache->mat_len; i++) {
- // GPU_BATCH_DISCARD_SAFE(cache->texpaint_triangles[i]);
- // }
- // }
- MEM_SAFE_FREE(cache->texpaint_triangles);
- GPU_BATCH_DISCARD_SAFE(cache->texpaint_triangles_single);
- }
- /* TODO: add the other ones if needed. */
- else {
- /* Does not match any vertbuf in the batch cache! */
- BLI_assert(0);
- }
-}
-
static void mesh_batch_cache_clear(Mesh *me)
{
MeshBatchCache *cache = me->runtime.batch_cache;
@@ -2497,51 +2388,10 @@ static void mesh_batch_cache_clear(Mesh *me)
GPU_BATCH_DISCARD_SAFE(batch[i]);
}
- GPU_BATCH_DISCARD_SAFE(cache->all_triangles);
-
- GPU_INDEXBUF_DISCARD_SAFE(cache->edges_in_order);
- GPU_INDEXBUF_DISCARD_SAFE(cache->triangles_in_order);
- GPU_INDEXBUF_DISCARD_SAFE(cache->ledges_in_order);
-
- GPU_BATCH_DISCARD_SAFE(cache->overlay_weight_faces);
- GPU_BATCH_DISCARD_SAFE(cache->overlay_weight_verts);
- GPU_BATCH_DISCARD_SAFE(cache->overlay_paint_edges);
-
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_normals);
- GPU_BATCH_DISCARD_SAFE(cache->points_with_normals);
- GPU_BATCH_DISCARD_SAFE(cache->ledges_with_normals);
- GPU_VERTBUF_DISCARD_SAFE(cache->pos_with_normals);
- GPU_VERTBUF_DISCARD_SAFE(cache->pos_with_normals_visible_only);
- GPU_VERTBUF_DISCARD_SAFE(cache->pos_with_normals_edit);
- GPU_VERTBUF_DISCARD_SAFE(cache->pos_with_normals_visible_only_edit);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_weights);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_vert_colors);
- GPU_VERTBUF_DISCARD_SAFE(cache->tri_aligned_uv);
- GPU_VERTBUF_DISCARD_SAFE(cache->ed_fcenter_pos_with_nor_and_sel);
- GPU_VERTBUF_DISCARD_SAFE(cache->ed_edge_pos);
- GPU_VERTBUF_DISCARD_SAFE(cache->ed_vert_pos);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_select_mask);
- GPU_BATCH_DISCARD_SAFE(cache->triangles_with_select_id);
- GPU_BATCH_DISCARD_SAFE(cache->facedot_with_select_id);
- GPU_BATCH_DISCARD_SAFE(cache->edges_with_select_id);
- GPU_BATCH_DISCARD_SAFE(cache->verts_with_select_id);
-
- GPU_BATCH_DISCARD_SAFE(cache->fancy_edges);
-
- GPU_INDEXBUF_DISCARD_SAFE(cache->edges_adjacency);
- GPU_BATCH_DISCARD_SAFE(cache->edge_detection);
-
mesh_batch_cache_discard_shaded_tri(cache);
mesh_batch_cache_discard_uvedit(cache);
- if (cache->texpaint_triangles) {
- for (int i = 0; i < cache->mat_len; i++) {
- GPU_BATCH_DISCARD_SAFE(cache->texpaint_triangles[i]);
- }
- }
- MEM_SAFE_FREE(cache->texpaint_triangles);
-
drw_mesh_weight_state_clear(&cache->weight_state);
}
@@ -4869,8 +4719,9 @@ GPUBatch *DRW_mesh_batch_cache_get_surface_edges(Mesh *me)
/**
* Needed for when we draw with shaded data.
*/
-void DRW_mesh_cache_sculpt_coords_ensure(Mesh *me)
+void DRW_mesh_cache_sculpt_coords_ensure(Mesh *UNUSED(me))
{
+#if 0 /* Unused for now */
if (me->runtime.batch_cache) {
MeshBatchCache *cache = mesh_batch_cache_get(me);
if (cache && cache->pos_with_normals && cache->is_sculpt_points_tag) {
@@ -4881,6 +4732,7 @@ void DRW_mesh_cache_sculpt_coords_ensure(Mesh *me)
}
cache->is_sculpt_points_tag = false;
}
+#endif
}
static uchar mesh_batch_cache_validate_edituvs(MeshBatchCache *cache, uchar state)