1XXX - Not complete yet!!! 2 3Name 4 5 SGIX_async_pixel 6 7Name Strings 8 9 GL_SGIX_async_pixel 10 11Version 12 13 $Date: 1998/06/04 20:57:38 $ $Revision: 1.7 $ 14 15Number 16 17 133 18 19Dependencies 20 21 SGIX_async is required. 22 EXT_texture3D affects the definition of this extension 23 SGIS_texture4D affects the definition of this extension 24 25Overview 26 27 This extension introduces a new asynchronous mode for texture 28 download, pixel download and pixel readback commands. It allows 29 programs to transfer textures or images between the host and the 30 graphics accelerator in parallel with the execution of other 31 graphics commands (possibly taking advantage of a secondary path 32 to the graphics accelerator). It also allows programs to issue 33 non-blocking pixel readback commands that return immediately after 34 they are issued so that the program can issue other commands while 35 the readback takes place. 36 37New Procedures and Functions 38 39 None 40 41New Tokens 42 43 Accepted by the <cap> parameter of Enable, Disable and IsEnabled, 44 and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 45 and GetDoublev: 46 47 ASYNC_TEX_IMAGE_SGIX 0x835C 48 ASYNC_DRAW_PIXELS_SGIX 0x835D 49 ASYNC_READ_PIXELS_SGIX 0x835E 50 51 Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, 52 GetFloatv, and GetDoublev: 53 54 MAX_ASYNC_TEX_IMAGE_SGIX 0x835F 55 MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 56 MAX_ASYNC_READ_PIXELS_SGIX 0x8361 57 58Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) 59 60 None 61 62Additions to Chapter 3 of the 1.1 Specification (Rasterization) 63 64 Add a section following 3.6.3 ("Rasterization of Pixel 65 Rectangles") entitled "Asynchronous Pixel Downloads": 66 67 Normally the DrawPixels command is synchronous: OpenGL executes a 68 DrawPixels command in the order it is issued in the OpenGL command 69 stream. Calling Enable with the <cap> parameter set to 70 ASYNC_DRAW_PIXELS_SGIX causes subsequent DrawPixels commands to be 71 asynchronous as defined in the SGIX_async extension spec. An 72 asynchronous DrawPixels command samples the OpenGL state vector at 73 the point in the OpenGL command stream where the command is 74 issued, but the results of the command (e.g. updates to the frame 75 buffer) do not happen until some unspecified time in the future. 76 In particular, the order of the asynchronous command relative to 77 other OpenGL commands issued later in the command stream is 78 undefined. An implementation may choose to execute asynchronous 79 commands in parallel with the normal command stream or at some 80 convenient time in the future. 81 82 Calling Disable with the <cap> parameter set to 83 ASYNC_DRAW_PIXELS_SGIX restores the default synchronous behavior 84 for subsequent DrawPixels commands. It does not affect any 85 pending asynchronous DrawPixels commands, or wait for their 86 completion. 87 88 When an asynchronous DrawPixels command is issued, it is 89 associated with the current value of ASYNC_MARKER_SGIX as 90 described in the SGIX_async extension specification. A program 91 can determine if an asynchronous DrawPixels command has completed 92 using the FinishAsyncSGIX or PollAsyncSGIX commands. 93 94 Add a subsection to section 3.8 ("Texturing") entitled 95 "Asynchronous Texture Downloads": 96 97 Calling Enable with the <cap> parameter set to 98 ASYNC_TEX_IMAGE_SGIX causes subsequent TexImage1D, TexSubImage1D, 99 TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT, 100 TexImage4DSGIS and TexSubImage4DSGIS commands to be asynchronous 101 (similar to the asynchronous DrawPixels command described 102 earlier). Calling Disable with the <cap> parameter set to 103 ASYNC_TEX_IMAGE_SGIX restores the default synchronous behavior for 104 subsequent TexImage commands. 105 106Additions to Chapter 4 of the 1.1 Specification (Fragments and the 107Frame Buffer) 108 109 Add to section 4.3.2 ("Reading Pixels"): 110 111 Calling Enable with the <cap> parameter set to 112 ASYNC_READ_PIXELS_SGIX causes subsequent ReadPixels commands to be 113 asynchronous (similar to the asynchronous DrawPixels command 114 described earlier). An implementation of the asynchronous 115 ReadPixels command may be non-blocking: It may return control to 116 the program immediately rather than waiting for the command's 117 results to be written into the destination rectangle in host 118 memory. The ReadPixels command samples the OpenGL state vector at 119 the time it is issued, but it may be executed at some undefined 120 point in the future. In particular, if subsequent commands change 121 the contents of the source rectangle in the framebuffer then the 122 result of the ReadPixels is undefined. 123 124 Calling Disable with the <cap> parameter set to 125 ASYNC_READ_PIXELS_SGIX restores the default synchronous behavior 126 for subsequent ReadPixels commands. 127 128Additions to Chapter 5 of the 1.1 Specification (Special Functions) 129 130 None 131 132Additions to Chapter 6 of the 1.1 Specification (State and State Requests) 133 134 None 135 136Additions to the GLX Specification 137 138 None 139 140GLX Protocol 141 142 None 143 144Dependencies on SGIX_async 145 146 This document adds three categories of asynchronous commands to 147 the framework defined by SGIX_async. 148 149Dependencies on EXT_texture3D 150 151 If EXT_texture3D is not implemented then the references to 152 TexImage3DEXT and TexSubImage3DEXT should be ignored. 153 154Dependencies on SGIS_texture4D 155 156 If SGIS_texture4D is not implemented then the references to 157 TexImage4DSGIS and TexSubImage4DSGIS should be ignored. 158 159Errors 160 161 INVALID_OPERATION is generated if DrawPixels is called and 162 ASYNC_DRAW_PIXELS_SGIX is enabled and the number of asynchronous 163 DrawPixels commands that have been issued but not queried (using 164 FinishAsyncSGIX or PollAsyncSGIX) exceeds MAX_ASYNC_DRAW_PIXELS_SGIX. 165 166 INVALID_OPERATION is generated if TexImage1D, TexSubImage1D, 167 TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT, 168 TexImage4DSGIS or TexSubImage4DSGIS is called and 169 ASYNC_TEX_IMAGE_SGIX is enabled and the number of asynchronous 170 TexImage commands that have been issued but not queried (using 171 FinishAsyncSGIX or PollAsyncSGIX) exceeds 172 MAX_ASYNC_TEX_IMAGE_SGIX. 173 174 INVALID_OPERATION is generated if ReadPixels is called and 175 ASYNC_READ_PIXELS_SGIX is enabled and the number of asynchronous 176 ReadPixels commands that have been issued but not queried (using 177 FinishAsyncSGIX or PollAsyncSGIX) exceeds 178 MAX_ASYNC_READ_PIXELS_SGIX. 179 180New State 181 182 Get Value Get Command Type Value Attrib 183 --------- ----------- ---- ------- ------ 184 ASYNC_TEX_IMAGE_SGIX IsEnabled B False enable 185 ASYNC_DRAW_PIXELS_SGIX IsEnabled B False enable 186 ASYNC_READ_PIXELS_SGIX IsEnabled B False enable 187 188New Implementation Dependent State 189 190 Minimum 191 Get Value Get Command Type Value 192 --------- ----------- ---- ------- 193 MAX_ASYNC_TEX_IMAGE_SGIX GetIntegerv Z+ 1 194 MAX_ASYNC_DRAW_PIXELS_SGIX GetIntegerv Z+ 1 195 MAX_ASYNC_READ_PIXELS_SGIX GetIntegerv Z+ 1 196