| Name |
| |
| NV_pack_subimage |
| |
| Name Strings |
| |
| GL_NV_pack_subimage |
| |
| Contact |
| |
| Peter Pipkorn, NVIDIA Corporation (ppipkorn 'at' nvidia.com) |
| |
| Contributors |
| |
| Pat Brown, NVIDIA |
| Nicolai de Haan, NVIDIA |
| Greg Roth, NVIDIA |
| |
| Status |
| |
| Complete. |
| |
| Version |
| |
| Last Modifed Date: Oct 07, 2012 |
| Author Revision: 3 |
| |
| Number |
| |
| OpenGL ES Extension #132 |
| |
| Dependencies |
| |
| OpenGLES 2.0 is required. |
| |
| The extension is written against the OpenGL ES 2.0.25 specification. |
| |
| EXT_unpack_subimage is required. |
| |
| Overview |
| |
| This OpenGL ES 2.0 extension adds support for GL_PACK_ROW_LENGTH_NV, |
| GL_PACK_SKIP_ROWS_NV and GL_PACK_SKIP_PIXELS_NV as valid enums to |
| PixelStore. The functionality is the same as in OpenGL. These are |
| useful to update a sub-rectangle in host memory with data that can |
| be read from the framebuffer or a texture (using FBO and texture |
| attachments). |
| |
| New Procedures and Functions |
| |
| None |
| |
| New Tokens |
| |
| Accepted by the <pname> parameters of PixelStorei, |
| GetIntegerv, and GetFloatv: |
| |
| GL_PACK_ROW_LENGTH_NV 0x0D02 |
| GL_PACK_SKIP_ROWS_NV 0x0D03 |
| GL_PACK_SKIP_PIXELS_NV 0x0D04 |
| |
| Additions to the OpenGL ES 2.0 Specification |
| |
| Modifications to Table 3.4 (PixelStore parameters for ReadPixels) |
| |
| Add the following entries: |
| |
| Parameter Name Type Initial Value Valid Range |
| ============== ==== ============= =========== |
| PACK_ROW_LENGTH_NV integer 0 [0,Infinity) |
| PACK_SKIP_ROWS_NV integer 0 [0,Infinity) |
| PACK_SKIP_PIXELS_NV integer 0 [0,Infinity) |
| |
| |
| Note: The description of the behavior of the added PACK* PixelStore |
| parameters is covered by the following existing text from 4.3.1 |
| subsection "Placement in Client Memory": |
| |
| Groups of elements are placed in memory just as they are taken |
| from memory for TexImage2D. That is, the ith group of the jth |
| row (corresponding to the ith pixel in the jth row) is placed in |
| memory just where the ith group of the jth row would be taken |
| from for TexImage2D. See Unpacking under section 3.6.2. The only |
| difference is that the storage mode parameters whose names begin |
| with PACK_ are used instead of those whose names begin with |
| UNPACK_. |
| |
| The equivalent UNPACK_ storage mode parametes are documented by the |
| text added by EXT_unpack_subimage. As such, no additional |
| documentation language is required here. |
| |
| Errors |
| |
| None |
| |
| New State |
| |
| Modifications to Table 6.12 Pixels in section 6.2 State Tables: |
| |
| Get Value Type Get Cmnd Initial Description Sec. Attribute |
| Value |
| ==================== ==== =========== ======= ============================ ===== =========== |
| PACK_ROW_LENGTH_NV Z+ GetIntegerv 0 Value of PACK_ROW_LENGTH_NV 4.3.1 pixel-store |
| PACK_SKIP_ROWS_NV Z+ GetIntegerv 0 Value of PACK_SKIP_ROWS_NV 4.3.1 pixel-store |
| PACK_SKIP_PIXELS_NV Z+ GetIntegerv 0 Value of PACK_SKIP_PIXELS_NV 4.3.1 pixel-store |
| |
| |
| Issues |
| |
| 1. Can't this be done with repeated calls to ReadPixels? |
| |
| RESOLVED: Yes, it is possible to pack pixels into a sub- |
| rectangle in host memory by by calling this function for one |
| line at a time with <height> of 1 advancing the <data> pointer |
| each time, but this could add unnecessary burden on the CPU |
| system. Specifying GL_PACK_ROW_LENGTH_NV makes it possible to |
| pack sub-rectangles of pixels with lower overhead. |
| |
| 2. Should the corresponding UNPACK enums be added? |
| |
| RESOLVED: No, it should be done in a separate extension. There |
| is no functional dependency between the PACK enums and the |
| UNPACK enums. However, there is a language dependency. This |
| extension extends the language added by EXT_unpack_subimage. |
| Since this is intended to ship on platforms that support both, |
| Nothing is lost by adding a dependency for this reason. |
| |
| 3. Are these PACK_SKIP_* tokens strictly necessary? |
| |
| RESOLVED: No. The same functionality can be achieved by |
| advancing the pixel pointer to host memory appropriately before |
| issuing an packing function call. They are included here for |
| both completeness and for convenience. |
| |
| 4. Should PACK_SKIP_IMAGES and PACK_IMAGE_HEIGHT be included? |
| |
| RESOLVED: No. Without support for GetTexImage, their inclusion |
| makes less sense. The UNPACK_* equivalents were also left out |
| of EXT_unpack_subimage, which makes adding them here more |
| complicated to do right. |
| |
| Revision History |
| Rev. Date Author Changes |
| ---- ------------ --------- ------------------------------------- |
| 3 07 Nov 2012 groth Added issue clarifications and a note |
| about existing spec language. |
| 2 23 Oct 2012 groth Removed references to 3D texture images. |
| 1 02 Oct 2009 ppipkorn Original draft. |
| |