mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
cogl/frame-info: Add VSYNC flag
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1484>
This commit is contained in:
parent
93ef83a96c
commit
47183a94eb
@ -48,6 +48,14 @@ typedef enum _CoglFrameInfoFlag
|
|||||||
* fullscreen surface and a surface on a hardware overlay.
|
* fullscreen surface and a surface on a hardware overlay.
|
||||||
*/
|
*/
|
||||||
COGL_FRAME_INFO_FLAG_ZERO_COPY = 1 << 2,
|
COGL_FRAME_INFO_FLAG_ZERO_COPY = 1 << 2,
|
||||||
|
/*
|
||||||
|
* The presentation was synchronized to the "vertical retrace" by the display
|
||||||
|
* hardware such that tearing does not happen. Relying on user space
|
||||||
|
* scheduling is not acceptable for this flag. If presentation is done by a
|
||||||
|
* copy to the active frontbuffer, then it must guarantee that tearing cannot
|
||||||
|
* happen.
|
||||||
|
*/
|
||||||
|
COGL_FRAME_INFO_FLAG_VSYNC = 1 << 3,
|
||||||
} CoglFrameInfoFlag;
|
} CoglFrameInfoFlag;
|
||||||
|
|
||||||
struct _CoglFrameInfo
|
struct _CoglFrameInfo
|
||||||
|
@ -101,6 +101,12 @@ cogl_frame_info_is_zero_copy (CoglFrameInfo *info)
|
|||||||
return !!(info->flags & COGL_FRAME_INFO_FLAG_ZERO_COPY);
|
return !!(info->flags & COGL_FRAME_INFO_FLAG_ZERO_COPY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
cogl_frame_info_is_vsync (CoglFrameInfo *info)
|
||||||
|
{
|
||||||
|
return !!(info->flags & COGL_FRAME_INFO_FLAG_VSYNC);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
cogl_frame_info_get_sequence (CoglFrameInfo *info)
|
cogl_frame_info_get_sequence (CoglFrameInfo *info)
|
||||||
{
|
{
|
||||||
|
@ -144,6 +144,9 @@ gboolean cogl_frame_info_is_hw_clock (CoglFrameInfo *info);
|
|||||||
COGL_EXPORT
|
COGL_EXPORT
|
||||||
gboolean cogl_frame_info_is_zero_copy (CoglFrameInfo *info);
|
gboolean cogl_frame_info_is_zero_copy (CoglFrameInfo *info);
|
||||||
|
|
||||||
|
COGL_EXPORT
|
||||||
|
gboolean cogl_frame_info_is_vsync (CoglFrameInfo *info);
|
||||||
|
|
||||||
COGL_EXPORT
|
COGL_EXPORT
|
||||||
unsigned int cogl_frame_info_get_sequence (CoglFrameInfo *info);
|
unsigned int cogl_frame_info_get_sequence (CoglFrameInfo *info);
|
||||||
|
|
||||||
|
@ -472,6 +472,7 @@ _cogl_winsys_wait_for_vblank (CoglOnscreen *onscreen)
|
|||||||
if (glx_display->can_vblank_wait)
|
if (glx_display->can_vblank_wait)
|
||||||
{
|
{
|
||||||
CoglFrameInfo *info = cogl_onscreen_peek_tail_frame_info (onscreen);
|
CoglFrameInfo *info = cogl_onscreen_peek_tail_frame_info (onscreen);
|
||||||
|
info->flags |= COGL_FRAME_INFO_FLAG_VSYNC;
|
||||||
|
|
||||||
if (glx_renderer->glXWaitForMsc)
|
if (glx_renderer->glXWaitForMsc)
|
||||||
{
|
{
|
||||||
@ -987,6 +988,7 @@ cogl_onscreen_glx_notify_swap_buffers (CoglOnscreen *onscreen,
|
|||||||
set_sync_pending (onscreen);
|
set_sync_pending (onscreen);
|
||||||
|
|
||||||
info = cogl_onscreen_peek_head_frame_info (onscreen);
|
info = cogl_onscreen_peek_head_frame_info (onscreen);
|
||||||
|
info->flags |= COGL_FRAME_INFO_FLAG_VSYNC;
|
||||||
|
|
||||||
ust_is_monotonic = is_ust_monotonic (context->display->renderer,
|
ust_is_monotonic = is_ust_monotonic (context->display->renderer,
|
||||||
onscreen_glx->glxwin);
|
onscreen_glx->glxwin);
|
||||||
|
@ -265,7 +265,7 @@ page_flip_feedback_flipped (MetaKmsCrtc *kms_crtc,
|
|||||||
MetaCrtc *crtc;
|
MetaCrtc *crtc;
|
||||||
MetaGpuKms *gpu_kms;
|
MetaGpuKms *gpu_kms;
|
||||||
int64_t presentation_time_us;
|
int64_t presentation_time_us;
|
||||||
CoglFrameInfoFlag flags = COGL_FRAME_INFO_FLAG_NONE;
|
CoglFrameInfoFlag flags = COGL_FRAME_INFO_FLAG_VSYNC;
|
||||||
|
|
||||||
page_flip_time = (struct timeval) {
|
page_flip_time = (struct timeval) {
|
||||||
.tv_sec = tv_sec,
|
.tv_sec = tv_sec,
|
||||||
|
Loading…
Reference in New Issue
Block a user