<?xml version="1.0"?>
<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">

<OpenGLAPI>
<category name="GL_ARB_sync" number="61">
    <type name="int64"   size="8"                  glx_name="CARD64"/>
    <type name="uint64"  size="8"  unsigned="true" glx_name="CARD64"/>
    <type name="sync"    size="8"  unsigned="true" glx_name="CARD64"/>

    <enum name="MAX_SERVER_WAIT_TIMEOUT"       count="1"  value="0x9111">
        <size name="Get" mode="get"/>
    </enum>
    <enum name="OBJECT_TYPE"                   count="1"  value="0x9112">
        <size name="GetSynciv" mode="get"/>
    </enum>
    <enum name="SYNC_CONDITION"                count="1"  value="0x9113">
        <size name="GetSynciv" mode="get"/>
    </enum>
    <enum name="SYNC_STATUS"                   count="1"  value="0x9114">
        <size name="GetSynciv" mode="get"/>
    </enum>
    <enum name="SYNC_FLAGS"                    count="1"  value="0x9115">
        <size name="GetSynciv" mode="get"/>
    </enum>

    <enum name="SYNC_FENCE"                               value="0x9116"/>
    <enum name="SYNC_GPU_COMMANDS_COMPLETE"               value="0x9117"/>
    <enum name="UNSIGNALED"                               value="0x9118"/>
    <enum name="SIGNALED"                                 value="0x9119"/>
    <enum name="ALREADY_SIGNALED"                         value="0x911A"/>
    <enum name="TIMEOUT_EXPIRED"                          value="0x911B"/>
    <enum name="CONDITION_SATISFIED"                      value="0x911C"/>
    <enum name="WAIT_FAILED"                              value="0x911D"/>

    <enum name="SYNC_FLUSH_COMMANDS_BIT"                  value="0x00000001"/>

    <!-- Not really an enum:
    <enum name="TIMEOUT_IGNORED"                  value="0xFFFFFFFFFFFFFFFF"/>
    -->


    <function name="FenceSync" offset="assign" es2="3.0">
        <param name="condition" type="GLenum"/>
        <param name="flags" type="GLbitfield"/>
        <return type="GLsync"/>
    </function>

    <function name="IsSync" offset="assign" es2="3.0">
        <param name="sync" type="GLsync"/>
	<return type="GLboolean"/>
    </function>

    <function name="DeleteSync" offset="assign" es2="3.0">
        <param name="sync" type="GLsync"/>
    </function>

    <function name="ClientWaitSync" offset="assign" es2="3.0">
        <param name="sync" type="GLsync"/>
        <param name="flags" type="GLbitfield"/>
	<param name="timeout" type="GLuint64"/>
        <return type="GLenum"/>
    </function>

    <function name="WaitSync" offset="assign" es2="3.0">
        <param name="sync" type="GLsync"/>
        <param name="flags" type="GLbitfield"/>
	<param name="timeout" type="GLuint64"/>
    </function>

    <function name="GetInteger64v" offset="assign" es2="3.0">
        <param name="pname" type="GLenum"/>
        <param name="params" type="GLint64 *" output="true" variable_param="pname"/>
    </function>

    <function name="GetSynciv" offset="assign" es2="3.0">
        <param name="sync" type="GLsync"/>
        <param name="pname" type="GLenum"/>
        <param name="bufSize" type="GLsizei"/>
        <param name="length" type="GLsizei *" output="true"/>
        <param name="values" type="GLint *" output="true" variable_param="pname"/>
    </function>
</category>

</OpenGLAPI>