Name

    SGIX_swap_group

Name Strings

    GLX_SGIX_swap_group

Version

    $Date: 2005/06/02 18:12:32 $ $Revision: 1.1 $

Number

    91

Dependencies

    SGIX_swap_control affects the definition of this extension

Overview

    This extension provides the capability to synchronize the buffer swaps
    of a group of GLX drawables.  A swap group is created, and drawables are 
    added as members to the swap group.  Buffer swaps to members of the swap 
    group will then take place concurrently.

    This extension extends the set of conditions that must be met before
    a buffer swap can take place. 

Dependencies

    SGIX_swap_control affects the definition of this extension

Issues

    * Do we need a query to ask whether a window is in a group?

New Procedures and Functions

    void JoinSwapGroupSGIX(Display *dpy, 
			   GLXDrawable drawable, 
			   GLXDrawable member);

New Tokens

    none

Additions to the GLX Specification

    Add to section 3.2.6, Double Buffering:

    JoinSwapGroupSGIX adds <drawable> to the swap group containing <member> as 
    a member.  If <drawable> is already a member of a different group, it is 
    implicitly removed from that group first.  If <member> is None, <drawable> 
    is removed from the swap group that it belongs to, if any.

    A swap group is referenced by naming any drawable in the group; there is no
    other way to refer to a group.

    Before a buffer swap can take place, a set of conditions must be 
    satisfied.  The conditions are defined in terms of the notions of when 
    a drawable is ready to swap and when a group is ready to swap.

    GLX drawables except windows are always ready to swap.

    When a window is unmapped, it is always ready.

    When a window is mapped, it is ready when all of the following are true:

	1. A buffer swap command has been issued for it.

	2. Its swap interval has elapsed.

    A group is ready when the following is true:

	1. All windows in the group are ready.

    All of the following must be satisfied before a buffer swap for a window
    can take place:

	1. The window is ready.

	2. If the window belongs to a group, the group is ready.

    Buffer swaps for all windows in a swap group will take place concurrently
    after the conditions are satisfied for every window in the group.

    A group exists until the last remaining drawable leaves the group.

    JoinSwapGroupSGIX is part of the X stream.

Errors

    JoinSwapGroupSGIX generates GLXBadDrawable if <drawable> is an invalid 
    GLX drawable, or if <member> is an invalid GLX drawable.

New State

    Get Value				Get Command	Type	Value	Attrib
    ---------				-----------	----	-------	------
    <whether window is in a group>	??		B	False

New Implementation Dependent State

    None

