15bd8deadSopenharmony_ciXXX - Not complete. 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ciName 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ci SGIX_datapipe 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ciName Strings 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ci GL_SGIX_datapipe 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciVersion 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci $Date: 1998/04/21 03:52:00 $ $Revision: 1.2 $ 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciNumber 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci 152 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciDependencies 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci None 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciOverview 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci This extension introduces a new source and destination for OpenGL 265bd8deadSopenharmony_ci commands which currently write to and read from the application address 275bd8deadSopenharmony_ci space. The extension consists of two parts. The first is an 285bd8deadSopenharmony_ci infrastructure which allows the input/output of OpenGL commands to be 295bd8deadSopenharmony_ci redirected to storage media or address spaces other than normal 305bd8deadSopenharmony_ci application memory. This infrastructure can be used to encapsulate 315bd8deadSopenharmony_ci transfers from different or special storage media such as locked memory 325bd8deadSopenharmony_ci pools, memories which may have a special attachment to the graphics 335bd8deadSopenharmony_ci accelerator, etc. In all cases the storage medium is considered to be 345bd8deadSopenharmony_ci part of the client address space of the application/context. The 355bd8deadSopenharmony_ci extension does not provide mechanisms to move data into these special 365bd8deadSopenharmony_ci storage media other than OpenGL commands which return data to the 375bd8deadSopenharmony_ci application address space. The extension allows for the possibility 385bd8deadSopenharmony_ci that not all OpenGL commands may support transfers to and from each 395bd8deadSopenharmony_ci address space by grouping commands into classes Geometry, Image, and 405bd8deadSopenharmony_ci Attribute in which each class either completely supports or does not 415bd8deadSopenharmony_ci support such transfers. 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci The second part of the extension is more specific to the ISD proposed 445bd8deadSopenharmony_ci datapipe mechanisms. This part provides one or more datapipe 'heads' 455bd8deadSopenharmony_ci as part of the client state of a rendering context. These heads may 465bd8deadSopenharmony_ci be selected as the current 'address space' from or to which data 475bd8deadSopenharmony_ci is transferred during the execution of OpenGL commands. 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ciIssues 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci * Too general? 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci * Asynchronous support? 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ciNew Procedures and Functions 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ci void AddressSpace(enum space, bitfield mask); 595bd8deadSopenharmony_ci int DataPipe(enum space); 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ciNew Tokens 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci Accepted by the <pname> parameters of GetBooleanv, GetIntegerv, 645bd8deadSopenharmony_ci GetFloatv, and GetDoublev: 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci ADDRESS_SPACE 0x???? 675bd8deadSopenharmony_ci ADDRESS_CLASSES 0x???? 685bd8deadSopenharmony_ci DATAPIPE_MAX 0x???? 695bd8deadSopenharmony_ci 705bd8deadSopenharmony_ci Accepted by the <space> parameter of AddressSpace: 715bd8deadSopenharmony_ci 725bd8deadSopenharmony_ci MEMORY 0x???? 735bd8deadSopenharmony_ci 745bd8deadSopenharmony_ci Accepted by the <space> parameter of AddressSpace and the 755bd8deadSopenharmony_ci <space> parameter of DataPipe: 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci DATAPIPE_0 0x???? 785bd8deadSopenharmony_ci DATAPIPE_1 0x???? 795bd8deadSopenharmony_ci DATAPIPE_2 0x???? 805bd8deadSopenharmony_ci DATAPIPE_3 0x???? 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci Accepted by the <mask> parameter of AddressSpace: 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ci GEOMETRY_BIT 0x1 855bd8deadSopenharmony_ci IMAGE_BIT 0x2 865bd8deadSopenharmony_ci 875bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.0 Specification (OpenGL Operation) 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci None 905bd8deadSopenharmony_ci 915bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.0 Specification (Rasterization) 925bd8deadSopenharmony_ci 935bd8deadSopenharmony_ci None 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations 965bd8deadSopenharmony_ciand the Frame buffer) 975bd8deadSopenharmony_ci 985bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.0 Specification (Special Functions) 995bd8deadSopenharmony_ci 1005bd8deadSopenharmony_ci Address Spaces 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci Many OpenGL commands read data or return data to client memory. The 1035bd8deadSopenharmony_ci AddressSpace command selects the current address space to or from which 1045bd8deadSopenharmony_ci data is transferred for a subset of OpenGL commands which take 1055bd8deadSopenharmony_ci client memory pointers as parameters. Commands which are not part 1065bd8deadSopenharmony_ci of the subset which are interepreted specially continue to transfer 1075bd8deadSopenharmony_ci data to and from normal client memory. The address space is an 1085bd8deadSopenharmony_ci abstraction for alternate storage mediums. The subset of commands whose 1095bd8deadSopenharmony_ci address pointers receive special interpretation are split into a 1105bd8deadSopenharmony_ci set of classes as follows: 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci GEOMETRY 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ci Color*v 1155bd8deadSopenharmony_ci Normal*v 1165bd8deadSopenharmony_ci TexCoord*v 1175bd8deadSopenharmony_ci EdgeFlag*v 1185bd8deadSopenharmony_ci Vertex*v 1195bd8deadSopenharmony_ci Index*v 1205bd8deadSopenharmony_ci RasterPos*v 1215bd8deadSopenharmony_ci Rect*v 1225bd8deadSopenharmony_ci EvalCoord*v 1235bd8deadSopenharmony_ci LoadMatrix* 1245bd8deadSopenharmony_ci MultMatrix* 1255bd8deadSopenharmony_ci 1265bd8deadSopenharmony_ci ColorPointerEXT 1275bd8deadSopenharmony_ci EdgeFlagPointerEXT 1285bd8deadSopenharmony_ci IndexPointerEXT 1295bd8deadSopenharmony_ci NormalPointerEXT 1305bd8deadSopenharmony_ci TexCoordPointerEXT 1315bd8deadSopenharmony_ci VertexPointerEXT 1325bd8deadSopenharmony_ci 1335bd8deadSopenharmony_ci SpriteParameter[fi]vSGIX 1345bd8deadSopenharmony_ci 1355bd8deadSopenharmony_ci ReferencePlaneSGIX 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci IMAGE 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ci Bitmap 1405bd8deadSopenharmony_ci TexImage* 1415bd8deadSopenharmony_ci PixelMap*v 1425bd8deadSopenharmony_ci ReadPixels 1435bd8deadSopenharmony_ci DrawPixels 1445bd8deadSopenharmony_ci GetTexImage 1455bd8deadSopenharmony_ci TexSubImage* 1465bd8deadSopenharmony_ci ConvolutionFilter*EXT 1475bd8deadSopenharmony_ci SeparableFilter2DEXT 1485bd8deadSopenharmony_ci GetHistogramEXT 1495bd8deadSopenharmony_ci ColorTableSGI 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ci The set of commands which continue to operate from normal client memory are 1525bd8deadSopenharmony_ci as follows: 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci CallLists 1555bd8deadSopenharmony_ci ClipPlane 1565bd8deadSopenharmony_ci Fog*v 1575bd8deadSopenharmony_ci Light*v 1585bd8deadSopenharmony_ci LightModel*v 1595bd8deadSopenharmony_ci Material*v 1605bd8deadSopenharmony_ci PolygonStipple 1615bd8deadSopenharmony_ci TexParameter*v 1625bd8deadSopenharmony_ci TexEnv*v 1635bd8deadSopenharmony_ci TexGen*v 1645bd8deadSopenharmony_ci FeedbackBuffer 1655bd8deadSopenharmony_ci SelectBuffer 1665bd8deadSopenharmony_ci Map* 1675bd8deadSopenharmony_ci 1685bd8deadSopenharmony_ci GetBooleanv 1695bd8deadSopenharmony_ci GetClipPlane 1705bd8deadSopenharmony_ci GetDoublev 1715bd8deadSopenharmony_ci GetFloatv 1725bd8deadSopenharmony_ci GetIntegerv 1735bd8deadSopenharmony_ci GetLight*v 1745bd8deadSopenharmony_ci GetMap*v 1755bd8deadSopenharmony_ci GetMaterial*v 1765bd8deadSopenharmony_ci GetPixelMap*v 1775bd8deadSopenharmony_ci GetPolygonStipple 1785bd8deadSopenharmony_ci GetTexEnv*v 1795bd8deadSopenharmony_ci GetTexGen*v 1805bd8deadSopenharmony_ci GetTexParameter*v 1815bd8deadSopenharmony_ci GetTexLevelParameter*v 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci ConvolutionParameter*vEXT 1845bd8deadSopenharmony_ci GetConvolutionFilter*EXT 1855bd8deadSopenharmony_ci GetConvolutionParameter*vEXT 1865bd8deadSopenharmony_ci GetSeparableFilterEXT 1875bd8deadSopenharmony_ci 1885bd8deadSopenharmony_ci GetHistogramParameter*vEXT 1895bd8deadSopenharmony_ci GetMinmaxEXT 1905bd8deadSopenharmony_ci GetMinmaxParameter*vEXT 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ci DetailTexFuncSGIS 1935bd8deadSopenharmony_ci GetDetailTexFuncSGIS 1945bd8deadSopenharmony_ci SharpenTexFuncSGIS 1955bd8deadSopenharmony_ci GetSharpenTexFuncSGIS 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci GetPointervEXT 1985bd8deadSopenharmony_ci 1995bd8deadSopenharmony_ci AreTexturesResidentEXT 2005bd8deadSopenharmony_ci DeleteTexturesEXT 2015bd8deadSopenharmony_ci GenTexturesEXT 2025bd8deadSopenharmony_ci PrioritizeTexturesEXT 2035bd8deadSopenharmony_ci 2045bd8deadSopenharmony_ci ColorTableParameter[fi]vSGI 2055bd8deadSopenharmony_ci GetColorTableSGI 2065bd8deadSopenharmony_ci GetColorTableParameter[fi]vSGI 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ci GetTexFilterFuncSGIS 2095bd8deadSopenharmony_ci TexFilterFuncSGIS 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci PointParameterfvSGIS 2125bd8deadSopenharmony_ci FogFuncSGIS 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci InstrumentsBufferSGIX 2155bd8deadSopenharmony_ci PollInstrumentsSGIX 2165bd8deadSopenharmony_ci 2175bd8deadSopenharmony_ci DeformationMap3dSGIX 2185bd8deadSopenharmony_ci 2195bd8deadSopenharmony_ci GetListParameter[fi]vSGIX 2205bd8deadSopenharmony_ci ListParameter[fi]vSGIX 2215bd8deadSopenharmony_ci 2225bd8deadSopenharmony_ci The list of classes are specified as a bitmask parameter <mask>. All 2235bd8deadSopenharmony_ci commands in a class must be supported. Only the classes specified in 2245bd8deadSopenharmony_ci the <mask> parameter receive special interpretation, the remaining 2255bd8deadSopenharmony_ci commands continue to use client memory. All commands may be switched 2265bd8deadSopenharmony_ci back to client memory operation using MEMORY as the <space> parameter. 2275bd8deadSopenharmony_ci 2285bd8deadSopenharmony_ci The current address space and class mask may be queried using GetIntegerv 2295bd8deadSopenharmony_ci with the <pname> parameter set to ADDRESS_SPACE. 2305bd8deadSopenharmony_ci 2315bd8deadSopenharmony_ci The list of supported classes for a given address space can be determined 2325bd8deadSopenharmony_ci using GetIntegerv with the <pname> parameter set to the address space 2335bd8deadSopenharmony_ci to be queried. 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ci Per-Address Space Client State 2365bd8deadSopenharmony_ci 2375bd8deadSopenharmony_ci A separate instance of client state is maintained for each address 2385bd8deadSopenharmony_ci space for the following state: 2395bd8deadSopenharmony_ci 2405bd8deadSopenharmony_ci VERTEX_ARRAY_POINTER_EXT 2415bd8deadSopenharmony_ci NORMAL_ARRAY_POINTER_EXT 2425bd8deadSopenharmony_ci COLOR_ARRAY_POINTER_EXT 2435bd8deadSopenharmony_ci INDEX_ARRAY_POINTER_EXT 2445bd8deadSopenharmony_ci TEXTURE_COORD_ARRAY_POINTER_EXT 2455bd8deadSopenharmony_ci EDGE_FLAG_ARRAY_POINTER_EXT 2465bd8deadSopenharmony_ci 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci Datapipes 2495bd8deadSopenharmony_ci 2505bd8deadSopenharmony_ci An OpenGL context can participate in a datapipe connection by 2515bd8deadSopenharmony_ci binding the OpenGL datapipe head to a datapipe connection. Each 2525bd8deadSopenharmony_ci OpenGL context supports one or more datapipe heads. A handle to 2535bd8deadSopenharmony_ci a datapipe head can be obtained using the command Datapipe with 2545bd8deadSopenharmony_ci the <space> parameter set to one of DATAPIPE_0 through DATAPIPE_3. 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci Datapipe client transfer parameters are specified using OpenGL commands 2575bd8deadSopenharmony_ci such as PixelStore or glVertexPointerEXT. The OpenGL side of the 2585bd8deadSopenharmony_ci transfer is completely specified by issuing the OpenGL command 2595bd8deadSopenharmony_ci which normal causes data transfer, i.e., TexImage2D, but in the 2605bd8deadSopenharmony_ci case of datapipes the actual data transfer is not initiated until 2615bd8deadSopenharmony_ci the datapipe transfer command has been issued. 2625bd8deadSopenharmony_ci 2635bd8deadSopenharmony_ci If the address space corresponding to the datapipe head is not 2645bd8deadSopenharmony_ci currently active, then any data transfers using the datapipe head 2655bd8deadSopenharmony_ci are ignored. When a rendering context is not active, datapipe 2665bd8deadSopenharmony_ci transfers using that context are ignored. 2675bd8deadSopenharmony_ci 2685bd8deadSopenharmony_ci Once a datapipe transfer has been initiated, it will immediately 2695bd8deadSopenharmony_ci follow all OpenGL commands which preceeded it and it will 2705bd8deadSopenharmony_ci be followed by OpenGL commands which are issued after the 2715bd8deadSopenharmony_ci datapipe transfer has been initiated. Said another way, the 2725bd8deadSopenharmony_ci act of initiating the datapipe transfer is the point at which 2735bd8deadSopenharmony_ci the OpenGL command is introduced in the OpenGL command stream. 2745bd8deadSopenharmony_ci One the datapipe transfer has been initiated, the Finish command 2755bd8deadSopenharmony_ci will block until all OpenGL rendering including the results of 2765bd8deadSopenharmony_ci the datapipe transfer have completed. If Finish is called before 2775bd8deadSopenharmony_ci the datapipe transfer is initiated then it as if Finish has been 2785bd8deadSopenharmony_ci issued but the OpenGL command had not been issued before it. 2795bd8deadSopenharmony_ci 2805bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.0 Specification (State and State Requests) 2815bd8deadSopenharmony_ci 2825bd8deadSopenharmony_ci None. 2835bd8deadSopenharmony_ci 2845bd8deadSopenharmony_ciAdditions to the GLX Specification 2855bd8deadSopenharmony_ci 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ciErrors 2885bd8deadSopenharmony_ci 2895bd8deadSopenharmony_ci XXX - not complete yet 2905bd8deadSopenharmony_ci INVALID_OPERATION if the <space> parameter of AddressSpace is not one of 2915bd8deadSopenharmony_ci MEMORY, DATAPIPE_0, DATAPIPE_1, DATAPIPE_2, or DATAPIPE_3. 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci INVALID_OPERATION if the <mask> parameter of AddressSpace includes a 2945bd8deadSopenharmony_ci class which is not supported for the specified <space> 2955bd8deadSopenharmony_ci 2965bd8deadSopenharmony_ci INVALID_VALUE if any bit other than GEOMETRY_BIT or IMAGE_BIT 2975bd8deadSopenharmony_ci are set in the <mask> parameter of AddressSpace. 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ciNew State 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ci XXX - not complete yet 3025bd8deadSopenharmony_ci None. 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ciNew Implementation Dependent State 3055bd8deadSopenharmony_ci 3065bd8deadSopenharmony_ci XXX - not complete yet 3075bd8deadSopenharmony_ci None. 308