Name INTEL_framebuffer_CMAA Name Strings GL_INTEL_framebuffer_CMAA Contact Slawomir Grajewski, Intel (slawomir.grajewski 'at' intel.com) Contributors Devan Burke, Intel Miroslaw Oksiucik, Intel Jon Kennedy, Intel Status Complete, shipping on selected Intel graphics. Version Last Modified Date: June 26th, 2015 Revision: 1 Number OpenGL Extension #481 OpenGL ES Extension #246 Dependencies OpenGL dependencies: OpenGL 3.0 is required. The extension is written against the OpenGL 4.5 Specification, Core Profile, October 18, 2013. OpenGL ES dependencies: This extension is written against the OpenGL ES 3.1 specification, June 4, 2014. Overview Multisampling is a mechanism to antialias all GL primitives and is part of the GL specification. Better visual quality can be achieved by applying multisampling. However, on certain platforms it comes at a high performance cost. In general, the greater number of samples per pixel, the bigger the cost. Conservative Morphological Anti-Aliasing (CMAA) is an alternative approach to antialiasing, which operates on the final image. This post processing technique results in image quality comparable to multisampling at much lower cost and better performance. This extension incorporates an optimized CMAA algorithm implementation into the GL implementation. For more information on CMAA refer to http://software.intel.com. New Procedures and Functions void ApplyFramebufferAttachmentCMAAINTEL(); New Tokens None. Add new Section 17.4.6 to Chapter 17.4, Whole Framebuffer Operations, OpenGL 4.5 17.4.6 Framebuffer post processing: Conservative Morphological Anti-Aliasting (CMMA) Add new Section 15.2.5 to Chapter 15.2, Whole Framebuffer Operations, OpenGL ES 3.1 15.2.5 Framebuffer post processing: Conservative Morphological Anti-Aliasting (CMMA) The post processing of current draw buffers pertaining to the framebuffer bound to the DRAW_FRAMEBUFFER target according to the Conservative Morphological Anti-Aliasing algorithm can be requested by calling void ApplyFramebufferAttachmentCMAAINTEL(); Errors An INVALID_OPERATION error is generated if any of the current draw buffers is multisampled. An OUT_OF_MEMORY error may be generated if the GL implementation is unable to allocate internal resources necessary to perform the requested operation. The CMAA post processing is performed in-place for all color attachments of the currently bound draw framebuffer. Issues 1. If an application wants to post process color attachments of different dimensions/internal formats, what is the best approach in terms of performance? a. Attach the color attachment to the same framebuffer one after another for post processing? b. For each color attachment create a dedicated framebuffer object that will be used for post processing? RESOLVED: b. Whilst both approaches are functionally correct, approach b is more performant as the GL implementation will allocate temporary resources per framebuffer object and will reuse those resources for subsequent post processing operations without the need to resize or re-allocate them. 2. Does the application have to perform any synchronization after requesting CMAA post processing? RESOLVED: No. From synchronization perspective, the post processing request behaves exactly as any draw request. 3. What happens if CMAA post processing is requested for the multisampled color attachment? RESOLVED An INVALID_OPERATION error code is returned. Revision History 1.2 08/04/15 sgrajewski Minor clarifications. 1.1 06/26/15 sgrajewski Initial revision.