15bd8deadSopenharmony_ciKurt Akeley
25bd8deadSopenharmony_ciList of potential OpenGL extensions
35bd8deadSopenharmony_ci
45bd8deadSopenharmony_ci$Id: //depot/main/doc/registry/extensions/future#11 $
55bd8deadSopenharmony_ci
65bd8deadSopenharmony_ci   *	Consider supporting color conversion in both the pixel and
75bd8deadSopenharmony_ci	geometry paths.  This requires a color mode for TexGen and
85bd8deadSopenharmony_ci	a pre-texture lookup (rather than a lookup in the pixel path).
95bd8deadSopenharmony_ci	It might also be possible to use the color matrix in both
105bd8deadSopenharmony_ci	the pixel and geometry paths.
115bd8deadSopenharmony_ci
125bd8deadSopenharmony_ci    1.	Replace undefined pixel color components with specified values
135bd8deadSopenharmony_ci	as part of the "Final Expansion to RGBA" operation.  Allows alpha-
145bd8deadSopenharmony_ci	only images to pick up a useful color.
155bd8deadSopenharmony_ci
165bd8deadSopenharmony_ci    2.	Attached video texture.  Automatic double buffering with
175bd8deadSopenharmony_ci	swap linked to buffer swap.  Video locked to buffer swap
185bd8deadSopenharmony_ci	also.
195bd8deadSopenharmony_ci
205bd8deadSopenharmony_ci    5.	Support non power-of-two texture dimensions for single-level
215bd8deadSopenharmony_ci	(non mipmapped), clamped texture images?  (Is this really
225bd8deadSopenharmony_ci	necessary?)  If we do this, then eliminate the "null" texture
235bd8deadSopenharmony_ci	definition stuff.
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    8.	Support automatic generation of mipmap images.	Control with mode
265bd8deadSopenharmony_ci	"attached" to a named texture.	Generate only down to the
275bd8deadSopenharmony_ci	low-LOD level.
285bd8deadSopenharmony_ci
295bd8deadSopenharmony_ciFeatures that have since been implemented:
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ci    3.	Perform integer decimation during pixel unpack/pack.  Separate values
325bd8deadSopenharmony_ci	for x, y, and z decimation.
335bd8deadSopenharmony_ci
345bd8deadSopenharmony_ci	Done: decimation.
355bd8deadSopenharmony_ci
365bd8deadSopenharmony_ci    4.	Support LUMINANCE and LUMINANCE_ALPHA framebuffer formats.
375bd8deadSopenharmony_ci	Use GLX to do all the work - only change to OpenGL is to define
385bd8deadSopenharmony_ci	what the framebuffer returns for green and blue when there are
395bd8deadSopenharmony_ci	no bits (alpha already defined).
405bd8deadSopenharmony_ci
415bd8deadSopenharmony_ci	Done: fbconfig.
425bd8deadSopenharmony_ci
435bd8deadSopenharmony_ci    6.	Allow additional named textures to be created, manipulated,
445bd8deadSopenharmony_ci	and bound.
455bd8deadSopenharmony_ci
465bd8deadSopenharmony_ci	Done: texture_object.
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    7.	Allow specification of lowest and highest mipmap level.
495bd8deadSopenharmony_ci	Attach this mode to named textures.
505bd8deadSopenharmony_ci
515bd8deadSopenharmony_ci	Also support separate bias of LOD-in-x and LOD-in-y computation.
525bd8deadSopenharmony_ci	(GL_LODX_OFFSET and GL_LODY_OFFSET are suggested by rad.)
535bd8deadSopenharmony_ci
545bd8deadSopenharmony_ci	Done: texture_lod.
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    9.	Add a new texture clamp mode that really clamps to the
575bd8deadSopenharmony_ci	border color (nearest, linear, or cubic filtering).  Check with
585bd8deadSopenharmony_ci	Kona folks to be sure that this is all that is necessary.
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ci	Done: texture_border_clamp and texture_edge_clamp.
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci   10.	Define image buffers - drawing surfaces associated with a
635bd8deadSopenharmony_ci	rendering context that are not displayable.
645bd8deadSopenharmony_ci
655bd8deadSopenharmony_ci	Done: pbuffer.
665bd8deadSopenharmony_ci
675bd8deadSopenharmony_ci   11.	Add info about transparency to the level stuff in GLX (what color,
685bd8deadSopenharmony_ci	if any, is transparent in that level).
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ci	Done: visual_info.
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci   12.	Define a mechanism that renormalizes normals cheaply when all
735bd8deadSopenharmony_ci	scales are uniform.
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci	Done: rescale_normal.
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci   13.	Define support for multiple active textures.
785bd8deadSopenharmony_ci
795bd8deadSopenharmony_ci	Done: multitexture.
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci   14.	Introduce new <type> tokens to support packed pixel data
825bd8deadSopenharmony_ci	types.	For example, GL_PACKED_INT, GL_PACKED_SHORT, and
835bd8deadSopenharmony_ci	GL_PACKED_BYTE.  Then define the formats that result when
845bd8deadSopenharmony_ci	these new types are used in conjunction with currently-
855bd8deadSopenharmony_ci	defined formats.  For example, format GL_RGB with type
865bd8deadSopenharmony_ci	GL_PACKED_INT might be
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci		xxbbbbbbbbbbggggggggggrrrrrrrrrr
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci	Done: packed_pixels.
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci   15.	Add argb format to support photoshop, etc.
935bd8deadSopenharmony_ci
945bd8deadSopenharmony_ci	Done (BGRA combined with _REV packed pixel formats in OpenGL 1.2).
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci   16.	Add input color mux to pixel path.  Allows red to be sourced
975bd8deadSopenharmony_ci	by red, green, blue, alpha, zero, or one.  Likewise green, blue,
985bd8deadSopenharmony_ci	and alpha.  Could also use this mechanism to throw away a fifth
995bd8deadSopenharmony_ci	component from a CMYKA image!  This would elminiate the need for
1005bd8deadSopenharmony_ci	RGBAx and xxxxA image formats.
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci	Done: color_matrix.
1035bd8deadSopenharmony_ci
1045bd8deadSopenharmony_ci   17.	Support high-resolution pixmaps (lots of bits of color) even
1055bd8deadSopenharmony_ci	if only low-resolution visuals are supported by the framebuffer.
1065bd8deadSopenharmony_ci
1075bd8deadSopenharmony_ci	Done: fbconfig
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci   18.	Variable display resolution (on the fly)
1105bd8deadSopenharmony_ci
1115bd8deadSopenharmony_ci	Done: video_resize.
1125bd8deadSopenharmony_ci
1135bd8deadSopenharmony_ci   19.	Light points (automatic shading based on range, even field
1145bd8deadSopenharmony_ci	intensity, etc.)
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci	Done: point_parameters.
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci   20.	Textured stamps.  (Like trees.)
1195bd8deadSopenharmony_ci
1205bd8deadSopenharmony_ci	Done: sprite.
121