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