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