• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1XXX - Not complete.
2
3Name
4
5    SGIX_datapipe
6
7Name Strings
8
9    GL_SGIX_datapipe
10
11Version
12
13    $Date: 1998/04/21 03:52:00 $ $Revision: 1.2 $
14
15Number
16
17    152
18
19Dependencies
20
21    None
22
23Overview
24
25    This extension introduces a new source and destination for OpenGL
26    commands which currently write to and read from the application address
27    space.  The extension consists of two parts.  The first is an
28    infrastructure which allows the input/output of OpenGL commands to be
29    redirected to storage media or address spaces  other than normal
30    application memory.  This infrastructure can be used to encapsulate
31    transfers from different or special storage media such as locked memory
32    pools, memories which may have a special attachment to the graphics
33    accelerator, etc.  In all cases the storage medium is considered to be
34    part of the client address space of the application/context.  The
35    extension does not provide mechanisms to move data into these special
36    storage media other than OpenGL commands which return data to the
37    application address space.  The extension allows for the possibility
38    that not all OpenGL commands may support transfers to and from each
39    address space by grouping commands into classes Geometry, Image, and
40    Attribute in which each class either completely supports or does not
41    support such transfers.
42
43    The second part of the extension is more specific to the ISD proposed
44    datapipe mechanisms.  This part provides one or more datapipe 'heads'
45    as part of the client state of a rendering context.  These heads may
46    be selected as the current 'address space' from or to which data
47    is transferred during the execution of OpenGL commands.
48
49Issues
50
51    * Too general?
52
53    * Asynchronous support?
54
55
56New Procedures and Functions
57
58    void AddressSpace(enum space, bitfield mask);
59    int DataPipe(enum space);
60
61New Tokens
62
63    Accepted by the <pname> parameters of GetBooleanv, GetIntegerv,
64    GetFloatv, and GetDoublev:
65
66	ADDRESS_SPACE		0x????
67	ADDRESS_CLASSES		0x????
68	DATAPIPE_MAX		0x????
69
70    Accepted by the <space> parameter of AddressSpace:
71
72	MEMORY			0x????
73
74    Accepted by the <space> parameter of AddressSpace and the
75    <space> parameter of DataPipe:
76
77	DATAPIPE_0			0x????
78	DATAPIPE_1			0x????
79	DATAPIPE_2			0x????
80	DATAPIPE_3			0x????
81
82    Accepted by the <mask> parameter of AddressSpace:
83
84	GEOMETRY_BIT			0x1
85	IMAGE_BIT			0x2
86
87Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
88
89    None
90
91Additions to Chapter 3 of the 1.0 Specification (Rasterization)
92
93    None
94
95Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
96and the Frame buffer)
97
98Additions to Chapter 5 of the 1.0 Specification (Special Functions)
99
100    Address Spaces
101
102    Many OpenGL commands read data or return data to client memory.  The
103    AddressSpace command selects the current address space to or from which
104    data is transferred for a subset of OpenGL commands which take
105    client memory pointers as parameters.  Commands which are not part
106    of the subset which are interepreted specially continue to transfer
107    data to and from normal client memory.  The address space is an
108    abstraction for alternate storage mediums.  The subset of commands whose
109    address pointers receive special interpretation are split into a
110    set of classes as follows:
111
112	GEOMETRY
113
114	    Color*v
115	    Normal*v
116	    TexCoord*v
117	    EdgeFlag*v
118	    Vertex*v
119	    Index*v
120	    RasterPos*v
121	    Rect*v
122	    EvalCoord*v
123	    LoadMatrix*
124	    MultMatrix*
125
126	    ColorPointerEXT
127	    EdgeFlagPointerEXT
128	    IndexPointerEXT
129	    NormalPointerEXT
130	    TexCoordPointerEXT
131	    VertexPointerEXT
132
133	    SpriteParameter[fi]vSGIX
134
135	    ReferencePlaneSGIX
136
137	IMAGE
138
139	    Bitmap
140	    TexImage*
141	    PixelMap*v
142	    ReadPixels
143	    DrawPixels
144	    GetTexImage
145	    TexSubImage*
146	    ConvolutionFilter*EXT
147	    SeparableFilter2DEXT
148	    GetHistogramEXT
149	    ColorTableSGI
150
151    The set of commands which continue to operate from normal client memory are
152    as follows:
153
154	CallLists
155	ClipPlane
156	Fog*v
157	Light*v
158	LightModel*v
159	Material*v
160	PolygonStipple
161	TexParameter*v
162	TexEnv*v
163	TexGen*v
164	FeedbackBuffer
165	SelectBuffer
166	Map*
167
168	GetBooleanv
169	GetClipPlane
170	GetDoublev
171	GetFloatv
172	GetIntegerv
173	GetLight*v
174	GetMap*v
175	GetMaterial*v
176	GetPixelMap*v
177	GetPolygonStipple
178	GetTexEnv*v
179	GetTexGen*v
180	GetTexParameter*v
181	GetTexLevelParameter*v
182
183	ConvolutionParameter*vEXT
184	GetConvolutionFilter*EXT
185	GetConvolutionParameter*vEXT
186	GetSeparableFilterEXT
187
188	GetHistogramParameter*vEXT
189	GetMinmaxEXT
190	GetMinmaxParameter*vEXT
191
192	DetailTexFuncSGIS
193	GetDetailTexFuncSGIS
194	SharpenTexFuncSGIS
195	GetSharpenTexFuncSGIS
196
197	GetPointervEXT
198
199	AreTexturesResidentEXT
200	DeleteTexturesEXT
201	GenTexturesEXT
202	PrioritizeTexturesEXT
203
204	ColorTableParameter[fi]vSGI
205	GetColorTableSGI
206	GetColorTableParameter[fi]vSGI
207
208	GetTexFilterFuncSGIS
209	TexFilterFuncSGIS
210
211	PointParameterfvSGIS
212	FogFuncSGIS
213
214	InstrumentsBufferSGIX
215	PollInstrumentsSGIX
216
217	DeformationMap3dSGIX
218
219	GetListParameter[fi]vSGIX
220	ListParameter[fi]vSGIX
221
222    The list of classes are specified as a bitmask parameter <mask>.  All
223    commands in a class must be supported. Only the classes specified in
224    the <mask> parameter receive special interpretation, the remaining
225    commands continue to use client memory.  All commands may be switched
226    back to client memory operation using MEMORY as the <space> parameter.
227
228    The current address space and class mask may be queried using GetIntegerv
229    with the <pname> parameter set to ADDRESS_SPACE.
230
231    The list of supported classes for a given address space can be determined
232    using GetIntegerv with the <pname> parameter set to the address space
233    to be queried.
234
235    Per-Address Space Client State
236
237    A separate instance of client state is maintained for each address
238    space for the following state:
239
240	VERTEX_ARRAY_POINTER_EXT
241	NORMAL_ARRAY_POINTER_EXT
242	COLOR_ARRAY_POINTER_EXT
243	INDEX_ARRAY_POINTER_EXT
244	TEXTURE_COORD_ARRAY_POINTER_EXT
245	EDGE_FLAG_ARRAY_POINTER_EXT
246
247
248    Datapipes
249
250    An OpenGL context can participate in a datapipe connection by
251    binding the OpenGL datapipe head to a datapipe connection. Each
252    OpenGL context supports one or more datapipe heads.  A handle to
253    a datapipe head can be obtained using the command Datapipe with
254    the <space> parameter set to one of DATAPIPE_0 through DATAPIPE_3.
255
256    Datapipe client transfer parameters are specified using OpenGL commands
257    such as PixelStore or glVertexPointerEXT.  The OpenGL side of the
258    transfer is completely specified by issuing the OpenGL command
259    which normal causes data transfer, i.e., TexImage2D, but in the
260    case of datapipes the actual data transfer is not initiated until
261    the datapipe transfer command has been issued.
262
263    If the address space corresponding to the datapipe head is not
264    currently active, then any data transfers using the datapipe head
265    are ignored.  When a rendering context is not active, datapipe
266    transfers using that context are ignored.
267
268    Once a datapipe transfer has been initiated, it will immediately
269    follow all OpenGL commands which preceeded it and it will
270    be followed by OpenGL commands which are issued after the
271    datapipe transfer has been initiated.  Said another way, the
272    act of initiating the datapipe transfer is the point at which
273    the OpenGL command is introduced in the OpenGL command stream.
274    One the datapipe transfer has been initiated, the Finish command
275    will block until all OpenGL rendering including the results of
276    the datapipe transfer have completed.  If Finish is called before
277    the datapipe transfer is initiated then it as if Finish has been
278    issued but the OpenGL command had not been issued before it.
279
280Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
281
282    None.
283
284Additions to the GLX Specification
285
286
287Errors
288
289    XXX - not complete yet
290    INVALID_OPERATION if the <space> parameter of AddressSpace is not one of
291    MEMORY, DATAPIPE_0, DATAPIPE_1, DATAPIPE_2, or DATAPIPE_3.
292
293    INVALID_OPERATION if the <mask> parameter of AddressSpace includes a
294    class which is not supported for the specified <space>
295
296    INVALID_VALUE if any bit other than GEOMETRY_BIT or IMAGE_BIT
297    are set in the <mask> parameter of AddressSpace.
298
299New State
300
301    XXX - not complete yet
302    None.
303
304New Implementation Dependent State
305
306    XXX - not complete yet
307    None.
308