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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user