diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-09-16 02:36:32 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-09-16 02:40:45 +0300 |
commit | 8eda18f789dc95a2b526df473ee16c75a4e87229 (patch) | |
tree | 8d41109e212c582139281dfe1f65dfe51c14e660 /source/blender/gpu | |
parent | fafc1fbd7fb36e284fbcbd8aa9060dd96c48d4e6 (diff) |
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.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/GPU_debug.h | 3 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_debug.cc | 20 |
2 files changed, 22 insertions, 1 deletions
diff --git a/source/blender/gpu/GPU_debug.h b/source/blender/gpu/GPU_debug.h index a219222b759..8e8d889b387 100644 --- a/source/blender/gpu/GPU_debug.h +++ b/source/blender/gpu/GPU_debug.h @@ -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 } diff --git a/source/blender/gpu/intern/gpu_debug.cc b/source/blender/gpu/intern/gpu_debug.cc index d4b55d7e758..a0608f52c4a 100644 --- a/source/blender/gpu/intern/gpu_debug.cc +++ b/source/blender/gpu/intern/gpu_debug.cc @@ -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] = ':'; -}
\ No newline at end of file +} + +/* 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; +} |