Name MESA_pack_invert Name Strings GL_MESA_pack_invert Contact Brian Paul, Tungsten Graphics, Inc. (brian.paul '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 define 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