a
    i‚j®
  ã                   @   s®   d Z ddlmZmZmZ ddlmZmZ ddlZddlm	Z	m
Z
 ddlT ddlmZ dd	„ Ze e¡ d
d¡ dd¡Ze e¡ d
d¡ dd¡Ze e¡ d
d¡ dd¡ZdS )a¼  OpenGL extension NVX.progress_fence

This module customises the behaviour of the 
OpenGL.raw.GL.NVX.progress_fence to provide a more 
Python-friendly API

Overview (from the spec)
	
	This extension uses the concept of GL semaphores as defined in 
	GL_EXT_semaphore to better coordinate operations between multiple
	GPU command streams. A semaphore type called "progress fence" is 
	derived from the GL semaphore. The progress fence semaphore is
	created by CreateProgressFenceNVX() returning the name of a newly
	created semaphore object. Like other semaphores, these are signaled
	by the GL server. Each signal operation is queued in the GPU command
	stream with an associated fence value that is written to the semaphore
	at the completion of a signal operation. 
	
	A GL server wait can be added to the command stream using WaitSemaphoreui64NVX.
	This blocks the GPU until the progress fence semaphore reaches or exceeds the 
	specified fence value.
	
	A GL client wait can be initiated using ClientWaitSemaphoreui64NVX. 
	This blocks the CPU until the specified fence value is reached.

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/NVX/progress_fence.txt
é    )ÚplatformÚconstantÚarrays)Ú
extensionsÚwrapperN)Ú_typesÚ_glgets)Ú*)Ú_EXTENSION_NAMEc                  C   s   ddl m}  |  t¡S )z=Return boolean indicating whether this extension is availabler   ©r   )ÚOpenGLr   ZhasGLExtensionr
   r   © r   úZ/home/ghrups/robot-bench/.venv/lib/python3.9/site-packages/OpenGL/GL/NVX/progress_fence.pyÚglInitProgressFenceNVX$   s    r   ZfenceValueArrayZsemaphoreArray)Ú__doc__r   r   r   r   r   r   ÚctypesZOpenGL.raw.GLr   r   Z OpenGL.raw.GL.NVX.progress_fencer
   r   ZglSignalSemaphoreui64NVXZsetInputArraySizeZglWaitSemaphoreui64NVXZglClientWaitSemaphoreui64NVXr   r   r   r   Ú<module>   s,   
ÿý
ÿý
ÿý