瀏覽代碼

bring over from 4.0.4 branch

tags/mesa_4_1
Brian Paul 23 年之前
父節點
當前提交
8420ad94f2
共有 3 個檔案被更改,包括 429 行新增0 行删除
  1. 94
    0
      docs/MESA_agp_offset.spec
  2. 138
    0
      docs/MESA_pack_invert.spec
  3. 197
    0
      docs/MESA_ycbcr_texture.spec

+ 94
- 0
docs/MESA_agp_offset.spec 查看文件

@@ -0,0 +1,94 @@
Name

MESA_agp_offset

Name Strings

GLX_MESA_agp_offset

Contact

Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)

Status

Shipping (Mesa 4.0.4 and later. Only implemented in particular
XFree86/DRI drivers.)

Version

1.0

Number

TBD

Dependencies

OpenGL 1.0 or later is required
GLX_NV_vertex_array_range is required.
This extensions is written against the OpenGL 1.4 Specification.

Overview

This extensions provides a way to convert pointers in an AGP memory
region into byte offsets into the AGP aperture.
Note, this extension depends on GLX_NV_vertex_array_range, for which
no real specification exists. See GL_NV_vertex_array_range for more
information.

IP Status

None

Issues

None

New Procedures and Functions

GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )

New Tokens

None

Additions to the OpenGL 1.4 Specification

None

Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors)

Add a new section, 3.6 as follows:

3.6 AGP Memory Access

On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV
and freed with glXFreeMemoryNV. Sometimes it's useful to know where a
block of AGP memory is located with respect to the start of the AGP
aperature. The function

GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )

Returns the offset of the given memory block from the start of AGP
memory in basic machine units (i.e. bytes). If pointer is invalid
the value ~0 will be returned.

GLX Protocol

None. This is a client side-only extension.

Errors

glXGetAGPOffsetMESA will return ~0 if the pointer does not point to
an AGP memory region.

New State

None

Revision History

20 September 2002 - Initial draft
2 October 2002 - finished GLX chapter 3 additions

+ 138
- 0
docs/MESA_pack_invert.spec 查看文件

@@ -0,0 +1,138 @@
Name

MESA_pack_invert

Name Strings

GL_MESA_pack_invert

Contact

Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)

Status

Shipping (Mesa 4.0.4 and later)

Version

1.0

Number

TBD

Dependencies

OpenGL 1.0 or later is required
This extensions is written against the OpenGL 1.4 Specification.

Overview

This extension adds a new pixel storage parameter to indicate that
images are to be packed in top-to-bottom order instead of OpenGL's
conventional bottom-to-top order. Only pixel packing can be
inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter,
etc).

Almost all known image file formats store images in top-to-bottom
order. As it is, OpenGL reads images from the frame buffer in
bottom-to-top order. Thus, images usually have to be inverted before
writing them to a file with image I/O libraries. This extension
allows images to be read such that inverting isn't needed.

IP Status

None

Issues

1. Should we also defined UNPACK_INVERT_MESA for glDrawPixels, etc?

Resolved: No, we're only concerned with pixel packing. There are other
solutions for inverting images when using glDrawPixels (negative Y pixel
zoom) or glTexImage (invert the vertex T coordinates). It would be easy
enough to define a complementary extension for pixel packing in the
future if needed.

New Procedures and Functions

None

New Tokens

Accepted by the <pname> parameter of PixelStorei and PixelStoref
and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev
and GetBooleanv:

PACK_INVERT_MESA 0x8758

Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)

None

Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)

None

Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
Operations and the Frame Buffer)

Add the following entry to table 4.4 (PixelStore parameters) on page 182:

Parameter Name Type Initial Value Valid Range
---------------------------------------------------------
PACK_INVERT_MESA boolean FALSE TRUE/FALSE

In the section labeled "Placement in Client Memory" on page 184
insert the following text into the paragraph before the sentence
that starts with "If the format is RED, GREEN, BLUE...":

"The parameter PACK_INVERT_MESA controls whether the image is packed
in bottom-to-top order (the default) or top-to-bottom order. Equation
3.8 is modified as follows:

... the first element of the Nth row is indicated by

p + Nk, if PACK_INVERT_MESA is false
p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the
image height
"

Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)

None

Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
State Requests)

None

Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)

None

Additions to the AGL/GLX/WGL Specifications

None

GLX Protocol

None

Errors

None

New State

Add the following entry to table 6.20 (Pixels) on page 235:

Get Value Type Get Cmd Initial Value Description Sec Attribute
--------------------------------------------------------------------------------------------------
PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store

Revision History

21 September 2002 - Initial draft

+ 197
- 0
docs/MESA_ycbcr_texture.spec 查看文件

@@ -0,0 +1,197 @@
Name

MESA_ycbcr_texture

Name Strings

GL_MESA_ycbcr_texture

Contact

Brian Paul, Tungsten Graphics, Inc. (brian 'at' tungstengraphics.com)
Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com)

Status

Shipping (Mesa 4.0.4 and later)

Version

1.0

Number

TBD

Dependencies

OpenGL 1.0 or later is required
This extensions is written against the OpenGL 1.4 Specification.
NV_texture_rectangle effects the definition of this extension.

Overview

This extension supports texture images in the YCbCr format. There is
no support for converting YCbCr images to RGB or vice versa. The
intention is for YCbCr image data to be directly sent to the renderer
without any pixel transfer operations. Only 2D texture images are
supported (not glDrawPixels, glReadPixels, etc).

A YCbCr pixel (texel) is a 16-bit unsigned short with two components.
The first component is luminance (Y). For pixels in even-numbered
image columns, the second component is Cb. For pixels in odd-numbered
image columns, the second component is Cr. If one were to convert the
data to RGB one would need to examine two pixels from columns N and N+1
(where N is even) to deduce the RGB color.

IP Status

None

Issues

None

New Procedures and Functions

None

New Tokens

Accepted by the <internalFormat> and <format> parameters of
TexImage2D and TexSubImage2D:

GL_YCBCR_MESA 0x8757

Accepted by the <type> parameter of TexImage2D and TexSubImage2D:

GL_UNSIGNED_SHORT_8_8_MESA 0x85BA /* same as Apple's */
GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB /* same as Apple's */

Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation)

None

Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)

In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
add the following to Table 3.8 (Packed pixel formats):
type Parameter GL Data Number of Matching
Token Name Type Components Pixel Formats
-------------- ------- ---------- -------------
UNSIGNED_SHORT_8_8_MESA ushort 3 YCBCR_422_MESA
UNSIGNED_SHORT_8_8_REV_MESA ushort 3 YCBCR_422_MESA


In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
add the following to Table 3.10 (UNSIGNED_SHORT formats):

UNSIGNED_SHORT_8_8_MESA:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-------------------------------+-------------------------------+
| 1st | 2nd |
+-------------------------------+-------------------------------+
UNSIGNED_SHORT_8_8_REV_MESA:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-------------------------------+-------------------------------+
| 2nd | 1st |
+-------------------------------+-------------------------------+


In section 3.6.4, Rasterization of Pixel Rectangles, on page 102,
add the following to Table 3.12 (Packed pixel fiedl assignments):

First Second Third Fourth
Format Element Element Element Element
------ ------- ------- ------- -------
YCBCR_422_MESA luminance chroma


In section 3.8.1, Texture Image Specification, on page 125, add
another item to the list of TexImage2D and TexImage3D equivalence
exceptions:

* The value of internalformat and format may be YCBCR_MESA to
indicate that the image data is in YCbCr format. type must
be either UNSIGNED_SHORT_8_8_MESA or UNSIGNED_SHORT_8_8_REV_MESA
as seen in tables 3.8 and 3.10. Table 3.12 describes the mapping
between Y and Cb/Cr to the components.
If NV_texture_rectangle is supported target may also be
TEXTURE_RECTANGLE_NV or PROXY_TEXTURE_RECTANGLE_NV.
All pixel transfer operations are bypassed. The texture is stored as
YCbCr, not RGB. Queries of the texture's red, green and blue component
sizes will return zero.


In section 3.8.1, Texture Image Specification, on page 126, add
another item to the list of TexImage1D and TexImage2D equivalence
exceptions:

* The value of internalformat and format can not be YCBCR_MESA.


In section 3.8.2, Alternate Texture Image Specification Commands, on
page 129, insert this paragraph after the first full paragraph on the
page:

"If the internal storage format of the image being updated by
TexSubImage2D is YCBCR_MESA then format must be YCBCR_MESA.
The error INVALID_OPERATION will be generated otherwise."


Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment
Operations and the Frame Buffer)

None

Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions)

None

Additions to Chapter 6 of the OpenGL 1.4 Specification (State and
State Requests)

None

Additions to Appendix A of the OpenGL 1.4 Specification (Invariance)

None

Additions to the AGL/GLX/WGL Specifications

None

GLX Protocol

None

Errors

INVALID_ENUM is generated by TexImage2D if <internalFormat> is
MESA_YCBCR but <format> is not MESA_YCBCR.

INVALID_ENUM is generated by TexImage2D if <format> is MESA_YCBCR but
<internalFormat> is not MESA_YCBCR.

INVALID_VALUE is generated by TexImage2D if <format> is MESA_YCBCR and
<internalFormat> is MESA_YCBCR and <border> is not zero.

INVALID_OPERATION is generated by TexSubImage2D if the internal image
format is YCBCR_MESA and format is not YCBCR_MESA.

INVALID_OPERATION is generated by CopyTexSubImage2D if the internal
image is YCBCR_MESA.
New State

Edit table 6.16 on page 231: change the type of TEXTURE_INTERNAL_FORMAT
from n x Z42 to n x Z43 to indicate that internal format may also be
YCBCR_MESA.

Revision History

20 September 2002 - Initial draft

Loading…
取消
儲存