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