mirror of
https://github.com/brl/mutter.git
synced 2024-11-30 03:50:47 -05:00
671a4dfb34
This patch basically restores the logic from 1.6. There we assumed that glXCopySubBuffer won't tear and thus only needs to be throttled to the framerate, while glBlitFramebuffer needs to always wait to avoid tearing. With Nvidia drivers specifically we have seen that glBlitFramebuffer is not synchronized. Eventually the plan is that Cogl will actually take into consideration the underlying driver/hw vendor and driver version and we may want to only mark glBlitFramebuffer un-synchronized on Nvidia. https://bugzilla.gnome.org/show_bug.cgi?id=659360 Reviewed-by: Robert Bragg <robert@linux.intel.com>
106 lines
3.9 KiB
C
106 lines
3.9 KiB
C
/*
|
|
* Cogl
|
|
*
|
|
* An object oriented GL/GLES Abstraction/Utility Layer
|
|
*
|
|
* Copyright (C) 2010 Intel Corporation.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <http://www.gnu.org/licenses/>.
|
|
*
|
|
*
|
|
*/
|
|
|
|
/* This can be included multiple times with different definitions for
|
|
* the COGL_WINSYS_FEATURE_* functions.
|
|
*/
|
|
|
|
/* Macro prototypes:
|
|
* COGL_WINSYS_FEATURE_BEGIN (name, namespaces, extension_names,
|
|
* implied_public_feature_flags,
|
|
* implied_private_feature_flags,
|
|
* implied_winsys_feature)
|
|
* COGL_WINSYS_FEATURE_FUNCTION (return_type, function_name,
|
|
* (arguments))
|
|
* ...
|
|
* COGL_WINSYS_FEATURE_END ()
|
|
*
|
|
* Note: You can list multiple namespace and extension names if the
|
|
* corresponding _FEATURE_FUNCTIONS have the same semantics accross
|
|
* the different extension variants.
|
|
*
|
|
* XXX: NB: Don't add a trailing semicolon when using these macros
|
|
*/
|
|
|
|
COGL_WINSYS_FEATURE_BEGIN (texture_from_pixmap,
|
|
"EXT\0",
|
|
"texture_from_pixmap\0",
|
|
0,
|
|
0,
|
|
COGL_WINSYS_FEATURE_TEXTURE_FROM_PIXMAP)
|
|
COGL_WINSYS_FEATURE_FUNCTION (void, glXBindTexImage,
|
|
(Display *display,
|
|
GLXDrawable drawable,
|
|
int buffer,
|
|
int *attribList))
|
|
COGL_WINSYS_FEATURE_FUNCTION (void, glXReleaseTexImage,
|
|
(Display *display,
|
|
GLXDrawable drawable,
|
|
int buffer))
|
|
COGL_WINSYS_FEATURE_END ()
|
|
|
|
COGL_WINSYS_FEATURE_BEGIN (video_sync,
|
|
"SGI\0",
|
|
"video_sync\0",
|
|
0,
|
|
0,
|
|
COGL_WINSYS_FEATURE_VBLANK_COUNTER)
|
|
COGL_WINSYS_FEATURE_FUNCTION (int, glXGetVideoSync,
|
|
(unsigned int *count))
|
|
COGL_WINSYS_FEATURE_FUNCTION (int, glXWaitVideoSync,
|
|
(int divisor,
|
|
int remainder,
|
|
unsigned int *count))
|
|
COGL_WINSYS_FEATURE_END ()
|
|
|
|
COGL_WINSYS_FEATURE_BEGIN (swap_control,
|
|
"SGI\0",
|
|
"swap_control\0",
|
|
0,
|
|
0,
|
|
COGL_WINSYS_FEATURE_SWAP_THROTTLE)
|
|
COGL_WINSYS_FEATURE_FUNCTION (int, glXSwapInterval,
|
|
(int interval))
|
|
COGL_WINSYS_FEATURE_END ()
|
|
|
|
COGL_WINSYS_FEATURE_BEGIN (copy_sub_buffer,
|
|
"MESA\0",
|
|
"copy_sub_buffer\0",
|
|
0,
|
|
0,
|
|
COGL_WINSYS_FEATURE_SWAP_REGION_SYNCHRONIZED)
|
|
COGL_WINSYS_FEATURE_FUNCTION (void, glXCopySubBuffer,
|
|
(Display *dpy,
|
|
GLXDrawable drawable,
|
|
int x, int y, int width, int height))
|
|
COGL_WINSYS_FEATURE_END ()
|
|
|
|
COGL_WINSYS_FEATURE_BEGIN (swap_event,
|
|
"INTEL\0",
|
|
"swap_event\0",
|
|
0,
|
|
0,
|
|
COGL_WINSYS_FEATURE_SWAP_BUFFERS_EVENT)
|
|
COGL_WINSYS_FEATURE_END ()
|