1 Name 2 3 MESA_pack_invert 4 5 Name Strings 6 7 GL_MESA_pack_invert 8 9 Contact 10 11 Brian Paul, Tungsten Graphics, Inc. (brian.paul 'at' tungstengraphics.com) 12 Keith Whitwell, Tungsten Graphics, Inc. (keith 'at' tungstengraphics.com) 13 14 Status 15 16 Shipping (Mesa 4.0.4 and later) 17 18 Version 19 20 1.0 21 22 Number 23 24 TBD 25 26 Dependencies 27 28 OpenGL 1.0 or later is required 29 This extensions is written against the OpenGL 1.4 Specification. 30 31 Overview 32 33 This extension adds a new pixel storage parameter to indicate that 34 images are to be packed in top-to-bottom order instead of OpenGL's 35 conventional bottom-to-top order. Only pixel packing can be 36 inverted (i.e. for glReadPixels, glGetTexImage, glGetConvolutionFilter, 37 etc). 38 39 Almost all known image file formats store images in top-to-bottom 40 order. As it is, OpenGL reads images from the frame buffer in 41 bottom-to-top order. Thus, images usually have to be inverted before 42 writing them to a file with image I/O libraries. This extension 43 allows images to be read such that inverting isn't needed. 44 45 IP Status 46 47 None 48 49 Issues 50 51 1. Should we also define UNPACK_INVERT_MESA for glDrawPixels, etc? 52 53 Resolved: No, we're only concerned with pixel packing. There are other 54 solutions for inverting images when using glDrawPixels (negative Y pixel 55 zoom) or glTexImage (invert the vertex T coordinates). It would be easy 56 enough to define a complementary extension for pixel packing in the 57 future if needed. 58 59 New Procedures and Functions 60 61 None 62 63 New Tokens 64 65 Accepted by the <pname> parameter of PixelStorei and PixelStoref 66 and the <pname> parameter of GetIntegerv, GetFloatv, GetDoublev 67 and GetBooleanv: 68 69 PACK_INVERT_MESA 0x8758 70 71 Additions to Chapter 2 of the OpenGL 1.4 Specification (OpenGL Operation) 72 73 None 74 75 Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization) 76 77 None 78 79 Additions to Chapter 4 of the OpenGL 1.4 Specification (Per-Fragment 80 Operations and the Frame Buffer) 81 82 Add the following entry to table 4.4 (PixelStore parameters) on page 182: 83 84 Parameter Name Type Initial Value Valid Range 85 --------------------------------------------------------- 86 PACK_INVERT_MESA boolean FALSE TRUE/FALSE 87 88 In the section labeled "Placement in Client Memory" on page 184 89 insert the following text into the paragraph before the sentence 90 that starts with "If the format is RED, GREEN, BLUE...": 91 92 "The parameter PACK_INVERT_MESA controls whether the image is packed 93 in bottom-to-top order (the default) or top-to-bottom order. Equation 94 3.8 is modified as follows: 95 96 ... the first element of the Nth row is indicated by 97 98 p + Nk, if PACK_INVERT_MESA is false 99 p + k * (H - 1) - Nk, if PACK_INVERT_MESA is true, where H is the 100 image height 101 " 102 103 Additions to Chapter 5 of the OpenGL 1.4 Specification (Special Functions) 104 105 None 106 107 Additions to Chapter 6 of the OpenGL 1.4 Specification (State and 108 State Requests) 109 110 None 111 112 Additions to Appendix A of the OpenGL 1.4 Specification (Invariance) 113 114 None 115 116 Additions to the AGL/GLX/WGL Specifications 117 118 None 119 120 GLX Protocol 121 122 None 123 124 Errors 125 126 None 127 128 New State 129 130 Add the following entry to table 6.20 (Pixels) on page 235: 131 132 Get Value Type Get Cmd Initial Value Description Sec Attribute 133 -------------------------------------------------------------------------------------------------- 134 PACK_INVERT_MESA boolean GetBoolean FALSE Value of PACK_INVERT_MESA 4.3.2 pixel-store 135 136 Revision History 137 138 21 September 2002 - Initial draft 139