15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    INTEL_framebuffer_CMAA
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GL_INTEL_framebuffer_CMAA
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci   Slawomir Grajewski,  Intel (slawomir.grajewski 'at' intel.com)
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContributors
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Devan Burke, Intel
165bd8deadSopenharmony_ci    Miroslaw Oksiucik, Intel
175bd8deadSopenharmony_ci    Jon Kennedy, Intel
185bd8deadSopenharmony_ci
195bd8deadSopenharmony_ciStatus
205bd8deadSopenharmony_ci
215bd8deadSopenharmony_ci    Complete, shipping on selected Intel graphics.
225bd8deadSopenharmony_ci
235bd8deadSopenharmony_ciVersion
245bd8deadSopenharmony_ci
255bd8deadSopenharmony_ci    Last Modified Date: June 26th, 2015
265bd8deadSopenharmony_ci    Revision: 1
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ciNumber
295bd8deadSopenharmony_ci
305bd8deadSopenharmony_ci    OpenGL Extension #481
315bd8deadSopenharmony_ci    OpenGL ES Extension #246
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ciDependencies
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ci    OpenGL dependencies:
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci        OpenGL 3.0 is required.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci        The extension is written against the OpenGL 4.5 Specification, Core
405bd8deadSopenharmony_ci        Profile, October 18, 2013.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ci    OpenGL ES dependencies:
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci        This extension is written against the OpenGL ES 3.1 specification,
455bd8deadSopenharmony_ci        June 4, 2014.
465bd8deadSopenharmony_ci
475bd8deadSopenharmony_ciOverview
485bd8deadSopenharmony_ci
495bd8deadSopenharmony_ci    Multisampling is a mechanism to antialias all GL primitives and is part of
505bd8deadSopenharmony_ci    the GL specification.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ci    Better visual quality can be achieved by applying multisampling. However,
535bd8deadSopenharmony_ci    on certain platforms it comes at a high performance cost. In general, the
545bd8deadSopenharmony_ci    greater number of samples per pixel, the bigger the cost.
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ci    Conservative Morphological Anti-Aliasing (CMAA) is an alternative approach
575bd8deadSopenharmony_ci    to antialiasing, which operates on the final image. This post processing
585bd8deadSopenharmony_ci    technique results in image quality comparable to multisampling at much
595bd8deadSopenharmony_ci    lower cost and better performance.
605bd8deadSopenharmony_ci
615bd8deadSopenharmony_ci    This extension incorporates an optimized CMAA algorithm implementation into
625bd8deadSopenharmony_ci    the GL implementation.
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ci    For more information on CMAA refer to http://software.intel.com.
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ciNew Procedures and Functions
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci    void ApplyFramebufferAttachmentCMAAINTEL();
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ciNew Tokens
715bd8deadSopenharmony_ci
725bd8deadSopenharmony_ci    None.
735bd8deadSopenharmony_ci
745bd8deadSopenharmony_ciAdd new Section 17.4.6 to Chapter 17.4, Whole Framebuffer Operations, OpenGL 4.5
755bd8deadSopenharmony_ci
765bd8deadSopenharmony_ci    17.4.6 Framebuffer post processing: Conservative Morphological Anti-Aliasting (CMMA)
775bd8deadSopenharmony_ci
785bd8deadSopenharmony_ciAdd new Section 15.2.5 to Chapter 15.2, Whole Framebuffer Operations, OpenGL ES 3.1
795bd8deadSopenharmony_ci
805bd8deadSopenharmony_ci    15.2.5 Framebuffer post processing: Conservative Morphological Anti-Aliasting (CMMA)
815bd8deadSopenharmony_ci
825bd8deadSopenharmony_ci    The post processing of current draw buffers pertaining to the framebuffer
835bd8deadSopenharmony_ci    bound to the DRAW_FRAMEBUFFER target according to the Conservative
845bd8deadSopenharmony_ci    Morphological Anti-Aliasing algorithm can be requested by calling
855bd8deadSopenharmony_ci
865bd8deadSopenharmony_ci    void ApplyFramebufferAttachmentCMAAINTEL();
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    Errors
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci        An INVALID_OPERATION error is generated if any of the current draw
915bd8deadSopenharmony_ci        buffers is multisampled.
925bd8deadSopenharmony_ci
935bd8deadSopenharmony_ci        An OUT_OF_MEMORY error may be generated if the GL implementation is
945bd8deadSopenharmony_ci        unable to allocate internal resources necessary to perform the
955bd8deadSopenharmony_ci        requested operation.
965bd8deadSopenharmony_ci
975bd8deadSopenharmony_ci    The CMAA post processing is performed in-place for all color attachments of
985bd8deadSopenharmony_ci    the currently bound draw framebuffer.
995bd8deadSopenharmony_ci
1005bd8deadSopenharmony_ciIssues
1015bd8deadSopenharmony_ci
1025bd8deadSopenharmony_ci    1. If an application wants to post process color attachments of different
1035bd8deadSopenharmony_ci    dimensions/internal formats, what is the best approach in terms of
1045bd8deadSopenharmony_ci    performance?
1055bd8deadSopenharmony_ci
1065bd8deadSopenharmony_ci       a. Attach the color attachment to the same framebuffer one after another
1075bd8deadSopenharmony_ci          for post processing?
1085bd8deadSopenharmony_ci
1095bd8deadSopenharmony_ci       b. For each color attachment create a dedicated framebuffer object that
1105bd8deadSopenharmony_ci          will be used for post processing?
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ci    RESOLVED: b.
1135bd8deadSopenharmony_ci
1145bd8deadSopenharmony_ci    Whilst both approaches are functionally correct, approach b is more
1155bd8deadSopenharmony_ci    performant as the GL implementation will allocate temporary resources per
1165bd8deadSopenharmony_ci    framebuffer object and will reuse those resources for subsequent post
1175bd8deadSopenharmony_ci    processing operations without the need to resize or re-allocate them.
1185bd8deadSopenharmony_ci
1195bd8deadSopenharmony_ci    2. Does the application have to perform any synchronization after requesting
1205bd8deadSopenharmony_ci       CMAA post processing?
1215bd8deadSopenharmony_ci
1225bd8deadSopenharmony_ci    RESOLVED: No.
1235bd8deadSopenharmony_ci
1245bd8deadSopenharmony_ci    From synchronization perspective, the post processing request behaves
1255bd8deadSopenharmony_ci    exactly as any draw request.
1265bd8deadSopenharmony_ci
1275bd8deadSopenharmony_ci    3. What happens if CMAA post processing is requested for the multisampled
1285bd8deadSopenharmony_ci       color attachment?
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    RESOLVED
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci    An INVALID_OPERATION error code is returned.
1335bd8deadSopenharmony_ci
1345bd8deadSopenharmony_ciRevision History
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci    1.2   08/04/15 sgrajewski   Minor clarifications.
1375bd8deadSopenharmony_ci    1.1   06/26/15 sgrajewski   Initial revision.
1385bd8deadSopenharmony_ci
139