Name AMD_shader_fragment_mask Name Strings GL_AMD_shader_fragment_mask Contact Aaron Hagan, AMD (aaron.hagan 'at' amd.com) Contributors Aaron Hagan, AMD Timothy Lottes, AMD Daniel Rakos, AMD Status Pending Version Last Modified Date: 08/07/2017 Author Revision: 2 Number TBD Dependencies This extension is written against the OpenGL Shading Language Specification, Version 4.50. Overview This extension introduces new GLSL built-in functions enabling more efficient read access to fragment mask compressed multisampled color images. Implementations supporting this extension can avoid storing identical sample color values inside a single pixel. This is achieved by introducing the concept of color fragments and fragment masks. Color fragments are storage units inside a single pixel of a multisampled color image that can hold a unique color value. Each pixel then has a fragment mask which contains per sample indices that map a given color sample to a particular color fragment. This extension enables fetching the fragment mask and individual color fragments from a multisampled color image. IP Status None. New Procedures and Functions None. New Tokens None. Modifications to the OpenGL Shading Language Specification, Version 4.50 Including the following line in a shader can be used to control the language features described in this extension: #extension GL_AMD_shader_fmask : where is as specified in section 3.3. New preprocessor #defines are added to the OpenGL Shading Language: #define GL_AMD_shader_fragement_mask 1 Additions to Chapter 8 of the OpenGL Shading Language (GLSL) Specification, version 4.30 (Built-in functions) Add to the table of functions 8.9.2, "Texel Lookup Functions", p. 164 +-----------------------------------+-------------------------------------+ | Syntax | Description | +-----------------------------------+-------------------------------------+ | uint fragmentMaskFetchAMD( | Returns the fragment mask from a | | gsampler2DMS sampler, | multisampled color image. The | | ivec2 P) | fragment mask is a single uint where| | | each subsequent 4 bit specifies the | | uint fragmentMaskFetchAMD( | color fragment index corresponding | | gsampler2DMSArray sampler, | to the color sample, starting from | | ivec3 P) | the least significant bit. | | | | | uint fragmentMaskFetchAMD( | | | gsubpassInputMS subpass) | | +-----------------------------------+-------------------------------------+ | gvec4 fragmentFetchAMD( | Fetches a color fragment with a | | gsampler2DMS sampler, | correspoding fragment mask value. | | ivec2 P, | | | uint fragIndex) | | | | | | gvec4 fragmentFetchAMD( | | | gsampler2DMSArray sampler, | | | ivec3 P, | | | uint fragIndex)| | | | | | gvec4 fragmentFetchAMD( | | | gsubpassInputMS subpass, | | | uint fragIndex) | | +-----------------------------------+-------------------------------------+ Additions to the AGL/GLX/WGL Specifications None. GLX Protocol None. Errors None. Issues Revision History Rev. Date Author Changes ---- ---------- -------- ----------------------------------------------- 2 08/07/2017 ahagan Cleanup and prepared for posting. 1 04/24/2017 ahagan Initial draft.