diff --git a/rpcs3/Emu/RSX/GL/GLProcTable.h b/rpcs3/Emu/RSX/GL/GLProcTable.h index 5278014b5c..ad8943bd4f 100644 --- a/rpcs3/Emu/RSX/GL/GLProcTable.h +++ b/rpcs3/Emu/RSX/GL/GLProcTable.h @@ -259,6 +259,7 @@ OPENGL_PROC(PFNGLDELETESYNCPROC, DeleteSync); // KHR_debug OPENGL_PROC(PFNGLDEBUGMESSAGECALLBACKPROC, DebugMessageCallback); +OPENGL_PROC(PFNGLOBJECTLABELPROC, ObjectLabel); // Immutable textures OPENGL_PROC(PFNGLTEXSTORAGE1DPROC, TexStorage1D); diff --git a/rpcs3/Emu/RSX/GL/glutils/common.h b/rpcs3/Emu/RSX/GL/glutils/common.h index f99c3590a6..a147a6e754 100644 --- a/rpcs3/Emu/RSX/GL/glutils/common.h +++ b/rpcs3/Emu/RSX/GL/glutils/common.h @@ -76,6 +76,26 @@ namespace gl } }; + template + struct named_object + { + protected: + GLuint m_id = GL_NONE; + std::string m_name = "Unnamed"; + + public: + void set_name(std::string_view name) + { + m_name = name.data(); + glObjectLabel(Ns, m_id, name.length(), name.data()); + } + + std::string_view name() const + { + return m_name; + } + }; + // Very useful util when capturing traces with RenderDoc static inline void push_debug_label(const char* label) {