1
0
Fork 0

cogl: Install cogl-trace.h and include from cogl.h

This is so that cogl-trace.h can start using things from cogl-macros.h,
and so that it doesn't leak cogl-config.h into the world, while exposing
it to e.g. gnome-shell so that it can make use of it as well. There is
no practical reason why we shouldn't just include cogl-trace.h via
cogl.h as we do with everything else.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1059
This commit is contained in:
Jonas Ådahl 2020-02-17 18:32:35 +01:00
parent 8699482475
commit 238e41d493
20 changed files with 75 additions and 69 deletions

View file

@ -29,10 +29,10 @@
* of #ClutterMasterClock. * of #ClutterMasterClock.
*/ */
#include <cogl/cogl-trace.h>
#include "clutter-build-config.h" #include "clutter-build-config.h"
#include <cogl/cogl.h>
#include "clutter-master-clock.h" #include "clutter-master-clock.h"
#include "clutter-master-clock-default.h" #include "clutter-master-clock-default.h"
#include "clutter-debug.h" #include "clutter-debug.h"

View file

@ -78,7 +78,6 @@
#include "clutter-private.h" #include "clutter-private.h"
#include "cogl/cogl.h" #include "cogl/cogl.h"
#include "cogl/cogl-trace.h"
struct _ClutterStageQueueRedrawEntry struct _ClutterStageQueueRedrawEntry
{ {

View file

@ -47,8 +47,6 @@
#include "clutter-stage-private.h" #include "clutter-stage-private.h"
#include "clutter-stage-view-private.h" #include "clutter-stage-view-private.h"
#include "cogl/cogl-trace.h"
#define MAX_STACK_RECTS 256 #define MAX_STACK_RECTS 256
typedef struct _ClutterStageViewCoglPrivate typedef struct _ClutterStageViewCoglPrivate

View file

@ -46,3 +46,5 @@
#mesondefine COGL_HAS_X11_SUPPORT #mesondefine COGL_HAS_X11_SUPPORT
#mesondefine COGL_HAS_XLIB #mesondefine COGL_HAS_XLIB
#mesondefine COGL_HAS_XLIB_SUPPORT #mesondefine COGL_HAS_XLIB_SUPPORT
#mesondefine COGL_HAS_TRACING

View file

@ -23,6 +23,8 @@
#ifdef HAVE_TRACING #ifdef HAVE_TRACING
#include <sysprof-capture.h> #include <sysprof-capture.h>
#include <sysprof-capture-writer.h>
#include <sysprof-clock.h>
#include <syscall.h> #include <syscall.h>
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
@ -30,6 +32,18 @@
#define COGL_TRACE_OUTPUT_FILE "cogl-trace-sp-capture.syscap" #define COGL_TRACE_OUTPUT_FILE "cogl-trace-sp-capture.syscap"
#define BUFFER_LENGTH (4096 * 4) #define BUFFER_LENGTH (4096 * 4)
struct _CoglTraceContext
{
SysprofCaptureWriter *writer;
};
typedef struct _CoglTraceThreadContext
{
int cpu_id;
GPid pid;
char *group;
} CoglTraceThreadContext;
typedef struct typedef struct
{ {
int fd; int fd;
@ -228,6 +242,37 @@ cogl_set_tracing_disabled_on_thread (GMainContext *main_context)
g_source_unref (source); g_source_unref (source);
} }
void
cogl_trace_end (CoglTraceHead *head)
{
SysprofTimeStamp end_time;
CoglTraceContext *trace_context;
CoglTraceThreadContext *trace_thread_context;
end_time = g_get_monotonic_time () * 1000;
trace_context = cogl_trace_context;
trace_thread_context = g_private_get (&cogl_trace_thread_data);
g_mutex_lock (&cogl_trace_mutex);
if (!sysprof_capture_writer_add_mark (trace_context->writer,
head->begin_time,
trace_thread_context->cpu_id,
trace_thread_context->pid,
(uint64_t) end_time - head->begin_time,
trace_thread_context->group,
head->name,
NULL))
{
/* XXX: g_main_context_get_thread_default() might be wrong, it probably
* needs to store the GMainContext in CoglTraceThreadContext when creating
* and use it here.
*/
if (errno == EPIPE)
cogl_set_tracing_disabled_on_thread (g_main_context_get_thread_default ());
}
g_mutex_unlock (&cogl_trace_mutex);
}
#else #else
#include <string.h> #include <string.h>

View file

@ -19,31 +19,20 @@
#ifndef COGL_TRACE_H #ifndef COGL_TRACE_H
#define COGL_TRACE_H #define COGL_TRACE_H
#include "cogl-config.h"
#ifdef HAVE_TRACING
#include <glib.h> #include <glib.h>
#include <sysprof-capture-writer.h>
#include <sysprof-clock.h>
#include <stdint.h> #include <stdint.h>
#include <errno.h> #include <errno.h>
typedef struct _CoglTraceContext #include "cogl/cogl-defines.h"
{ #include "cogl/cogl-macros.h"
SysprofCaptureWriter *writer;
} CoglTraceContext;
typedef struct _CoglTraceThreadContext #ifdef COGL_HAS_TRACING
{
int cpu_id; typedef struct _CoglTraceContext CoglTraceContext;
GPid pid;
char *group;
} CoglTraceThreadContext;
typedef struct _CoglTraceHead typedef struct _CoglTraceHead
{ {
SysprofTimeStamp begin_time; uint64_t begin_time;
const char *name; const char *name;
} CoglTraceHead; } CoglTraceHead;
@ -69,36 +58,8 @@ cogl_trace_begin (CoglTraceHead *head,
head->name = name; head->name = name;
} }
static inline void void
cogl_trace_end (CoglTraceHead *head) cogl_trace_end (CoglTraceHead *head);
{
SysprofTimeStamp end_time;
CoglTraceContext *trace_context;
CoglTraceThreadContext *trace_thread_context;
end_time = g_get_monotonic_time () * 1000;
trace_context = cogl_trace_context;
trace_thread_context = g_private_get (&cogl_trace_thread_data);
g_mutex_lock (&cogl_trace_mutex);
if (!sysprof_capture_writer_add_mark (trace_context->writer,
head->begin_time,
trace_thread_context->cpu_id,
trace_thread_context->pid,
(uint64_t) end_time - head->begin_time,
trace_thread_context->group,
head->name,
NULL))
{
/* XXX: g_main_context_get_thread_default() might be wrong, it probably
* needs to store the GMainContext in CoglTraceThreadContext when creating
* and use it here.
*/
if (errno == EPIPE)
cogl_set_tracing_disabled_on_thread (g_main_context_get_thread_default ());
}
g_mutex_unlock (&cogl_trace_mutex);
}
static inline void static inline void
cogl_auto_trace_end_helper (CoglTraceHead **head) cogl_auto_trace_end_helper (CoglTraceHead **head)
@ -126,7 +87,7 @@ cogl_auto_trace_end_helper (CoglTraceHead **head)
ScopedCoglTrace##Name = &CoglTrace##Name; \ ScopedCoglTrace##Name = &CoglTrace##Name; \
} }
#else /* HAVE_TRACING */ #else /* COGL_HAS_TRACING */
#include <stdio.h> #include <stdio.h>
@ -142,6 +103,6 @@ void cogl_set_tracing_enabled_on_thread (void *data,
const char *filename); const char *filename);
void cogl_set_tracing_disabled_on_thread (void *data); void cogl_set_tracing_disabled_on_thread (void *data);
#endif /* HAVE_TRACING */ #endif /* COGL_HAS_TRACING */
#endif /* COGL_TRACE_H */ #endif /* COGL_TRACE_H */

View file

@ -121,6 +121,7 @@
#include <cogl/cogl-poll.h> #include <cogl/cogl-poll.h>
#include <cogl/cogl-fence.h> #include <cogl/cogl-fence.h>
#include <cogl/cogl-glib-source.h> #include <cogl/cogl-glib-source.h>
#include <cogl/cogl-trace.h>
/* XXX: This will definitly go away once all the Clutter winsys /* XXX: This will definitly go away once all the Clutter winsys
* code has been migrated down into Cogl! */ * code has been migrated down into Cogl! */
#include <cogl/deprecated/cogl-clutter.h> #include <cogl/deprecated/cogl-clutter.h>

View file

@ -12,6 +12,7 @@ cdata.set('COGL_HAS_X11', have_x11)
cdata.set('COGL_HAS_X11_SUPPORT', have_x11) cdata.set('COGL_HAS_X11_SUPPORT', have_x11)
cdata.set('COGL_HAS_XLIB', have_x11) cdata.set('COGL_HAS_XLIB', have_x11)
cdata.set('COGL_HAS_XLIB_SUPPORT', have_x11) cdata.set('COGL_HAS_XLIB_SUPPORT', have_x11)
cdata.set('COGL_HAS_TRACING', have_profiler)
cogl_defines_h = configure_file( cogl_defines_h = configure_file(
input: 'cogl-defines.h.meson', input: 'cogl-defines.h.meson',
@ -89,6 +90,7 @@ cogl_headers = [
'cogl-texture-2d.h', 'cogl-texture-2d.h',
'cogl-texture-2d-sliced.h', 'cogl-texture-2d-sliced.h',
'cogl-types.h', 'cogl-types.h',
'cogl-trace.h',
'cogl.h', 'cogl.h',
] ]
@ -288,7 +290,6 @@ cogl_sources = [
'cogl-blend-string.h', 'cogl-blend-string.h',
'cogl-debug.c', 'cogl-debug.c',
'cogl-trace.c', 'cogl-trace.c',
'cogl-trace.h',
'cogl-sub-texture-private.h', 'cogl-sub-texture-private.h',
'cogl-texture-private.h', 'cogl-texture-private.h',
'cogl-texture-2d-private.h', 'cogl-texture-2d-private.h',

View file

@ -25,7 +25,7 @@
#include <glib/gi18n.h> #include <glib/gi18n.h>
#include <gio/gunixfdlist.h> #include <gio/gunixfdlist.h>
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#define META_SYSPROF_PROFILER_DBUS_PATH "/org/gnome/Sysprof3/Profiler" #define META_SYSPROF_PROFILER_DBUS_PATH "/org/gnome/Sysprof3/Profiler"

View file

@ -59,7 +59,7 @@
#include "backends/native/meta-renderer-native.h" #include "backends/native/meta-renderer-native.h"
#include "backends/native/meta-seat-native.h" #include "backends/native/meta-seat-native.h"
#include "backends/native/meta-stage-native.h" #include "backends/native/meta-stage-native.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "core/meta-border.h" #include "core/meta-border.h"
#include "meta/main.h" #include "meta/main.h"

View file

@ -27,7 +27,7 @@
#include "backends/native/meta-kms-impl-simple.h" #include "backends/native/meta-kms-impl-simple.h"
#include "backends/native/meta-kms-update-private.h" #include "backends/native/meta-kms-update-private.h"
#include "backends/native/meta-udev.h" #include "backends/native/meta-udev.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
/** /**
* SECTION:kms * SECTION:kms

View file

@ -69,9 +69,8 @@
#include "backends/native/meta-output-kms.h" #include "backends/native/meta-output-kms.h"
#include "backends/native/meta-renderer-native-gles3.h" #include "backends/native/meta-renderer-native-gles3.h"
#include "backends/native/meta-renderer-native.h" #include "backends/native/meta-renderer-native.h"
//#include "cogl/cogl-framebuffer.h"
#include "cogl/cogl.h" #include "cogl/cogl.h"
#include "cogl/cogl-framebuffer.h"
#include "cogl/cogl-trace.h"
#include "core/boxes-private.h" #include "core/boxes-private.h"
#ifndef EGL_DRM_MASTER_FD_EXT #ifndef EGL_DRM_MASTER_FD_EXT

View file

@ -61,7 +61,7 @@
#include "backends/x11/meta-event-x11.h" #include "backends/x11/meta-event-x11.h"
#include "backends/x11/meta-stage-x11.h" #include "backends/x11/meta-stage-x11.h"
#include "clutter/clutter-mutter.h" #include "clutter/clutter-mutter.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "compositor/meta-window-actor-x11.h" #include "compositor/meta-window-actor-x11.h"
#include "compositor/meta-window-actor-wayland.h" #include "compositor/meta-window-actor-wayland.h"
#include "compositor/meta-window-actor-private.h" #include "compositor/meta-window-actor-private.h"

View file

@ -54,7 +54,7 @@
#include "clutter/x11/clutter-x11.h" #include "clutter/x11/clutter-x11.h"
#include "compositor/compositor-private.h" #include "compositor/compositor-private.h"
#include "compositor/meta-compositor-x11.h" #include "compositor/meta-compositor-x11.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "core/bell.h" #include "core/bell.h"
#include "core/boxes-private.h" #include "core/boxes-private.h"
#include "core/display-private.h" #include "core/display-private.h"

View file

@ -30,7 +30,7 @@
#include "core/stack.h" #include "core/stack.h"
#include "backends/meta-logical-monitor.h" #include "backends/meta-logical-monitor.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "core/frame.h" #include "core/frame.h"
#include "core/main-private.h" #include "core/main-private.h"
#include "core/meta-workspace-manager-private.h" #include "core/meta-workspace-manager-private.h"

View file

@ -39,7 +39,7 @@
#include <X11/Xutil.h> /* Just for the definition of the various gravities */ #include <X11/Xutil.h> /* Just for the definition of the various gravities */
#include "clutter/clutter.h" #include "clutter/clutter.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "meta/common.h" #include "meta/common.h"
#include "meta/main.h" #include "meta/main.h"
@ -769,7 +769,7 @@ destroy_later (MetaLater *later)
unref_later (later); unref_later (later);
} }
#ifdef HAVE_TRACING #ifdef COGL_HAS_TRACING
static const char * static const char *
later_type_to_string (MetaLaterType when) later_type_to_string (MetaLaterType when)
{ {

View file

@ -67,7 +67,7 @@
#include "backends/meta-backend-private.h" #include "backends/meta-backend-private.h"
#include "backends/meta-logical-monitor.h" #include "backends/meta-logical-monitor.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "core/boxes-private.h" #include "core/boxes-private.h"
#include "core/constraints.h" #include "core/constraints.h"
#include "core/edge-resistance.h" #include "core/edge-resistance.h"

View file

@ -40,7 +40,7 @@
#include "backends/meta-backend-private.h" #include "backends/meta-backend-private.h"
#include "backends/meta-logical-monitor.h" #include "backends/meta-logical-monitor.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "core/boxes-private.h" #include "core/boxes-private.h"
#include "core/meta-workspace-manager-private.h" #include "core/meta-workspace-manager-private.h"
#include "core/workspace-private.h" #include "core/workspace-private.h"

View file

@ -30,8 +30,8 @@
#include "backends/meta-cursor-tracker-private.h" #include "backends/meta-cursor-tracker-private.h"
#include "clutter/clutter.h" #include "clutter/clutter.h"
#include "clutter/wayland/clutter-wayland-compositor.h" #include "clutter/wayland/clutter-wayland-compositor.h"
#include "cogl/cogl-trace.h"
#include "cogl/cogl-wayland-server.h" #include "cogl/cogl-wayland-server.h"
#include "cogl/cogl.h"
#include "compositor/meta-surface-actor-wayland.h" #include "compositor/meta-surface-actor-wayland.h"
#include "compositor/meta-surface-actor.h" #include "compositor/meta-surface-actor.h"
#include "compositor/meta-window-actor-private.h" #include "compositor/meta-window-actor-private.h"

View file

@ -32,7 +32,7 @@
#include "backends/meta-cursor-tracker-private.h" #include "backends/meta-cursor-tracker-private.h"
#include "backends/x11/meta-backend-x11.h" #include "backends/x11/meta-backend-x11.h"
#include "compositor/meta-compositor-x11.h" #include "compositor/meta-compositor-x11.h"
#include "cogl/cogl-trace.h" #include "cogl/cogl.h"
#include "core/bell.h" #include "core/bell.h"
#include "core/display-private.h" #include "core/display-private.h"
#include "core/meta-workspace-manager-private.h" #include "core/meta-workspace-manager-private.h"