summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-04-09 00:52:18 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-04-09 00:52:18 -0400
commitbfe4aea981b225ad5e4f4daf5902b6a4e30e90fc (patch)
tree2dd6d4ec8cb04a732042c5cf236fc714ede49c60
parent0caa28c1dee734fc42411f61d96171d2621b9062 (diff)
downloadgtk+-bfe4aea981b225ad5e4f4daf5902b6a4e30e90fc.tar.gz
ngl: Add a program change counterngl-coloring-underlines
Count how often we change programs during a frame.
-rw-r--r--gsk/ngl/gsknglcommandqueue.c5
-rw-r--r--gsk/ngl/gsknglcommandqueueprivate.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/gsk/ngl/gsknglcommandqueue.c b/gsk/ngl/gsknglcommandqueue.c
index 4ce1628e2f..ca84d04774 100644
--- a/gsk/ngl/gsknglcommandqueue.c
+++ b/gsk/ngl/gsknglcommandqueue.c
@@ -951,6 +951,7 @@ gsk_ngl_command_queue_execute (GskNglCommandQueue *self,
guint n_binds = 0;
guint n_fbos = 0;
guint n_uniforms = 0;
+ guint n_programs = 0;
guint vao_id;
guint vbo_id;
int textures[4];
@@ -1062,6 +1063,8 @@ gsk_ngl_command_queue_execute (GskNglCommandQueue *self,
{
program = batch->any.program;
glUseProgram (program);
+
+ n_programs++;
}
if (apply_framebuffer (&framebuffer, batch->draw.framebuffer))
@@ -1144,6 +1147,7 @@ gsk_ngl_command_queue_execute (GskNglCommandQueue *self,
gdk_profiler_set_int_counter (self->metrics.n_binds, n_binds);
gdk_profiler_set_int_counter (self->metrics.n_uniforms, n_uniforms);
gdk_profiler_set_int_counter (self->metrics.n_fbos, n_fbos);
+ gdk_profiler_set_int_counter (self->metrics.n_programs, n_programs);
gdk_profiler_set_int_counter (self->metrics.n_uploads, self->n_uploads);
gdk_profiler_set_int_counter (self->metrics.queue_depth, self->batches.len);
@@ -1415,6 +1419,7 @@ gsk_ngl_command_queue_set_profiler (GskNglCommandQueue *self,
self->metrics.n_fbos = gdk_profiler_define_int_counter ("fbos", "Number of framebuffers attached");
self->metrics.n_uniforms = gdk_profiler_define_int_counter ("uniforms", "Number of uniforms changed");
self->metrics.n_uploads = gdk_profiler_define_int_counter ("uploads", "Number of texture uploads");
+ self->metrics.n_programs = gdk_profiler_define_int_counter ("programs", "Number of program changes");
self->metrics.queue_depth = gdk_profiler_define_int_counter ("gl-queue-depth", "Depth of GL command batches");
}
#endif
diff --git a/gsk/ngl/gsknglcommandqueueprivate.h b/gsk/ngl/gsknglcommandqueueprivate.h
index bcd7c8312d..a05095dbf0 100644
--- a/gsk/ngl/gsknglcommandqueueprivate.h
+++ b/gsk/ngl/gsknglcommandqueueprivate.h
@@ -250,6 +250,7 @@ struct _GskNglCommandQueue
guint n_fbos;
guint n_uniforms;
guint n_uploads;
+ guint n_programs;
guint queue_depth;
} metrics;