Blender Git Commit Log

Git Commits -> Revision bf34b0c

Revision bf34b0c by Jeroen Bakker (master)
June 2, 2020, 13:54 (GMT)
DrawManager: Graph Task Scheduling

This patch uses a graph flow scheduler for creating all mesh batches.
On a Ryzen 1700 the framerate of Spring/020_02A.anim.blend went from 10 fps to 11.5 fps.

For each mesh where batches needs to be updated a sub-graph will be added to the task_graph.
This sub-graph starts with an extract_render_data_node. This fills/converts the required data
from Mesh.

Small extractions and extractions that can't be multi-threaded are grouped in a single
`extract_single_threaded_task_node`.

Other extractions will create a node for each loop exceeding 4096 items. these nodes are
linked to the `user_data_init_task_node`. the `user_data_init_task_node` prepares the userdata
needed for the extraction based on the data extracted from the mesh.

Note: If the `lines` and `lines_loose` are requested, the `lines_loose` sub-buffer is created
as part of the lines extraction. When the lines_loose is only requested the sub-buffer is
created from the existing `lines` buffer. It is assumed that the lines buffer is always
requested before or together with the lines_loose what is always the case (see
`DRW_batch_requested(cache->batch.loose_edges, GPU_PRIM_LINES)` in `draw_cache_impl_mesh.c`).

Reviewed By: Cl�ment Foucault

Differential Revision: https://developer.blender.org/D7618

Commit Details:

Full Hash: bf34b0c8f4b8c64bcc4ec0f3371d343e9c2fe029
Parent Commit: 2144305
Lines Changed: +424, -137

9 Modified Paths:

/source/blender/draw/intern/draw_cache.c (+4, -2) (Diff)
/source/blender/draw/intern/draw_cache_extract.h (+4, -1) (Diff)
/source/blender/draw/intern/draw_cache_extract_mesh.c (+348, -117) (Diff)
/source/blender/draw/intern/draw_cache_impl.h (+3, -1) (Diff)
/source/blender/draw/intern/draw_cache_impl_mesh.c (+18, -7) (Diff)
/source/blender/draw/intern/draw_manager.c (+28, -5) (Diff)
/source/blender/draw/intern/draw_manager.h (+3, -0) (Diff)
/source/blender/draw/intern/DRW_render.h (+2, -0) (Diff)
/source/blender/editors/uvedit/uvedit_draw.c (+14, -4) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021