15bd8deadSopenharmony_ciXXX - Not complete yet!!! 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ciName 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ci SGIX_async_pixel 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ciName Strings 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ci GL_SGIX_async_pixel 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciVersion 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci $Date: 1998/06/04 20:57:38 $ $Revision: 1.7 $ 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciNumber 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci 133 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciDependencies 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci SGIX_async is required. 225bd8deadSopenharmony_ci EXT_texture3D affects the definition of this extension 235bd8deadSopenharmony_ci SGIS_texture4D affects the definition of this extension 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ciOverview 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ci This extension introduces a new asynchronous mode for texture 285bd8deadSopenharmony_ci download, pixel download and pixel readback commands. It allows 295bd8deadSopenharmony_ci programs to transfer textures or images between the host and the 305bd8deadSopenharmony_ci graphics accelerator in parallel with the execution of other 315bd8deadSopenharmony_ci graphics commands (possibly taking advantage of a secondary path 325bd8deadSopenharmony_ci to the graphics accelerator). It also allows programs to issue 335bd8deadSopenharmony_ci non-blocking pixel readback commands that return immediately after 345bd8deadSopenharmony_ci they are issued so that the program can issue other commands while 355bd8deadSopenharmony_ci the readback takes place. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ciNew Procedures and Functions 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ci None 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ciNew Tokens 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci Accepted by the <cap> parameter of Enable, Disable and IsEnabled, 445bd8deadSopenharmony_ci and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 455bd8deadSopenharmony_ci and GetDoublev: 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ci ASYNC_TEX_IMAGE_SGIX 0x835C 485bd8deadSopenharmony_ci ASYNC_DRAW_PIXELS_SGIX 0x835D 495bd8deadSopenharmony_ci ASYNC_READ_PIXELS_SGIX 0x835E 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, 525bd8deadSopenharmony_ci GetFloatv, and GetDoublev: 535bd8deadSopenharmony_ci 545bd8deadSopenharmony_ci MAX_ASYNC_TEX_IMAGE_SGIX 0x835F 555bd8deadSopenharmony_ci MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 565bd8deadSopenharmony_ci MAX_ASYNC_READ_PIXELS_SGIX 0x8361 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.1 Specification (OpenGL Operation) 595bd8deadSopenharmony_ci 605bd8deadSopenharmony_ci None 615bd8deadSopenharmony_ci 625bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.1 Specification (Rasterization) 635bd8deadSopenharmony_ci 645bd8deadSopenharmony_ci Add a section following 3.6.3 ("Rasterization of Pixel 655bd8deadSopenharmony_ci Rectangles") entitled "Asynchronous Pixel Downloads": 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ci Normally the DrawPixels command is synchronous: OpenGL executes a 685bd8deadSopenharmony_ci DrawPixels command in the order it is issued in the OpenGL command 695bd8deadSopenharmony_ci stream. Calling Enable with the <cap> parameter set to 705bd8deadSopenharmony_ci ASYNC_DRAW_PIXELS_SGIX causes subsequent DrawPixels commands to be 715bd8deadSopenharmony_ci asynchronous as defined in the SGIX_async extension spec. An 725bd8deadSopenharmony_ci asynchronous DrawPixels command samples the OpenGL state vector at 735bd8deadSopenharmony_ci the point in the OpenGL command stream where the command is 745bd8deadSopenharmony_ci issued, but the results of the command (e.g. updates to the frame 755bd8deadSopenharmony_ci buffer) do not happen until some unspecified time in the future. 765bd8deadSopenharmony_ci In particular, the order of the asynchronous command relative to 775bd8deadSopenharmony_ci other OpenGL commands issued later in the command stream is 785bd8deadSopenharmony_ci undefined. An implementation may choose to execute asynchronous 795bd8deadSopenharmony_ci commands in parallel with the normal command stream or at some 805bd8deadSopenharmony_ci convenient time in the future. 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci Calling Disable with the <cap> parameter set to 835bd8deadSopenharmony_ci ASYNC_DRAW_PIXELS_SGIX restores the default synchronous behavior 845bd8deadSopenharmony_ci for subsequent DrawPixels commands. It does not affect any 855bd8deadSopenharmony_ci pending asynchronous DrawPixels commands, or wait for their 865bd8deadSopenharmony_ci completion. 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ci When an asynchronous DrawPixels command is issued, it is 895bd8deadSopenharmony_ci associated with the current value of ASYNC_MARKER_SGIX as 905bd8deadSopenharmony_ci described in the SGIX_async extension specification. A program 915bd8deadSopenharmony_ci can determine if an asynchronous DrawPixels command has completed 925bd8deadSopenharmony_ci using the FinishAsyncSGIX or PollAsyncSGIX commands. 935bd8deadSopenharmony_ci 945bd8deadSopenharmony_ci Add a subsection to section 3.8 ("Texturing") entitled 955bd8deadSopenharmony_ci "Asynchronous Texture Downloads": 965bd8deadSopenharmony_ci 975bd8deadSopenharmony_ci Calling Enable with the <cap> parameter set to 985bd8deadSopenharmony_ci ASYNC_TEX_IMAGE_SGIX causes subsequent TexImage1D, TexSubImage1D, 995bd8deadSopenharmony_ci TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT, 1005bd8deadSopenharmony_ci TexImage4DSGIS and TexSubImage4DSGIS commands to be asynchronous 1015bd8deadSopenharmony_ci (similar to the asynchronous DrawPixels command described 1025bd8deadSopenharmony_ci earlier). Calling Disable with the <cap> parameter set to 1035bd8deadSopenharmony_ci ASYNC_TEX_IMAGE_SGIX restores the default synchronous behavior for 1045bd8deadSopenharmony_ci subsequent TexImage commands. 1055bd8deadSopenharmony_ci 1065bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.1 Specification (Fragments and the 1075bd8deadSopenharmony_ciFrame Buffer) 1085bd8deadSopenharmony_ci 1095bd8deadSopenharmony_ci Add to section 4.3.2 ("Reading Pixels"): 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci Calling Enable with the <cap> parameter set to 1125bd8deadSopenharmony_ci ASYNC_READ_PIXELS_SGIX causes subsequent ReadPixels commands to be 1135bd8deadSopenharmony_ci asynchronous (similar to the asynchronous DrawPixels command 1145bd8deadSopenharmony_ci described earlier). An implementation of the asynchronous 1155bd8deadSopenharmony_ci ReadPixels command may be non-blocking: It may return control to 1165bd8deadSopenharmony_ci the program immediately rather than waiting for the command's 1175bd8deadSopenharmony_ci results to be written into the destination rectangle in host 1185bd8deadSopenharmony_ci memory. The ReadPixels command samples the OpenGL state vector at 1195bd8deadSopenharmony_ci the time it is issued, but it may be executed at some undefined 1205bd8deadSopenharmony_ci point in the future. In particular, if subsequent commands change 1215bd8deadSopenharmony_ci the contents of the source rectangle in the framebuffer then the 1225bd8deadSopenharmony_ci result of the ReadPixels is undefined. 1235bd8deadSopenharmony_ci 1245bd8deadSopenharmony_ci Calling Disable with the <cap> parameter set to 1255bd8deadSopenharmony_ci ASYNC_READ_PIXELS_SGIX restores the default synchronous behavior 1265bd8deadSopenharmony_ci for subsequent ReadPixels commands. 1275bd8deadSopenharmony_ci 1285bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.1 Specification (Special Functions) 1295bd8deadSopenharmony_ci 1305bd8deadSopenharmony_ci None 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.1 Specification (State and State Requests) 1335bd8deadSopenharmony_ci 1345bd8deadSopenharmony_ci None 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ciAdditions to the GLX Specification 1375bd8deadSopenharmony_ci 1385bd8deadSopenharmony_ci None 1395bd8deadSopenharmony_ci 1405bd8deadSopenharmony_ciGLX Protocol 1415bd8deadSopenharmony_ci 1425bd8deadSopenharmony_ci None 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ciDependencies on SGIX_async 1455bd8deadSopenharmony_ci 1465bd8deadSopenharmony_ci This document adds three categories of asynchronous commands to 1475bd8deadSopenharmony_ci the framework defined by SGIX_async. 1485bd8deadSopenharmony_ci 1495bd8deadSopenharmony_ciDependencies on EXT_texture3D 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ci If EXT_texture3D is not implemented then the references to 1525bd8deadSopenharmony_ci TexImage3DEXT and TexSubImage3DEXT should be ignored. 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ciDependencies on SGIS_texture4D 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci If SGIS_texture4D is not implemented then the references to 1575bd8deadSopenharmony_ci TexImage4DSGIS and TexSubImage4DSGIS should be ignored. 1585bd8deadSopenharmony_ci 1595bd8deadSopenharmony_ciErrors 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci INVALID_OPERATION is generated if DrawPixels is called and 1625bd8deadSopenharmony_ci ASYNC_DRAW_PIXELS_SGIX is enabled and the number of asynchronous 1635bd8deadSopenharmony_ci DrawPixels commands that have been issued but not queried (using 1645bd8deadSopenharmony_ci FinishAsyncSGIX or PollAsyncSGIX) exceeds MAX_ASYNC_DRAW_PIXELS_SGIX. 1655bd8deadSopenharmony_ci 1665bd8deadSopenharmony_ci INVALID_OPERATION is generated if TexImage1D, TexSubImage1D, 1675bd8deadSopenharmony_ci TexImage2D, TexSubImage2D, TexImage3DEXT, TexSubImage3DEXT, 1685bd8deadSopenharmony_ci TexImage4DSGIS or TexSubImage4DSGIS is called and 1695bd8deadSopenharmony_ci ASYNC_TEX_IMAGE_SGIX is enabled and the number of asynchronous 1705bd8deadSopenharmony_ci TexImage commands that have been issued but not queried (using 1715bd8deadSopenharmony_ci FinishAsyncSGIX or PollAsyncSGIX) exceeds 1725bd8deadSopenharmony_ci MAX_ASYNC_TEX_IMAGE_SGIX. 1735bd8deadSopenharmony_ci 1745bd8deadSopenharmony_ci INVALID_OPERATION is generated if ReadPixels is called and 1755bd8deadSopenharmony_ci ASYNC_READ_PIXELS_SGIX is enabled and the number of asynchronous 1765bd8deadSopenharmony_ci ReadPixels commands that have been issued but not queried (using 1775bd8deadSopenharmony_ci FinishAsyncSGIX or PollAsyncSGIX) exceeds 1785bd8deadSopenharmony_ci MAX_ASYNC_READ_PIXELS_SGIX. 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ciNew State 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci Get Value Get Command Type Value Attrib 1835bd8deadSopenharmony_ci --------- ----------- ---- ------- ------ 1845bd8deadSopenharmony_ci ASYNC_TEX_IMAGE_SGIX IsEnabled B False enable 1855bd8deadSopenharmony_ci ASYNC_DRAW_PIXELS_SGIX IsEnabled B False enable 1865bd8deadSopenharmony_ci ASYNC_READ_PIXELS_SGIX IsEnabled B False enable 1875bd8deadSopenharmony_ci 1885bd8deadSopenharmony_ciNew Implementation Dependent State 1895bd8deadSopenharmony_ci 1905bd8deadSopenharmony_ci Minimum 1915bd8deadSopenharmony_ci Get Value Get Command Type Value 1925bd8deadSopenharmony_ci --------- ----------- ---- ------- 1935bd8deadSopenharmony_ci MAX_ASYNC_TEX_IMAGE_SGIX GetIntegerv Z+ 1 1945bd8deadSopenharmony_ci MAX_ASYNC_DRAW_PIXELS_SGIX GetIntegerv Z+ 1 1955bd8deadSopenharmony_ci MAX_ASYNC_READ_PIXELS_SGIX GetIntegerv Z+ 1 196