Blender V4.3
draw_instance_data.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2016 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BLI_compiler_attrs.h"
12#include "BLI_sys_types.h"
13
14#include "GPU_batch.hh"
15
16#define MAX_INSTANCE_DATA_SIZE 64 /* Can be adjusted for more */
17
18#define DRW_BUFFER_VERTS_CHUNK 128
19
20struct GHash;
22struct DRWInstanceData;
25
31
42 int *vert_len);
47blender::gpu::Batch *DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist,
49 blender::gpu::Batch *instancer,
50 blender::gpu::Batch *geom);
54blender::gpu::Batch *DRW_temp_batch_request(DRWInstanceDataList *idatalist,
56 GPUPrimType type);
57
62
66
67/* Sparse chunked UBO manager. */
68
73 unsigned int chunk_size);
81void DRW_sparse_uniform_buffer_clear(DRWSparseUniformBuf *buffer, bool free_all);
93void DRW_sparse_uniform_buffer_bind(DRWSparseUniformBuf *buffer, int chunk, int location);
101void *DRW_sparse_uniform_buffer_ensure_item(DRWSparseUniformBuf *buffer, int chunk, int item);
102
103/* Uniform attribute UBO management. */
104
unsigned int uint
GPUPrimType
DRWSparseUniformBuf * DRW_sparse_uniform_buffer_new(unsigned int item_size, unsigned int chunk_size)
void DRW_instance_data_list_free_unused(DRWInstanceDataList *idatalist)
bool DRW_sparse_uniform_buffer_is_empty(DRWSparseUniformBuf *buffer)
void DRW_uniform_attrs_pool_flush_all(GHash *table)
void DRW_instance_buffer_finish(DRWInstanceDataList *idatalist)
void DRW_sparse_uniform_buffer_free(DRWSparseUniformBuf *buffer)
void DRW_uniform_attrs_pool_clear_all(GHash *table)
blender::gpu::VertBuf * DRW_temp_buffer_request(DRWInstanceDataList *idatalist, GPUVertFormat *format, int *vert_len)
DRWSparseUniformBuf * DRW_uniform_attrs_pool_find_ubo(GHash *table, const GPUUniformAttrList *key)
blender::gpu::Batch * DRW_temp_batch_instance_request(DRWInstanceDataList *idatalist, blender::gpu::VertBuf *buf, blender::gpu::Batch *instancer, blender::gpu::Batch *geom)
void * DRW_instance_data_next(DRWInstanceData *idata)
void DRW_sparse_uniform_buffer_unbind(DRWSparseUniformBuf *buffer, int chunk)
void DRW_sparse_uniform_buffer_bind(DRWSparseUniformBuf *buffer, int chunk, int location)
GHash * DRW_uniform_attrs_pool_new()
void DRW_instance_data_list_reset(DRWInstanceDataList *idatalist)
void DRW_sparse_uniform_buffer_clear(DRWSparseUniformBuf *buffer, bool free_all)
void DRW_sparse_uniform_buffer_flush(DRWSparseUniformBuf *buffer)
DRWInstanceData * DRW_instance_data_request(DRWInstanceDataList *idatalist, uint attr_size)
void * DRW_sparse_uniform_buffer_ensure_item(DRWSparseUniformBuf *buffer, int chunk, int item)
blender::gpu::Batch * DRW_temp_batch_request(DRWInstanceDataList *idatalist, blender::gpu::VertBuf *buf, GPUPrimType type)
void DRW_instance_data_list_resize(DRWInstanceDataList *idatalist)
static uint attr_size(const GPUVertAttr *a)
format