diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-02-28 19:28:58 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-02-28 19:28:58 +0300 |
commit | 1e58e68c1a48a7139bb047f2c31225f286a3183c (patch) | |
tree | f50bfc7e31750d84e3fb2f0ec79b6530bfe98c79 | |
parent | 1545c37cdb7e8ca485cb9defcca0352a9b8ee3b3 (diff) |
DRW: Manager: Expose resource handle getter
-rw-r--r-- | source/blender/draw/intern/DRW_render.h | 3 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager_data.c | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index cbd39331680..9238b04a622 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -421,6 +421,9 @@ void DRW_buffer_add_entry_array(DRWCallBuffer *buffer, const void *attr[], uint DRW_buffer_add_entry_array(buffer, array, (sizeof(array) / sizeof(*array))); \ } while (0) +/* Can only be called during iter phase. */ +void DRW_object_resource_handle_get(uint32_t *chunk, uint32_t *id); + void DRW_shgroup_state_enable(DRWShadingGroup *shgroup, DRWState state); void DRW_shgroup_state_disable(DRWShadingGroup *shgroup, DRWState state); void DRW_shgroup_stencil_mask(DRWShadingGroup *shgroup, uint mask); diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c index fbdabb44b15..bdfb24ab3e2 100644 --- a/source/blender/draw/intern/draw_manager_data.c +++ b/source/blender/draw/intern/draw_manager_data.c @@ -562,6 +562,18 @@ static DRWResourceHandle drw_resource_handle_new(float (*obmat)[4], Object *ob) return handle; } +void DRW_object_resource_handle_get(uint32_t *chunk, uint32_t *id) +{ + DRWResourceHandle handle = DST.ob_handle; + if (handle == 0) { + /* Handle not yet allocated. Return next handle. */ + handle = DST.resource_handle; + } + + *chunk = DRW_handle_chunk_get(&handle); + *id = DRW_handle_id_get(&handle); +} + static DRWResourceHandle drw_resource_handle(DRWShadingGroup *shgroup, float (*obmat)[4], Object *ob) |