Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-07-30 13:23:23 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-07-30 15:18:55 +0300
commitd65df10216b8de09b8a1cfc695030649511337a0 (patch)
tree9933a42e8db798f40078fc30e3ee7a2f076ba393 /source/blender/draw/intern/draw_manager_data.c
parent6a493e44302588c35a269ed34a3e679c7912074b (diff)
DRW: Add DRW_shgroup_is_empty and DRW_pass_is_empty
Diffstat (limited to 'source/blender/draw/intern/draw_manager_data.c')
-rw-r--r--source/blender/draw/intern/draw_manager_data.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c
index dccb869c133..407eea16d91 100644
--- a/source/blender/draw/intern/draw_manager_data.c
+++ b/source/blender/draw/intern/draw_manager_data.c
@@ -998,6 +998,23 @@ void DRW_shgroup_stencil_mask(DRWShadingGroup *shgroup, uint mask)
shgroup->stencil_mask = mask;
}
+bool DRW_shgroup_is_empty(DRWShadingGroup *shgroup)
+{
+ switch (shgroup->type) {
+ case DRW_SHG_NORMAL:
+ case DRW_SHG_FEEDBACK_TRANSFORM:
+ return shgroup->calls.first == NULL;
+ case DRW_SHG_POINT_BATCH:
+ case DRW_SHG_LINE_BATCH:
+ case DRW_SHG_TRIANGLE_BATCH:
+ case DRW_SHG_INSTANCE:
+ case DRW_SHG_INSTANCE_EXTERNAL:
+ return shgroup->instance_count == 0;
+ }
+ BLI_assert(!"Shading Group type not supported");
+ return true;
+}
+
/** \} */
/* -------------------------------------------------------------------- */
@@ -1019,6 +1036,16 @@ DRWPass *DRW_pass_create(const char *name, DRWState state)
return pass;
}
+bool DRW_pass_is_empty(DRWPass *pass)
+{
+ for (DRWShadingGroup *shgroup = pass->shgroups.first; shgroup; shgroup = shgroup->next) {
+ if (!DRW_shgroup_is_empty(shgroup)) {
+ return false;
+ }
+ }
+ return true;
+}
+
void DRW_pass_state_set(DRWPass *pass, DRWState state)
{
pass->state = state;