mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-06 09:08:33 +02:00
renderer-gl: Add Perfetto debug annotations for shader configs
This adds Perfetto debug annotations for printing optimizations, color vision deficiencies, alpha. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
This commit is contained in:
parent
b43cc0a5d4
commit
f4ba4f49bb
3 changed files with 33 additions and 8 deletions
|
|
@ -765,7 +765,7 @@ void
|
|||
gl_renderer_garbage_collect_programs(struct gl_renderer *gr);
|
||||
|
||||
bool
|
||||
gl_renderer_use_program(struct gl_renderer *gr,
|
||||
gl_renderer_use_program(struct gl_renderer *gr, struct weston_paint_node *pnode,
|
||||
const struct gl_shader_config *sconf);
|
||||
|
||||
struct weston_log_scope *
|
||||
|
|
|
|||
|
|
@ -2414,7 +2414,7 @@ draw_mesh(struct gl_renderer *gr,
|
|||
set_debug_mode(gr, sconf, barycentrics, opaque);
|
||||
|
||||
gl_log_paint_node(gr, "\t\tdrawing paint node mesh\n");
|
||||
if (!gl_renderer_use_program(gr, sconf))
|
||||
if (!gl_renderer_use_program(gr, pnode, sconf))
|
||||
gl_renderer_send_shader_error(pnode); /* Use fallback shader. */
|
||||
|
||||
glVertexAttribPointer(SHADER_ATTRIB_LOC_POSITION, 2, GL_FLOAT, GL_FALSE,
|
||||
|
|
@ -2954,7 +2954,7 @@ draw_output_border_texture(struct gl_renderer *gr,
|
|||
sconf->input_num = 1;
|
||||
|
||||
gl_log_paint_node(gr, "\t\tdrawing output border texture\n");
|
||||
gl_renderer_use_program(gr, sconf);
|
||||
gl_renderer_use_program(gr, NULL, sconf);
|
||||
|
||||
GLfloat texcoord[] = {
|
||||
0.0f, 0.0f,
|
||||
|
|
@ -3075,7 +3075,7 @@ blit_shadow_to_output(struct weston_output *output,
|
|||
pixman_region32_init(&translated_damage);
|
||||
|
||||
gl_log_paint_node(gr, "\t\tdrawing shadow output\n");
|
||||
gl_renderer_use_program(gr, &sconf);
|
||||
gl_renderer_use_program(gr, NULL, &sconf);
|
||||
set_blend_state(gr, NULL, false);
|
||||
|
||||
/* output_damage is in global coordinates */
|
||||
|
|
@ -4566,7 +4566,7 @@ gl_renderer_surface_copy_content(struct weston_surface *surface,
|
|||
WESTON_MATRIX_TRANSFORM_TRANSLATE;
|
||||
|
||||
gl_log_paint_node(gr, "\t\tcopying surface\n");
|
||||
if (!gl_renderer_use_program(gr, &sconf))
|
||||
if (!gl_renderer_use_program(gr, NULL, &sconf))
|
||||
goto use_program_error;
|
||||
|
||||
glEnableVertexAttribArray(SHADER_ATTRIB_LOC_POSITION);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
#include "shared/helpers.h"
|
||||
#include "shared/timespec-util.h"
|
||||
#include "shared/weston-assert.h"
|
||||
#include "weston-trace.h"
|
||||
|
||||
/* static const char vertex_shader[]; vertex.glsl */
|
||||
#include "vertex-shader.h"
|
||||
|
|
@ -843,7 +844,7 @@ gl_shader_texture_variant_get_target(enum gl_shader_texture_variant v)
|
|||
}
|
||||
|
||||
static void
|
||||
gl_shader_load_config(struct gl_renderer *gr,
|
||||
gl_shader_load_config(struct gl_renderer *gr, struct weston_paint_node *pnode,
|
||||
struct gl_shader *shader,
|
||||
const struct gl_shader_config *sconf)
|
||||
{
|
||||
|
|
@ -853,6 +854,11 @@ gl_shader_load_config(struct gl_renderer *gr,
|
|||
float swizzle_sub[4];
|
||||
int i, j;
|
||||
|
||||
WESTON_TRACE_BEGIN_ANNOTATION();
|
||||
if (pnode) {
|
||||
WESTON_TRACE_ANNOTATE_ADD_STR("paint node", pnode->internal_name);
|
||||
}
|
||||
|
||||
glUniformMatrix4fv(shader->proj_uniform,
|
||||
1, GL_FALSE, sconf->projection.M.colmaj);
|
||||
|
||||
|
|
@ -865,6 +871,10 @@ gl_shader_load_config(struct gl_renderer *gr,
|
|||
"\t\tcolor: r: %.2f, g: %.2f, b: %.2f, a: %.2f\n",
|
||||
sconf->unicolor[0], sconf->unicolor[1],
|
||||
sconf->unicolor[2], sconf->unicolor[3]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("color r", sconf->unicolor[0]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("color g", sconf->unicolor[1]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("color b", sconf->unicolor[2]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("color a", sconf->unicolor[3]);
|
||||
glUniform4fv(shader->color_uniform, 1, sconf->unicolor);
|
||||
}
|
||||
if (shader->tint_uniform != -1) {
|
||||
|
|
@ -872,10 +882,15 @@ gl_shader_load_config(struct gl_renderer *gr,
|
|||
"\t\ttint: r: %.2f, g: %.2f, b: %.2f, a: %.2f\n",
|
||||
sconf->tint[0], sconf->tint[1],
|
||||
sconf->tint[2], sconf->tint[3]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("tint r", sconf->tint[0]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("tint g", sconf->tint[1]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("tint b", sconf->tint[2]);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("tint a", sconf->tint[3]);
|
||||
glUniform4fv(shader->tint_uniform, 1, sconf->tint);
|
||||
}
|
||||
|
||||
weston_log_scope_printf(gr->paint_node_scope, "\t\talpha: %.2f\n", sconf->view_alpha);
|
||||
WESTON_TRACE_ANNOTATE_ADD_FLOAT("alpha", sconf->view_alpha);
|
||||
glUniform1f(shader->view_alpha_uniform, sconf->view_alpha);
|
||||
|
||||
assert(sconf->input_num <= SHADER_INPUT_TEX_MAX);
|
||||
|
|
@ -920,9 +935,11 @@ gl_shader_load_config(struct gl_renderer *gr,
|
|||
break;
|
||||
case SHADER_COLOR_EFFECT_INVERSION:
|
||||
weston_log_scope_printf(gr->paint_node_scope, "\t\tcolor effect: inversion\n");
|
||||
WESTON_TRACE_ANNOTATE_ADD_STR("color effect", "inversion");
|
||||
break;
|
||||
case SHADER_COLOR_EFFECT_GRAYSCALE:
|
||||
weston_log_scope_printf(gr->paint_node_scope, "\t\tcolor effect: grayscale\n");
|
||||
WESTON_TRACE_ANNOTATE_ADD_STR("color effect", "greyscale");
|
||||
break;
|
||||
case SHADER_COLOR_EFFECT_CVD_CORRECTION:
|
||||
weston_assert_int_ne(gr->compositor, shader->cvd_correction_uniform, -1);
|
||||
|
|
@ -931,6 +948,8 @@ gl_shader_load_config(struct gl_renderer *gr,
|
|||
glUniformMatrix3fv(shader->cvd_correction_uniform,
|
||||
1, GL_FALSE,
|
||||
sconf->color_effect.cvd.correction.colmaj);
|
||||
WESTON_TRACE_ANNOTATE_ADD_STR("color effect",
|
||||
weston_output_cvd_type_to_str(sconf->color_effect.cvd));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -958,11 +977,17 @@ gl_shader_load_config(struct gl_renderer *gr,
|
|||
TEX_UNIT_FB_STORE_CURVE);
|
||||
}
|
||||
|
||||
if (pnode) {
|
||||
WESTON_TRACE_COMMIT_ANNOTATION(&pnode->flow_id);
|
||||
} else {
|
||||
WESTON_TRACE_COMMIT_ANNOTATION(NULL);
|
||||
}
|
||||
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
}
|
||||
|
||||
bool
|
||||
gl_renderer_use_program(struct gl_renderer *gr,
|
||||
gl_renderer_use_program(struct gl_renderer *gr, struct weston_paint_node *pnode,
|
||||
const struct gl_shader_config *sconf)
|
||||
{
|
||||
static const GLfloat fallback_shader_color[4] = { 0.2, 0.1, 0.0, 1.0 };
|
||||
|
|
@ -1004,7 +1029,7 @@ gl_renderer_use_program(struct gl_renderer *gr,
|
|||
|
||||
weston_log_scope_printf(gr->paint_node_scope,
|
||||
"\t\t\tshader id: %d\n", gr->current_shader->program);
|
||||
gl_shader_load_config(gr, shader, sconf);
|
||||
gl_shader_load_config(gr, pnode, shader, sconf);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue