1Name
2
3    SGIS_texture_select
4
5Name Strings
6
7    GL_SGIS_texture_select
8
9Version
10
11    $Date: 1996/02/13 19:11:06 $ $Revision: 1.11 $
12
13Number
14
15    51
16
17Dependencies
18
19    EXT_texture
20    EXT_texture3D
21    EXT_texture_object
22    SGIS_detail_texture
23
24Overview
25
26    This extension introduces several new texture internal formats.  The
27    purpose of these new formats is to reorganize the components of a
28    texture into groups of components.  The currently selected group
29    effectively becomes the internal format.
30
31    Also, two new texture parameters are introduced that control the
32    selection of these groups of components.
33
34    For example, assume a texture internal format of DUAL_LUMINANCE4_SGIS is
35    specified.  Now there are two groups of components, where each group has
36    a format of LUMINANCE4.  One of the two LUMINANCE groups is always
37    selected.  components can be selected and then interpreted as a LUMINANCE
38    texture.
39
40    The purpose of this extension is allow better utilization of texture
41    memory by subdividing the internal representation of a texel into 1, 2,
42    or 4 smaller texels.  Additionally, this may improve performance of
43    texture downloads.
44
45Issues
46
47    *	This spec still needs values for the enumerants.  Also, the GLX
48	section is empty.
49
50    *	This extension was formerly named SGIS_component_select.  The
51	reference to "component" was confusing so we changed it.
52
53    *	We have removed the ability to "alias" or reinterpret groups of
54	components.  Specifically, once a texture is defined with a DUAL*
55	or QUAD* internal format, the fact that it is ALPHA, LUMINANCE,
56	INTENSITY, or LUMINANCE_ALPHA is not changeable.  a previous version
57	of this spec allowed this.  IrisGL on RealityEngine allowed it as
58	well.  Since this function might be useful, it should be revisited
59	in a separate spec that allows this for all internal formats, not
60	just the ones defined here.  Additionally, any porting document
61	should mention this subtle point.  
62
63    *	Should we include versions of these new internal formats that don't 
64	specify bit resolution?  (e.g. DUAL_ALPHA_SGIS)  It would add the
65	ability to be vague about the actual resolution and would make it
66	appear consistent with internal formats from EXT_texture.  Can
67	someone make a good argument for adding these?
68
69    *	Do we need a new query to determine component bit resolution?
70	A. No.  The existing queries defined by EXT_texture are sufficient.
71	The query applies to the selected group of components.
72
73    *	Need to review dependencies on detail_texture, sharpen, etc.  Can
74	one create a detail texture using these new formats?  A. The
75	dependency on SGIS_detail_texture is mentioned below.
76
77    *	Is there an easy way to know whether this extension is actually
78	"enabled"?  A. This extension is enabled when the current texture
79	format is one of the new internal formats defined here.  An
80	additional query is required to determine which group of components 
81	is selected. 
82
83
84New Procedures and Functions
85
86    None
87
88New Tokens
89
90    Accepted by the <components> parameter of TexImage1D and TexImage2D, and
91    the <internalformat> parameter of TexImage3DEXT:
92
93	DUAL_ALPHA4_SGIS
94	DUAL_ALPHA8_SGIS
95	DUAL_ALPHA12_SGIS
96	DUAL_ALPHA16_SGIS
97	DUAL_LUMINANCE4_SGIS
98	DUAL_LUMINANCE8_SGIS
99	DUAL_LUMINANCE12_SGIS
100	DUAL_LUMINANCE16_SGIS
101	DUAL_INTENSITY4_SGIS
102	DUAL_INTENSITY8_SGIS
103	DUAL_INTENSITY12_SGIS
104	DUAL_INTENSITY16_SGIS
105	DUAL_LUMINANCE_ALPHA4_SGIS
106	DUAL_LUMINANCE_ALPHA8_SGIS
107	QUAD_ALPHA4_SGIS
108	QUAD_ALPHA8_SGIS
109	QUAD_LUMINANCE4_SGIS
110	QUAD_LUMINANCE8_SGIS
111	QUAD_INTENSITY4_SGIS
112	QUAD_INTENSITY8_SGIS
113
114    Accepted by the <pname> parameter of TexParameterf, TexParameteri,
115    TexParameterfv, TexParameteriv, GetTexParameterfv, and 
116    GetTexParameteriv:
117
118	DUAL_TEXTURE_SELECT_SGIS
119	QUAD_TEXTURE_SELECT_SGIS
120
121
122Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
123
124    None.
125
126Additions to Chapter 3 of the 1.0 Specification (Rasterization)
127
128    The selection of a group of components is specified by using 
129    TexParameterf, TexParameteri, TexParameterfv, or TexParameteriv with 
130    a <pname> parameter of DUAL_TEXTURE_SELECT_SGIS or QUAD_TEXTURE_SELECT_SGIS.
131
132    The value of DUAL_TEXTURE_SELECT_SGIS selects one of two groups of
133    components (hence the term DUAL).  The <param> parameter must be 0 or 1.
134    Otherwise, an INVALID_VALUE error is set.  When the texture internal
135    format is one of the DUAL* formats, this selection becomes active. A
136    value of 0 specifies that the first group of components is used, a value
137    of 1 specifies the second group, and so on.
138
139    Similarly, the value of QUAD_TEXTURE_SELECT_SGIS selects one of four
140    groups of components in the case that the texture internal format is one
141    of the QUAD* formats.  The <param> value must be 0, 1, 2 or 3.
142    Otherwise, an INVALID_VALUE error is set.
143    
144    There is always a selection defined for both DUAL_TEXTURE_SELECT_SGIS
145    and QUAD_TEXTURE_SELECT_SGIS formats.  It becomes active when the
146    current texture format becomes one of the DUAL* or QUAD* formats,
147    respectively.  If the current texture format is not one of DUAL* or
148    QUAD* formats, this extension has no effect.
149
150    The mapping of components from the canonical RGBA to these new internal
151    formats needs to be clarified.  There are three cases.  The first case
152    is for the DUAL* formats that are groups of ALPHA, LUMINANCE, and
153    INTENSITY.  The RED component goes to the first group while ALPHA goes
154    to the second group.  The second case is for the DUAL* formats that are
155    groups of LUMINANCE_ALPHA.  The RED and GREEN components go to the first
156    group while BLUE and ALPHA go to the second group.  The third case is
157    for the QUAD* formats.  The RED component goes to the first group, the
158    GREEN component to the second group, the BLUE component to the third
159    group, and the ALPHA component to the fourth group.
160
161    The interpretation of the bit resolutions of the new internal formats 
162    is implementation dependent.  (Similar to EXT_texture.)  The actual
163    resolution granted can be queried using Get*.  The bit resolution of
164    similar type components in a group, such as multiple LUMINANCE
165    components, is always the same.
166
167
168Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations
169and the Frame Buffer)
170
171    None.
172
173Additions to Chapter 5 of the 1.0 Specification (Special Functions)
174
175    None.
176
177Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
178
179    None.
180
181Additions to the GLX Specification
182
183    None.
184
185GLX Protocol
186
187    XXX
188
189Dependencies on EXT_texture
190
191    EXT_texture is required.  This extension defines new texture internal
192    formats that build on concepts (such as the INTENSITY format and
193    component numeric resolutions) introduced in the EXT_texture extension.
194
195Dependencies on EXT_texture3D
196
197    If EXT_texture3D is not supported, references to it should be ignored.
198    (see New State)
199
200Dependencies on EXT_texture_object
201
202    If EXT_texture_object is not supported, references to it should be
203    ignored.  (See New State.)
204
205Dependencies on SGIS_detail_texture
206
207    The condition for using the detail texture (see detail_texture.spec,
208    section 3.8.2.1 Texture magnification with detail) is modified to read:
209
210    "The conditions are:
211
212	1.  The active texture must be TEXTURE_2D.
213
214	2.  The internal formats of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS
215	    must have been specified identically.
216
217	3.  If SGIS_texture_select is supported and if the internal formats
218	    of TEXTURE_2D and DETAIL_TEXTURE_2D_SGIS are one of those
219	    defined by SGIS_texture_select (e.g. DUAL_LUMINANCE4_SGIS),
220	    then the corresponding group selections (e.g. the value of
221	    DUAL_TEXTURE_SELECT_SGIS) must have been specified identically.
222
223    If these conditions are not met, it is as though the magnification
224    texture filter was LINEAR."
225
226Errors
227
228    See above.
229
230New State
231
232											Initial
233    Get Value				Get Command		Type			Value		Attrib
234    ---------				-----------		----			-------		------
235
236    DUAL_TEXTURE_SELECT_SGIS		GetTexParameter		n x 3 x Z2		0		texture
237
238    QUAD_TEXTURE_SELECT_SGIS		GetTexParameter		n x 3 x Z4		0		texture
239
240
241    Note:  The "Type" column shows "n x ..." since this state will appear 
242    in each of "n" objects defined by EXT_texture_object.
243
244New Implementation Dependent State
245
246    None.
247