XXX - Not complete yet!!! Name SGIX_async_pixel Name Strings GL_SGIX_async_pixel Version $Date: 1998/06/04 20:57:38 $ $Revision: 1.7 $ Number 133 Dependencies SGIX_async is required. EXT_texture3D affects the definition of this extension SGIS_texture4D affects the definition of this extension Overview This extension introduces a new asynchronous mode for texture download, pixel download and pixel readback commands. It allows programs to transfer textures or images between the host and the graphics accelerator in parallel with the execution of other graphics commands (possibly taking advantage of a secondary path to the graphics accelerator). It also allows programs to issue non-blocking pixel readback commands that return immediately after they are issued so that the program can issue other commands while the readback takes place. New Procedures and Functions None New Tokens Accepted by the parameter of Enable, Disable and IsEnabled, and by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: ASYNC_TEX_IMAGE_SGIX 0x835C ASYNC_DRAW_PIXELS_SGIX 0x835D ASYNC_READ_PIXELS_SGIX 0x835E Accepted by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: MAX_ASYNC_TEX_IMAGE_SGIX 0x835F MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 MAX_ASYNC_READ_PIXELS_SGIX 0x8361 Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) None Additions to Chapter 3 of the 1.1 Specification (Rasterization) Add a section following 3.6.3 ("Rasterization of Pixel Rectangles") entitled "Asynchronous Pixel Downloads": Normally the DrawPixels command is synchronous: OpenGL executes a DrawPixels command in the order it is issued in the OpenGL command stream. Calling Enable with the parameter set to ASYNC_DRAW_PIXELS_SGIX causes subsequent DrawPixels commands to be asynchronous as defined in the SGIX_async extension spec. An asynchronous DrawPixels command samples the OpenGL state vector at the point in the OpenGL command stream where the command is issued, but the results of the command (e.g. updates to the frame buffer) do not happen until some unspecified time in the future. In particular, the order of the asynchronous command relative to other OpenGL commands issued later in the command stream is undefined. An implementation may choose to execute asynchronous commands in parallel with the normal command stream or at some convenient time in the future. Calling Disable with the parameter set to ASYNC_DRAW_PIXELS_SGIX restores the default synchronous behavior for subsequent DrawPixels commands. It does not affect any pending asynchronous DrawPixels commands, or wait for their completion. When an asynchronous DrawPixels command is issued, it is associated with the current value of ASYNC_MARKER_SGIX as described in the SGIX_async extension specification. A program can determine if an asynchronous DrawPixels command has completed using the FinishAsyncSGIX or PollAsyncSGIX commands. Add a subsection to section 3.8 ("Texturing") entitled "Asynchronous Texture Downloads": Calling Enable with the parameter set to ASYNC_TEX_IMAGE_SGIX causes subsequent TexImage1D, TexSubImage1D, TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT, TexImage4DSGIS and TexSubImage4DSGIS commands to be asynchronous (similar to the asynchronous DrawPixels command described earlier). Calling Disable with the parameter set to ASYNC_TEX_IMAGE_SGIX restores the default synchronous behavior for subsequent TexImage commands. Additions to Chapter 4 of the 1.1 Specification (Fragments and the Frame Buffer) Add to section 4.3.2 ("Reading Pixels"): Calling Enable with the parameter set to ASYNC_READ_PIXELS_SGIX causes subsequent ReadPixels commands to be asynchronous (similar to the asynchronous DrawPixels command described earlier). An implementation of the asynchronous ReadPixels command may be non-blocking: It may return control to the program immediately rather than waiting for the command's results to be written into the destination rectangle in host memory. The ReadPixels command samples the OpenGL state vector at the time it is issued, but it may be executed at some undefined point in the future. In particular, if subsequent commands change the contents of the source rectangle in the framebuffer then the result of the ReadPixels is undefined. Calling Disable with the parameter set to ASYNC_READ_PIXELS_SGIX restores the default synchronous behavior for subsequent ReadPixels commands. Additions to Chapter 5 of the 1.1 Specification (Special Functions) None Additions to Chapter 6 of the 1.1 Specification (State and State Requests) None Additions to the GLX Specification None GLX Protocol None Dependencies on SGIX_async This document adds three categories of asynchronous commands to the framework defined by SGIX_async. Dependencies on EXT_texture3D If EXT_texture3D is not implemented then the references to TexImage3DEXT and TexSubImage3DEXT should be ignored. Dependencies on SGIS_texture4D If SGIS_texture4D is not implemented then the references to TexImage4DSGIS and TexSubImage4DSGIS should be ignored. Errors INVALID_OPERATION is generated if DrawPixels is called and ASYNC_DRAW_PIXELS_SGIX is enabled and the number of asynchronous DrawPixels commands that have been issued but not queried (using FinishAsyncSGIX or PollAsyncSGIX) exceeds MAX_ASYNC_DRAW_PIXELS_SGIX. INVALID_OPERATION is generated if TexImage1D, TexSubImage1D, TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT, TexImage4DSGIS or TexSubImage4DSGIS is called and ASYNC_TEX_IMAGE_SGIX is enabled and the number of asynchronous TexImage commands that have been issued but not queried (using FinishAsyncSGIX or PollAsyncSGIX) exceeds MAX_ASYNC_TEX_IMAGE_SGIX. INVALID_OPERATION is generated if ReadPixels is called and ASYNC_READ_PIXELS_SGIX is enabled and the number of asynchronous ReadPixels commands that have been issued but not queried (using FinishAsyncSGIX or PollAsyncSGIX) exceeds MAX_ASYNC_READ_PIXELS_SGIX. New State Get Value Get Command Type Value Attrib --------- ----------- ---- ------- ------ ASYNC_TEX_IMAGE_SGIX IsEnabled B False enable ASYNC_DRAW_PIXELS_SGIX IsEnabled B False enable ASYNC_READ_PIXELS_SGIX IsEnabled B False enable New Implementation Dependent State Minimum Get Value Get Command Type Value --------- ----------- ---- ------- MAX_ASYNC_TEX_IMAGE_SGIX GetIntegerv Z+ 1 MAX_ASYNC_DRAW_PIXELS_SGIX GetIntegerv Z+ 1 MAX_ASYNC_READ_PIXELS_SGIX GetIntegerv Z+ 1