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:
parent
fafc1fbd7f
commit
8eda18f789
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue