2022-02-11 09:07:11 +11:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
|
* Copyright 2020 Blender Foundation. All rights reserved. */
|
2020-08-08 15:24:52 +02:00
|
|
|
|
|
|
|
|
/** \file
|
|
|
|
|
* \ingroup gpu
|
|
|
|
|
*
|
|
|
|
|
* GPUDrawList is an API to do lots of similar draw-calls very fast using
|
|
|
|
|
* multi-draw-indirect. There is a fallback if the feature is not supported.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
struct GPUBatch;
|
|
|
|
|
|
2020-09-08 03:34:47 +02:00
|
|
|
/** Opaque type hiding blender::gpu::DrawList. */
|
|
|
|
|
typedef struct GPUDrawList GPUDrawList;
|
2020-08-08 15:24:52 +02:00
|
|
|
|
|
|
|
|
/* Create a list with at least length drawcalls. Length can affect performance. */
|
2020-09-08 03:34:47 +02:00
|
|
|
GPUDrawList *GPU_draw_list_create(int length);
|
|
|
|
|
void GPU_draw_list_discard(GPUDrawList *list);
|
2020-08-08 15:24:52 +02:00
|
|
|
|
2020-09-08 03:34:47 +02:00
|
|
|
void GPU_draw_list_append(GPUDrawList *list, GPUBatch *batch, int i_first, int i_count);
|
|
|
|
|
void GPU_draw_list_submit(GPUDrawList *list);
|
2020-08-08 15:24:52 +02:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|