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