nCine::RHI::GXM::GxmDebug class

Debug-output and object-labelling facade of the sceGxm backend.

The render pipeline's debug groups map onto sceGxm's own user markers, which the Razor GPU capture tools and Vita3K's command tracing both display, so a capture is annotated with the same pass names the OpenGL backend pushes through glPushDebugGroup. Object labels have no sceGxm counterpart (its resources are plain structures in user memory, not driver-side named objects) and are dropped.

The markers are only emitted between GxmDevice::CreateSwapchain() and its teardown, because sceGxmPushUserMarker() needs the context; before that they are silently dropped.

Public types

class ScopedGroup
RAII scope for a debug message group (a sceGxmPushUserMarker() / sceGxmPopUserMarker() pair).
enum class LabelTypes { Buffer, Shader, Program, VertexArray, Query, ProgramPipeline, TransformFeedback, Sampler, Texture, RenderBuffer, FrameBuffer }
Object types that can be labelled (values are irrelevant for the sceGxm backend).

Public static functions

static void Init(const IRhiCapabilities& caps)
static void Reset()
static auto IsAvailable() -> bool
static void PushGroup(StringView message)
Opens a user marker on the sceGxm context.
static void PopGroup()
Closes the innermost user marker.
static void MessageInsert(StringView message)
Inserts a standalone user marker.
static void SetObjectLabel(LabelTypes identifier, std::uint32_t name, StringView label)
static void GetObjectLabel(LabelTypes identifier, std::uint32_t name, std::int32_t bufSize, std::int32_t* length, char* label)
static auto GetMaxLabelLength() -> std::int32_t