Enable the glStringMarker logger when available
glStringMarker is usually only available when running under some kind of GL debugger, and can be used to insert strings into the GL command string. Writing logs using it can be useful, since it lets us correspond GL calls with what happens in compton. More info about the extension can be found here: https://www.khronos.org/registry/OpenGL/extensions/GREMEDY/GREMEDY_string_marker.txt Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
fed4634250
commit
c93789f5e9
|
@ -2953,6 +2953,14 @@ session_init(session_t *ps_old, int argc, char **argv) {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
if (bkend_use_glx(ps)) {
|
||||
auto glx_logger = glx_string_marker_logger_new();
|
||||
if (glx_logger) {
|
||||
log_info("Enabling gl string marker");
|
||||
log_add_target_tls(glx_logger);
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize software optimization
|
||||
if (ps->o.sw_opti)
|
||||
ps->o.sw_opti = swopti_init(ps);
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
#include <unistd.h>
|
||||
|
||||
#ifdef CONFIG_OPENGL
|
||||
#include <GL/glx.h>
|
||||
#include <opengl.h>
|
||||
#endif
|
||||
|
||||
#include "compiler.h"
|
||||
|
@ -326,6 +326,10 @@ static const struct log_ops glx_string_marker_logger_ops = {
|
|||
};
|
||||
|
||||
struct log_target *glx_string_marker_logger_new(void) {
|
||||
if (!glx_hasglext("GL_GREMEDY_string_marker")) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void *fnptr = glXGetProcAddress((GLubyte *)"glStringMarkerGREMEDY");
|
||||
if (!fnptr)
|
||||
return NULL;
|
||||
|
|
|
@ -347,7 +347,7 @@ glx_init(session_t *ps, bool need_render) {
|
|||
// Check GL_ARB_texture_non_power_of_two, requires a GLX context and
|
||||
// must precede FBConfig fetching
|
||||
if (need_render)
|
||||
psglx->has_texture_non_power_of_two = glx_hasglext(ps,
|
||||
psglx->has_texture_non_power_of_two = glx_hasglext(
|
||||
"GL_ARB_texture_non_power_of_two");
|
||||
|
||||
// Acquire function addresses
|
||||
|
|
|
@ -119,7 +119,7 @@ glx_hasglxext(session_t *ps, const char *ext) {
|
|||
* Check if a GLX extension exists.
|
||||
*/
|
||||
static inline bool
|
||||
glx_hasglext(session_t *ps, const char *ext) {
|
||||
glx_hasglext(const char *ext) {
|
||||
const char *gl_exts = (const char *) glGetString(GL_EXTENSIONS);
|
||||
if (!gl_exts) {
|
||||
log_error("Failed get GL extension list.");
|
||||
|
|
Loading…
Reference in New Issue