[Bf-blender-cvs] [63a6a16cdd3] temp-T88822-gpu-thread-safe-index-builder: Generate task_id from task_counter.
Jeroen Bakker
noreply at git.blender.org
Fri Jun 4 15:00:39 CEST 2021
Commit: 63a6a16cdd3988c625bd6cbd31d2a263397b69ef
Author: Jeroen Bakker
Date: Fri Jun 4 14:58:37 2021 +0200
Branches: temp-T88822-gpu-thread-safe-index-builder
https://developer.blender.org/rB63a6a16cdd3988c625bd6cbd31d2a263397b69ef
Generate task_id from task_counter.
===================================================================
M source/blender/draw/intern/draw_cache_extract_mesh.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
===================================================================
diff --git a/source/blender/draw/intern/draw_cache_extract_mesh.cc b/source/blender/draw/intern/draw_cache_extract_mesh.cc
index fbfe0e350a5..f207adaf21a 100644
--- a/source/blender/draw/intern/draw_cache_extract_mesh.cc
+++ b/source/blender/draw/intern/draw_cache_extract_mesh.cc
@@ -709,15 +709,11 @@ static void extract_range_task_create(struct TaskGraph *task_graph,
ExtractTaskData *taskdata,
const eMRIterType type,
int start,
- int length,
- const uint task_id)
+ int length)
{
taskdata = new ExtractTaskData(*taskdata);
- BLI_assert(task_id < taskdata->task_len);
- taskdata->task_id = task_id;
- /* task_len is set to num_threads, so task_id may not exceed num_threads. */
-
- atomic_add_and_fetch_int32(taskdata->task_counter, 1);
+ taskdata->task_id = atomic_fetch_and_add_int32(taskdata->task_counter, 1);
+ BLI_assert(taskdata->task_id < taskdata->task_len);
taskdata->iter_type = type;
taskdata->start = start;
taskdata->end = start + length;
@@ -765,50 +761,29 @@ static void extract_task_in_ranges_create(struct TaskGraph *task_graph,
const MeshRenderData *mr = taskdata_base->mr;
const int range_len = extract_range_task_chunk_size_get(
mr, taskdata_base->iter_type, num_threads);
- uint task_id = 0;
if (taskdata_base->iter_type & MR_ITER_LOOPTRI) {
for (int i = 0; i < mr->tri_len; i += range_len) {
- extract_range_task_create(task_graph,
- task_node_user_data_init,
- taskdata_base,
- MR_ITER_LOOPTRI,
- i,
- range_len,
- task_id++);
+ extract_range_task_create(
+ task_graph, task_node_user_data_init, taskdata_base, MR_ITER_LOOPTRI, i, range_len);
}
}
if (taskdata_base->iter_type & MR_ITER_POLY) {
for (int i = 0; i < mr->poly_len; i += range_len) {
- extract_range_task_create(task_graph,
- task_node_user_data_init,
- taskdata_base,
- MR_ITER_POLY,
- i,
- range_len,
- task_id++);
+ extract_range_task_create(
+ task_graph, task_node_user_data_init, taskdata_base, MR_ITER_POLY, i, range_len);
}
}
if (taskdata_base->iter_type & MR_ITER_LEDGE) {
for (int i = 0; i < mr->edge_loose_len; i += range_len) {
- extract_range_task_create(task_graph,
- task_node_user_data_init,
- taskdata_base,
- MR_ITER_LEDGE,
- i,
- range_len,
- task_id++);
+ extract_range_task_create(
+ task_graph, task_node_user_data_init, taskdata_base, MR_ITER_LEDGE, i, range_len);
}
}
if (taskdata_base->iter_type & MR_ITER_LVERT) {
for (int i = 0; i < mr->vert_loose_len; i += range_len) {
- extract_range_task_create(task_graph,
- task_node_user_data_init,
- taskdata_base,
- MR_ITER_LVERT,
- i,
- range_len,
- task_id++);
+ extract_range_task_create(
+ task_graph, task_node_user_data_init, taskdata_base, MR_ITER_LVERT, i, range_len);
}
}
}
diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
index 45398c6cae9..fe1a11373e1 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
@@ -11,7 +11,6 @@ namespace blender::draw {
* \{ */
struct ExtractPointsUserData {
GPUIndexBufBuilder builder;
- /* TODO(jbakker): make unique_ptr<Array<GPUIndexBufBuilder>> */
Vector<GPUIndexBufBuilder> subbuilders;
};
More information about the Bf-blender-cvs
mailing list