GPUDebug: Add function to test if inside a debug group

This is a nice way to check certain GPU codepaths only for some
regions or callers paths.
This commit is contained in:
Clément Foucault 2020-09-16 01:36:32 +02:00
parent fafc1fbd7f
commit 8eda18f789
2 changed files with 22 additions and 1 deletions

View File

@ -25,6 +25,8 @@
#pragma once
#include "BLI_sys_types.h"
#ifdef __cplusplus
extern "C" {
#endif
@ -32,6 +34,7 @@ extern "C" {
void GPU_debug_group_begin(const char *name);
void GPU_debug_group_end(void);
void GPU_debug_get_groups_names(int name_buf_len, char *r_name_buf);
bool GPU_debug_group_match(const char *ref);
#ifdef __cplusplus
}

View File

@ -73,4 +73,22 @@ void GPU_debug_get_groups_names(int name_buf_len, char *r_name_buf)
sz += BLI_snprintf_rlen(r_name_buf + sz, name_buf_len - sz, "%s > ", name.data());
}
r_name_buf[sz - 2] = ':';
}
}
/* Return true if inside a debug group with the same name. */
bool GPU_debug_group_match(const char *ref)
{
/* Otherwise there will be no names. */
BLI_assert(G.debug & G_DEBUG_GPU);
Context *ctx = Context::get();
if (ctx == nullptr) {
return false;
}
DebugStack &stack = ctx->debug_stack;
for (StringRef &name : stack) {
if (STREQ(name.data(), ref)) {
return true;
}
}
return false;
}