• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    INTEL_framebuffer_CMAA
4
5Name Strings
6
7    GL_INTEL_framebuffer_CMAA
8
9Contact
10
11   Slawomir Grajewski,  Intel (slawomir.grajewski 'at' intel.com)
12
13Contributors
14
15    Devan Burke, Intel
16    Miroslaw Oksiucik, Intel
17    Jon Kennedy, Intel
18
19Status
20
21    Complete, shipping on selected Intel graphics.
22
23Version
24
25    Last Modified Date: June 26th, 2015
26    Revision: 1
27
28Number
29
30    OpenGL Extension #481
31    OpenGL ES Extension #246
32
33Dependencies
34
35    OpenGL dependencies:
36
37        OpenGL 3.0 is required.
38
39        The extension is written against the OpenGL 4.5 Specification, Core
40        Profile, October 18, 2013.
41
42    OpenGL ES dependencies:
43
44        This extension is written against the OpenGL ES 3.1 specification,
45        June 4, 2014.
46
47Overview
48
49    Multisampling is a mechanism to antialias all GL primitives and is part of
50    the GL specification.
51
52    Better visual quality can be achieved by applying multisampling. However,
53    on certain platforms it comes at a high performance cost. In general, the
54    greater number of samples per pixel, the bigger the cost.
55
56    Conservative Morphological Anti-Aliasing (CMAA) is an alternative approach
57    to antialiasing, which operates on the final image. This post processing
58    technique results in image quality comparable to multisampling at much
59    lower cost and better performance.
60
61    This extension incorporates an optimized CMAA algorithm implementation into
62    the GL implementation.
63
64    For more information on CMAA refer to http://software.intel.com.
65
66New Procedures and Functions
67
68    void ApplyFramebufferAttachmentCMAAINTEL();
69
70New Tokens
71
72    None.
73
74Add new Section 17.4.6 to Chapter 17.4, Whole Framebuffer Operations, OpenGL 4.5
75
76    17.4.6 Framebuffer post processing: Conservative Morphological Anti-Aliasting (CMMA)
77
78Add new Section 15.2.5 to Chapter 15.2, Whole Framebuffer Operations, OpenGL ES 3.1
79
80    15.2.5 Framebuffer post processing: Conservative Morphological Anti-Aliasting (CMMA)
81
82    The post processing of current draw buffers pertaining to the framebuffer
83    bound to the DRAW_FRAMEBUFFER target according to the Conservative
84    Morphological Anti-Aliasing algorithm can be requested by calling
85
86    void ApplyFramebufferAttachmentCMAAINTEL();
87
88    Errors
89
90        An INVALID_OPERATION error is generated if any of the current draw
91        buffers is multisampled.
92
93        An OUT_OF_MEMORY error may be generated if the GL implementation is
94        unable to allocate internal resources necessary to perform the
95        requested operation.
96
97    The CMAA post processing is performed in-place for all color attachments of
98    the currently bound draw framebuffer.
99
100Issues
101
102    1. If an application wants to post process color attachments of different
103    dimensions/internal formats, what is the best approach in terms of
104    performance?
105
106       a. Attach the color attachment to the same framebuffer one after another
107          for post processing?
108
109       b. For each color attachment create a dedicated framebuffer object that
110          will be used for post processing?
111
112    RESOLVED: b.
113
114    Whilst both approaches are functionally correct, approach b is more
115    performant as the GL implementation will allocate temporary resources per
116    framebuffer object and will reuse those resources for subsequent post
117    processing operations without the need to resize or re-allocate them.
118
119    2. Does the application have to perform any synchronization after requesting
120       CMAA post processing?
121
122    RESOLVED: No.
123
124    From synchronization perspective, the post processing request behaves
125    exactly as any draw request.
126
127    3. What happens if CMAA post processing is requested for the multisampled
128       color attachment?
129
130    RESOLVED
131
132    An INVALID_OPERATION error code is returned.
133
134Revision History
135
136    1.2   08/04/15 sgrajewski   Minor clarifications.
137    1.1   06/26/15 sgrajewski   Initial revision.
138
139