diff options
Diffstat (limited to 'glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt')
-rw-r--r-- | glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt new file mode 100644 index 0000000..847a749 --- /dev/null +++ b/glew/auto/EGL-Registry/extensions/ARM/EGL_ARM_pixmap_multisample_discard.txt @@ -0,0 +1,185 @@ +Name + + ARM_pixmap_multisample_discard + +Name Strings + + EGL_ARM_pixmap_multisample_discard + +Contributors + + Arne Bergene Fossaa + Tom Cooksey + Endre Sund + David Garbett + +Contacts + + Tom Cooksey (tom 'dot' cooksey 'at' arm 'dot' com) + +Status + + Complete. + +Version + + Version 1, March 5, 2013 + +Number + + EGL Extension #54 + +Dependencies + + EGL 1.0 is required. + + This extension is written against the wording of the EGL 1.4 Specification. + +Overview + + ARM_pixmap_multisample_discard adds an attribute to eglCreatePixmapSurface + that allows the client API implementation to resolve a multisampled pixmap + surface, therefore allowing the multisample buffer to be discarded. + + Some GPU architectures - such as tile-based renderers - are capable of + performing multisampled rendering by storing multisample data in internal + high-speed memory and downsampling the data when writing out to external + memory after rendering has finished. Since per-sample data is never written + out to external memory, this approach saves bandwidth and storage space. In + this case multisample data gets discarded, however this is acceptable in + most cases. + + The extension provides the EGL_DISCARD_SAMPLES_ARM attribute that allows + for implicit resolution when rendering to a pixmap surface. This complements + the OpenGL ES EXT_multisampled_render_to_texture extension which provides + similar functionality for rendering to an OpenGL ES texture. + +New Types + + None + +New Procedures and Functions + + None + +New Tokens + + Accepted as an attribute name in the <attrib_list> argument of + eglCreatePixmapSurface and by the <attribute> parameter of eglQuerySurface: + + EGL_DISCARD_SAMPLES_ARM 0x3286 + +Changes to Chapter 3 of the EGL 1.4 Specification (EGL Functions and Errors) + + Modify the second paragraph under "The Multisample Buffer" of Section 3.4, + page 18 (Configuration Management) + + "Operations such as posting a surface with eglSwapBuffers (see section + 3.9.1, copying a surface with eglCopyBuffers (see section 3.9.2), reading + from the color buffer using client API commands, binding a client API + context to a surface (see section 3.7.3), and flushing to a pixmap surface + created with the EGL_DISCARD_SAMPLES_ARM attribute enabled (see + section 3.5.4) may cause resolution of the multisample buffer to the color + buffer." + + Modify the fifth paragraph under "The Multisample Buffer" of Section 3.4, + page 18 (Configuration Management) + + "There are no single-sample depth or stencil buffers for a multisample + EGLConfig, or with a pixmap surface created with the + EGL_DISCARD_SAMPLES_ARM attribute (see section 3.5.4). The only depth and + stencil buffers are those in the multisample buffer. If the color samples + in the multisample buffer store fewer bits than are stored in the color + buffers, this fact will not be reported accurately. Presumably a + compression scheme is being employed, and is expected to maintain an + aggregate resolution equal to that of the color buffers." + + Modify the fifth paragraph of Section 3.5.4, page 34 (Creating Native + Pixmap Rendering Surfaces) + + "attrib list specifies a list of attributes for the pixmap. The list has the + same structure as described for eglChooseConfig. Attributes that can be + specified in attrib list include EGL_VG_COLORSPACE, EGL_VG_ALPHA_FORMAT and + EGL_DISCARD_SAMPLES_ARM." + + Add the following between paragraphs eight and nine of Section 3.5.4, + page 34 (Creating Native Pixmap Rendering Surfaces) + + "EGL_DISCARD_SAMPLES_ARM specifies whether the client API implementation is + allowed to implicitly resolve the multisample buffer. On some GPU + architectures - such as tile-based renderers - an implicit resolve can avoid + writing the multisample buffer back to external memory as the multisample + data is stored in internal high-speed memory. + + The implicit resolve can occur when the client API uses the pixmap as the + source or destination of any operation, when flushing to the pixmap or when + the client API unbinds (or breaks) the pixmap. When these operations occur + is dependent on the client API implementation. They can occur as an explicit + part of client API functions (such as glFinish, glReadPixels and + glCopyTexImage) or they can occur implicitly. + + Further rendering causes the implementation to read the surface buffer and + any ancillary buffers back in as single-sampled data. + Therefore use of this attribute may result in lower quality images. + + Valid values are EGL_TRUE, in which case the multisample buffer can be + discarded, or EGL_FALSE, in which case the multisample buffer is preserved. + The default value is EGL_FALSE. + + Note that the multisample buffer may be discarded during eglMakeCurrent + regardless of the value of the EGL_DISCARD_SAMPLES_ARM attribute (see + section 3.7.3)." + + Modify the ninth paragraph of Section 3.5.4, page 34 (Creating Native + Pixmap Rendering Surfaces) + + "On failure eglCreatePixmapSurface returns EGL_NO_SURFACE. If the attributes + of pixmap do not correspond to config, then an EGL_BAD_MATCH error is + generated. If config does not support rendering to pixmaps (the + EGL_SURFACE_TYPE attribute does not contain EGL_PIXMAP_BIT), an + EGL_BAD_MATCH error is generated. If config does not support the colorspace + or alpha format attributes specified in attriblist (as defined for + eglCreateWindowSurface), an EGL_BAD_MATCH error is generated. If config does + not specify non-zero EGL_SAMPLES and EGL_SAMPLE_BUFFERS and the + EGL_DISCARD_SAMPLES_ARM attribute is set to EGL_TRUE, then an EGL_BAD_MATCH + error is generated. If config is not a valid EGLConfig, an EGL_BAD_CONFIG + error is generated. If pixmap is not a valid native pixmap handle, then an + EGL_BAD_NATIVE_PIXMAP error should be generated. If there is already an + EGLSurface associated with pixmap (as a result of a previous + eglCreatePixmapSurface call), then a EGL_BAD_ALLOC error is generated. + Finally, if the implementation cannot allocate resources for the new EGL + pixmap, an EGL_BAD_ALLOC error is generated." + + + Add the following entry to Table 3.5, page 36 + (Queryable surface attributes and types) + + Attribute Type Description + ------------------------- ------- --------------------------------------- + EGL_DISCARD_SAMPLES_ARM boolean Multisample resolve when flushing to + surface + + Add the following paragraph before the last paragraph of Section 3.5.7, + page 38 (Surface Attributes) + + "Querying EGL_DISCARD_SAMPLES_ARM returns whether a multisample resolve + is forced on every flush to the surface (see section 3.5.4). This will only + return EGL_TRUE for pixmap surfaces created with the EGL_DISCARD_SAMPLES_ARM + attribute set to EGL_TRUE. EGL_FALSE will be returned for window and + pbuffer surfaces." + +Issues + + 1. Should eglSurfaceAttrib accept EGL_DISCARD_SAMPLES_ARM? + RESOLVED: No. The attribute should be decided at surface creation time. + + 2. Should eglCreateWindowSurface or eglCreatePbufferSurface accept + EGL_DISCARD_SAMPLES_ARM? + RESOLVED: No. While the attribute could equally apply to window and + pbuffer surfaces, no use case has been identified to justify the + additional maintenance this would require. + +Revision History + + Version 1, 2013/03/05 - Original release. + |