diff options
Diffstat (limited to 'source/blender/draw/intern/draw_instance_data.h')
-rw-r--r-- | source/blender/draw/intern/draw_instance_data.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_instance_data.h b/source/blender/draw/intern/draw_instance_data.h index c8376189396..a7a66c9baff 100644 --- a/source/blender/draw/intern/draw_instance_data.h +++ b/source/blender/draw/intern/draw_instance_data.h @@ -26,16 +26,30 @@ #ifndef __DRAW_INSTANCE_DATA_H__ #define __DRAW_INSTANCE_DATA_H__ +#include "BLI_compiler_attrs.h" +#include "BLI_sys_types.h" + +#include "GPU_batch.h" + #define MAX_INSTANCE_DATA_SIZE 42 /* Can be adjusted for more */ typedef struct DRWInstanceData DRWInstanceData; typedef struct DRWInstanceDataList DRWInstanceDataList; +struct DRWShadingGroup; + void *DRW_instance_data_next(DRWInstanceData *idata); void *DRW_instance_data_get(DRWInstanceData *idata); DRWInstanceData *DRW_instance_data_request( DRWInstanceDataList *idatalist, unsigned int attrib_size, unsigned int instance_group); +void DRW_instance_buffer_request( + DRWInstanceDataList *idatalist, Gwn_VertFormat *format, struct DRWShadingGroup *shgroup, + Gwn_Batch **r_batch, Gwn_VertBuf **r_vert, Gwn_PrimType type); + +/* Upload all instance data to the GPU as soon as possible. */ +void DRW_instance_buffer_finish(DRWInstanceDataList *idatalist); + void DRW_instance_data_list_reset(DRWInstanceDataList *idatalist); void DRW_instance_data_list_free_unused(DRWInstanceDataList *idatalist); void DRW_instance_data_list_resize(DRWInstanceDataList *idatalist); |