56#define GPU_BATCH_OWNS_NONE GPU_BATCH_INVALID
59 "GPUBatchFlag: Error: status flags are shadowed by the ownership bits!")
88 virtual ~Batch() =
default;
90 virtual void draw(
int v_first,
int v_count,
int i_first,
int i_count) = 0;
97 uint32_t vertex_count_get()
const
100 return elem_()->index_len_get();
102 return verts_(0)->vertex_len;
106 IndexBuf *elem_()
const
110 VertBuf *verts_(
const int index)
const
141#define GPU_batch_create(primitive_type, vertex_buf, index_buf) \
142 GPU_batch_create_ex(primitive_type, vertex_buf, index_buf, (GPUBatchFlag)0)
159#define GPU_batch_init(batch, primitive_type, vertex_buf, index_buf) \
160 GPU_batch_init_ex(batch, primitive_type, vertex_buf, index_buf, (GPUBatchFlag)0)
166void GPU_batch_copy(blender::gpu::Batch *batch_dst, blender::gpu::Batch *batch_src);
183#define GPU_BATCH_CLEAR_SAFE(batch) \
185 if (batch != nullptr) { \
186 GPU_batch_clear(batch); \
187 GPU_batch_zero(batch); \
197#define GPU_BATCH_DISCARD_SAFE(batch) \
199 if (batch != nullptr) { \
200 GPU_batch_discard(batch); \
250 blender::gpu::Batch *
batch,
269#define GPU_batch_uniform_1i(batch, name, x) GPU_shader_uniform_1i((batch)->shader, name, x);
270#define GPU_batch_uniform_1b(batch, name, x) GPU_shader_uniform_1b((batch)->shader, name, x);
271#define GPU_batch_uniform_1f(batch, name, x) GPU_shader_uniform_1f((batch)->shader, name, x);
272#define GPU_batch_uniform_2f(batch, name, x, y) GPU_shader_uniform_2f((batch)->shader, name, x, y);
273#define GPU_batch_uniform_3f(batch, name, x, y, z) \
274 GPU_shader_uniform_3f((batch)->shader, name, x, y, z);
275#define GPU_batch_uniform_4f(batch, name, x, y, z, w) \
276 GPU_shader_uniform_4f((batch)->shader, name, x, y, z, w);
277#define GPU_batch_uniform_2fv(batch, name, val) GPU_shader_uniform_2fv((batch)->shader, name, val);
278#define GPU_batch_uniform_3fv(batch, name, val) GPU_shader_uniform_3fv((batch)->shader, name, val);
279#define GPU_batch_uniform_4fv(batch, name, val) GPU_shader_uniform_4fv((batch)->shader, name, val);
280#define GPU_batch_uniform_2fv_array(batch, name, len, val) \
281 GPU_shader_uniform_2fv_array((batch)->shader, name, len, val);
282#define GPU_batch_uniform_4fv_array(batch, name, len, val) \
283 GPU_shader_uniform_4fv_array((batch)->shader, name, len, val);
284#define GPU_batch_uniform_mat4(batch, name, val) \
285 GPU_shader_uniform_mat4((batch)->shader, name, val);
286#define GPU_batch_uniformbuf_bind(batch, name, ubo) \
287 GPU_uniformbuf_bind(ubo, GPU_shader_get_ubo_binding((batch)->shader, name));
288#define GPU_batch_texture_bind(batch, name, tex) \
289 GPU_texture_bind(tex, GPU_shader_get_sampler_binding((batch)->shader, name));
295 blender::gpu::Batch *
batch,
398 int *r_instance_count);
407 int output_primitive_cout);
#define BLI_STATIC_ASSERT(a, msg)
#define ENUM_OPERATORS(_type, _max)
void GPU_batch_elembuf_set(blender::gpu::Batch *batch, blender::gpu::IndexBuf *index_buf, bool own_ibo)
static constexpr int GPU_BATCH_VBO_MAX_LEN
void GPU_batch_multi_draw_indirect(blender::gpu::Batch *batch, blender::gpu::StorageBuf *indirect_buf, int count, intptr_t offset, intptr_t stride)
blender::gpu::Batch * GPU_batch_procedural_triangle_strips_get()
void GPU_batch_discard(blender::gpu::Batch *batch)
void GPU_batch_zero(blender::gpu::Batch *batch)
void GPU_batch_program_set_builtin_with_config(blender::gpu::Batch *batch, GPUBuiltinShader shader_id, GPUShaderConfig sh_cfg)
blender::gpu::Batch * GPU_batch_procedural_lines_get()
void GPU_batch_draw_advanced(blender::gpu::Batch *batch, int vertex_first, int vertex_count, int instance_first, int instance_count)
blender::IndexRange GPU_batch_draw_expanded_parameter_get(GPUPrimType input_prim_type, GPUPrimType output_prim_type, int vertex_count, int vertex_first, int output_primitive_cout)
void GPU_batch_draw_instance_range(blender::gpu::Batch *batch, int instance_first, int instance_count)
static constexpr int GPU_BATCH_VAO_STATIC_LEN
static constexpr int GPU_BATCH_VAO_DYN_ALLOC_COUNT
blender::gpu::Batch * GPU_batch_procedural_points_get()
void GPU_batch_init_ex(blender::gpu::Batch *batch, GPUPrimType primitive_type, blender::gpu::VertBuf *vertex_buf, blender::gpu::IndexBuf *index_buf, GPUBatchFlag owns_flag)
void GPU_batch_program_set_imm_shader(blender::gpu::Batch *batch)
void GPU_batch_program_set_builtin(blender::gpu::Batch *batch, GPUBuiltinShader shader_id)
void GPU_batch_clear(blender::gpu::Batch *batch)
int GPU_batch_vertbuf_add(blender::gpu::Batch *batch, blender::gpu::VertBuf *vertex_buf, bool own_vbo)
blender::gpu::Batch * GPU_batch_procedural_triangles_get()
blender::gpu::Batch * GPU_batch_create_ex(GPUPrimType primitive_type, blender::gpu::VertBuf *vertex_buf, blender::gpu::IndexBuf *index_buf, GPUBatchFlag owns_flag)
void GPU_batch_draw_indirect(blender::gpu::Batch *batch, blender::gpu::StorageBuf *indirect_buf, intptr_t offset)
void GPU_batch_draw(blender::gpu::Batch *batch)
void GPU_batch_copy(blender::gpu::Batch *batch_dst, blender::gpu::Batch *batch_src)
blender::gpu::Batch * GPU_batch_create_procedural(GPUPrimType primitive_type, int32_t vertex_count)
void GPU_batch_draw_range(blender::gpu::Batch *batch, int vertex_first, int vertex_count)
bool GPU_batch_vertbuf_has(const blender::gpu::Batch *batch, const blender::gpu::VertBuf *vertex_buf)
void GPU_batch_bind_as_resources(blender::gpu::Batch *batch, blender::gpu::Shader *shader, const blender::gpu::shader::SpecializationConstants *constants=nullptr)
void GPU_batch_draw_parameter_get(blender::gpu::Batch *batch, int *r_vertex_count, int *r_vertex_first, int *r_base_index, int *r_instance_count)
void GPU_batch_set_shader(blender::gpu::Batch *batch, blender::gpu::Shader *shader, const blender::gpu::shader::SpecializationConstants *constants_state=nullptr)
Batch * GPU_batch_calloc()
struct @021025263243242147216143265077100330027142264337::@225245033123204053237120173316075113304004012000 batch