blob: 39f75bd4b675599267f76b6e80b23b1ce4397144 [file] [log] [blame]
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.