cogl: Store CPU and GPU rendering timestamps in frame info
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1762>
This commit is contained in:
parent
8c258d1de1
commit
f1024564a2
@ -126,7 +126,8 @@ cogl_frame_info_get_rendering_duration_ns (CoglFrameInfo *info)
|
||||
{
|
||||
int64_t gpu_time_rendering_done_ns;
|
||||
|
||||
if (!info->timestamp_query)
|
||||
if (!info->timestamp_query ||
|
||||
info->gpu_time_before_buffer_swap_ns == 0)
|
||||
return 0;
|
||||
|
||||
gpu_time_rendering_done_ns =
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "winsys/cogl-onscreen-egl.h"
|
||||
|
||||
#include "cogl-context-private.h"
|
||||
#include "cogl-frame-info-private.h"
|
||||
#include "cogl-renderer-private.h"
|
||||
#include "cogl-trace.h"
|
||||
#include "winsys/cogl-winsys-egl-private.h"
|
||||
@ -269,6 +270,21 @@ cogl_onscreen_egl_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
COGL_FRAMEBUFFER (onscreen),
|
||||
COGL_FRAMEBUFFER_STATE_BIND);
|
||||
|
||||
if (cogl_has_feature (context, COGL_FEATURE_ID_GET_GPU_TIME))
|
||||
{
|
||||
info->gpu_time_before_buffer_swap_ns =
|
||||
cogl_context_get_gpu_time_ns (context);
|
||||
}
|
||||
|
||||
info->cpu_time_before_buffer_swap_us = g_get_monotonic_time ();
|
||||
|
||||
/* Set up a timestamp query for when all rendering will be finished. */
|
||||
if (cogl_has_feature (context, COGL_FEATURE_ID_TIMESTAMP_QUERY))
|
||||
{
|
||||
info->timestamp_query =
|
||||
cogl_framebuffer_create_timestamp_query (COGL_FRAMEBUFFER (onscreen));
|
||||
}
|
||||
|
||||
if (n_rectangles && egl_renderer->pf_eglSwapBuffersWithDamage)
|
||||
{
|
||||
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
|
||||
|
Loading…
Reference in New Issue
Block a user