summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2014-02-20 15:50:03 -0800
committerEric Anholt <eric@anholt.net>2014-03-10 14:27:57 -0700
commitfa2c50f6cfe1e04fef97877df2e6b1bdf1b8db1a (patch)
tree4085d2aa3262bd99b91aa93ed8c162bf5b213601
parent0ae29e8cf3cdf012f98e048f1d09ed1956761ac9 (diff)
glamor: Apply debug labels to our shaders.glamor-server
This will help tools like fips, apitrace, or INTEL_DEBUG=shader_time provide useful information about the shaders in use. Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--glamor/glamor.c1
-rw-r--r--glamor/glamor_core.c20
-rw-r--r--glamor/glamor_fill.c2
-rw-r--r--glamor/glamor_gradient.c4
-rw-r--r--glamor/glamor_priv.h4
-rw-r--r--glamor/glamor_render.c2
-rw-r--r--glamor/glamor_tile.c2
-rw-r--r--glamor/glamor_trapezoid.c2
-rw-r--r--glamor/glamor_xv.c2
9 files changed, 28 insertions, 11 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c
index f65638484..2d756e217 100644
--- a/glamor/glamor.c
+++ b/glamor/glamor.c
@@ -405,6 +405,7 @@ glamor_init(ScreenPtr screen, unsigned int flags)
}
}
+ glamor_priv->has_khr_debug = glamor_gl_has_extension("GL_KHR_debug");
glamor_priv->has_pack_invert =
glamor_gl_has_extension("GL_MESA_pack_invert");
glamor_priv->has_fbo_blit =
diff --git a/glamor/glamor_core.c b/glamor/glamor_core.c
index c0994c1d2..96723c0e8 100644
--- a/glamor/glamor_core.c
+++ b/glamor/glamor_core.c
@@ -82,9 +82,10 @@ glamor_compile_glsl_prog(GLenum type, const char *source)
}
void
-glamor_link_glsl_prog(GLint prog)
+glamor_link_glsl_prog(ScreenPtr screen, GLint prog, const char *format, ...)
{
GLint ok;
+ glamor_screen_private *glamor_priv = glamor_get_screen_private(screen);
glLinkProgram(prog);
glGetProgramiv(prog, GL_LINK_STATUS, &ok);
@@ -99,6 +100,17 @@ glamor_link_glsl_prog(GLint prog)
ErrorF("Failed to link: %s\n", info);
FatalError("GLSL link failure\n");
}
+
+ if (glamor_priv->has_khr_debug) {
+ char *label;
+ va_list va;
+
+ va_start(va, format);
+ XNFvasprintf(&label, format, va);
+ glObjectLabel(GL_PROGRAM, prog, -1, label);
+ free(label);
+ va_end(va);
+ }
}
Bool
@@ -255,13 +267,15 @@ glamor_init_finish_access_shaders(ScreenPtr screen)
GLAMOR_VERTEX_POS, "v_position");
glBindAttribLocation(glamor_priv->finish_access_prog[0],
GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(glamor_priv->finish_access_prog[0]);
+ glamor_link_glsl_prog(screen, glamor_priv->finish_access_prog[0],
+ "finish access 0");
glBindAttribLocation(glamor_priv->finish_access_prog[1],
GLAMOR_VERTEX_POS, "v_position");
glBindAttribLocation(glamor_priv->finish_access_prog[1],
GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(glamor_priv->finish_access_prog[1]);
+ glamor_link_glsl_prog(screen, glamor_priv->finish_access_prog[1],
+ "finish access 1");
glamor_priv->finish_access_revert[0] =
glGetUniformLocation(glamor_priv->finish_access_prog[0], "revert");
diff --git a/glamor/glamor_fill.c b/glamor/glamor_fill.c
index 8fe640ef8..a0c8d9957 100644
--- a/glamor/glamor_fill.c
+++ b/glamor/glamor_fill.c
@@ -165,7 +165,7 @@ glamor_init_solid_shader(ScreenPtr screen)
glBindAttribLocation(glamor_priv->solid_prog,
GLAMOR_VERTEX_POS, "v_position");
- glamor_link_glsl_prog(glamor_priv->solid_prog);
+ glamor_link_glsl_prog(screen, glamor_priv->solid_prog, "solid");
glamor_priv->solid_color_uniform_location =
glGetUniformLocation(glamor_priv->solid_prog, "color");
diff --git a/glamor/glamor_gradient.c b/glamor/glamor_gradient.c
index 6a7b528f9..baa4a03f0 100644
--- a/glamor/glamor_gradient.c
+++ b/glamor/glamor_gradient.c
@@ -377,7 +377,7 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count,
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
- glamor_link_glsl_prog(gradient_prog);
+ glamor_link_glsl_prog(screen, gradient_prog, "radial gradient");
glUseProgram(0);
@@ -590,7 +590,7 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count,
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position");
glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord");
- glamor_link_glsl_prog(gradient_prog);
+ glamor_link_glsl_prog(screen, gradient_prog, "linear gradient");
glUseProgram(0);
diff --git a/glamor/glamor_priv.h b/glamor/glamor_priv.h
index 69647fc68..9b4bb2d9d 100644
--- a/glamor/glamor_priv.h
+++ b/glamor/glamor_priv.h
@@ -214,6 +214,7 @@ typedef struct glamor_screen_private {
int has_pack_invert;
int has_fbo_blit;
int has_buffer_storage;
+ int has_khr_debug;
int max_fbo_size;
struct xorg_list
@@ -594,7 +595,8 @@ Bool glamor_stipple(PixmapPtr pixmap, PixmapPtr stipple,
unsigned long fg_pixel, unsigned long bg_pixel,
int stipple_x, int stipple_y);
GLint glamor_compile_glsl_prog(GLenum type, const char *source);
-void glamor_link_glsl_prog(GLint prog);
+void glamor_link_glsl_prog(ScreenPtr screen, GLint prog,
+ const char *format, ...) _X_ATTRIBUTE_PRINTF(3,4);
void glamor_get_color_4f_from_pixel(PixmapPtr pixmap,
unsigned long fg_pixel, GLfloat *color);
diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c
index 93d9ead24..121ae77e8 100644
--- a/glamor/glamor_render.c
+++ b/glamor/glamor_render.c
@@ -332,7 +332,7 @@ glamor_create_composite_shader(ScreenPtr screen, struct shader_key *key,
glBindAttribLocation(prog, GLAMOR_VERTEX_SOURCE, "v_texcoord0");
glBindAttribLocation(prog, GLAMOR_VERTEX_MASK, "v_texcoord1");
- glamor_link_glsl_prog(prog);
+ glamor_link_glsl_prog(screen, prog, "composite");
shader->prog = prog;
diff --git a/glamor/glamor_tile.c b/glamor/glamor_tile.c
index 7288af30e..ba7f11fc7 100644
--- a/glamor/glamor_tile.c
+++ b/glamor/glamor_tile.c
@@ -73,7 +73,7 @@ glamor_init_tile_shader(ScreenPtr screen)
GLAMOR_VERTEX_POS, "v_position");
glBindAttribLocation(glamor_priv->tile_prog,
GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(glamor_priv->tile_prog);
+ glamor_link_glsl_prog(screen, glamor_priv->tile_prog, "tile");
sampler_uniform_location =
glGetUniformLocation(glamor_priv->tile_prog, "sampler");
diff --git a/glamor/glamor_trapezoid.c b/glamor/glamor_trapezoid.c
index 0064f2a24..9c39740b6 100644
--- a/glamor/glamor_trapezoid.c
+++ b/glamor/glamor_trapezoid.c
@@ -1357,7 +1357,7 @@ glamor_init_trapezoid_shader(ScreenPtr screen)
glBindAttribLocation(glamor_priv->trapezoid_prog,
GLAMOR_VERTEX_RIGHT_PARAM, "v_right_param");
- glamor_link_glsl_prog(glamor_priv->trapezoid_prog);
+ glamor_link_glsl_prog(screen, glamor_priv->trapezoid_prog, "trapezoid");
glUseProgram(0);
diff --git a/glamor/glamor_xv.c b/glamor/glamor_xv.c
index 0c1d3cf58..0e2fd4294 100644
--- a/glamor/glamor_xv.c
+++ b/glamor/glamor_xv.c
@@ -109,7 +109,7 @@ glamor_init_xv_shader(ScreenPtr screen)
GLAMOR_VERTEX_POS, "v_position");
glBindAttribLocation(glamor_priv->xv_prog,
GLAMOR_VERTEX_SOURCE, "v_texcoord0");
- glamor_link_glsl_prog(glamor_priv->xv_prog);
+ glamor_link_glsl_prog(screen, glamor_priv->xv_prog, "xv");
glamor_put_context(glamor_priv);
}