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:
parent
8699482475
commit
238e41d493
20 changed files with 75 additions and 69 deletions
|
@ -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"
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue