109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulName 209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul MESA_swap_control 409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulName Strings 609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul GLX_MESA_swap_control 809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulContact 1009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 11c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul Ian Romanick, IBM, idr at us.ibm.com 1209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 1309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulStatus 1409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 1509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul Deployed in DRI drivers post-XFree86 4.3. 1609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 1709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulVersion 1809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 19c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul Date: 5/1/2003 Revision: 1.1 2009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 2109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulNumber 2209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 2309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul ??? 2409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 2509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulDependencies 2609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 2709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 2809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 2909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul Based on GLX_SGI_swap_control version 1.9 and WGL_EXT_swap_control 3009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul version 1.5. 3109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 3209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulOverview 3309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 3409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul This extension allows an application to specify a minimum periodicity 3509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul of color buffer swaps, measured in video frame periods. 3609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 37c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian PaulIssues 38c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 39c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul * Should implementations that export GLX_MESA_swap_control also export 40c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul GL_EXT_swap_control for compatibility with WGL_EXT_swap_control? 41c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 42c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul UNRESOLVED. 43c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 4409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulNew Procedures and Functions 4509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 4668fef184390da2fd67acfd99fba0a2dbe4a3b875Ian Romanick int glXSwapIntervalMESA(unsigned int interval) 4709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul int glXGetSwapIntervalMESA(void) 4809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 4909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulNew Tokens 5009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 5109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 5209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 5309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulAdditions to Chapter 2 of the 1.4 GL Specification (OpenGL Operation) 5409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 5509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 5609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 5709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulAdditions to Chapter 3 of the 1.4 GL Specification (Rasterization) 5809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 5909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 6009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 6109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulAdditions to Chapter 4 of the 1.4 GL Specification (Per-Fragment Operations 6209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Pauland the Framebuffer) 6309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 6409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 6509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 6609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulAdditions to Chapter 5 of the 1.4 GL Specification (Special Functions) 6709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 6809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 6909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 7009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulAdditions to Chapter 6 of the 1.4 GL Specification (State and State Requests) 7109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 7209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 7309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 7409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulAdditions to the GLX 1.3 Specification 7509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 7609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul [Add the following to Section 3.3.10 of the GLX Specification (Double 7709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul Buffering)] 7809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 7909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul glXSwapIntervalMESA specifies the minimum number of video frame periods 8009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul per buffer swap. (e.g. a value of two means that the color buffers 8109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul will be swapped at most every other video frame.) A return value 8209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul of zero indicates success; otherwise an error occurred. The interval 8309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul takes effect when glXSwapBuffers is first called subsequent to the 8409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul glXSwapIntervalMESA call. 8509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 8609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul A video frame period is the time required by the monitor to display a 8709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul full frame of video data. In the case of an interlaced monitor, 8809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul this is typically the time required to display both the even and odd 8909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul fields of a frame of video data. 9009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 91ae5776c41f12515bb73c07ee2a0aed56cdd1a1efNicolas Kaiser If <interval> is set to a value of 0, buffer swaps are not synchro- 92ae5776c41f12515bb73c07ee2a0aed56cdd1a1efNicolas Kaiser nized to a video frame. The <interval> value is silently clamped to 9309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul the maximum implementation-dependent value supported before being 9409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul stored. 9509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 9609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul The swap interval is not part of the render context state. It cannot 9709b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul be pushed or popped. The current swap interval for the window 9809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul associated with the current context can be obtained by calling 99c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul glXGetSwapIntervalMESA. The default swap interval is 0. 10009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 101c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul On XFree86, setting the environment variable LIBGL_THROTTLE_REFRESH sets 102c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul the swap interval to 1. 10309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 10409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulErrors 10509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 10609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current 10768fef184390da2fd67acfd99fba0a2dbe4a3b875Ian Romanick GLXContext or if the current context is not a direct rendering context. 10809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 10909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulGLX Protocol 11009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 11109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None. This extension only extends to direct rendering contexts. 11209b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 11309b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulNew State 11409b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 11509b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul Get Value Get Command Type Initial Value 11609b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul --------- ----------- ---- ------------- 117c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul [swap interval] GetSwapInterval Z+ 0 11809b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 11909b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian PaulNew Implementation Dependent State 12009b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul 12109b00c5ded8e6211c9c79be600bb8c8ecad0d8fcBrian Paul None 122c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 123c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 124c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian PaulRevision History 125c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 126c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 1.1, 5/1/03 Added the issues section and contact information. 127c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul Changed the default swap interval to 0. 128c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul 1.0, 3/17/03 Initial version based on GLX_SGI_swap_control and 129c784d87b0f07590a2bb87307ca6a264b2ec99b31Brian Paul WGL_EXT_swap_control. 130