15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARM_shader_framebuffer_fetch 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARM_shader_framebuffer_fetch 85bd8deadSopenharmony_ci 95bd8deadSopenharmony_ciContributors 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ci Aske Simon Christensen 125bd8deadSopenharmony_ci Sandeep Kakarlapudi 135bd8deadSopenharmony_ci 145bd8deadSopenharmony_ciContact 155bd8deadSopenharmony_ci 165bd8deadSopenharmony_ci Jan-Harald Fredriksen (jan-harald.fredriksen 'at' arm.com) 175bd8deadSopenharmony_ci 185bd8deadSopenharmony_ciStatus 195bd8deadSopenharmony_ci 205bd8deadSopenharmony_ci Shipping. 215bd8deadSopenharmony_ci 225bd8deadSopenharmony_ciVersion 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ci Revision 12 255bd8deadSopenharmony_ci Last Modified Date: November 25, 2013 265bd8deadSopenharmony_ci 275bd8deadSopenharmony_ciNumber 285bd8deadSopenharmony_ci 295bd8deadSopenharmony_ci OpenGL ES Extension #165 305bd8deadSopenharmony_ci 315bd8deadSopenharmony_ciDependencies 325bd8deadSopenharmony_ci 335bd8deadSopenharmony_ci OpenGL ES 2.0 or higher is required. 345bd8deadSopenharmony_ci 355bd8deadSopenharmony_ci ESSL 1.00 or higher is required. 365bd8deadSopenharmony_ci 375bd8deadSopenharmony_ci This extension is written against the OpenGL ES Shading Language 385bd8deadSopenharmony_ci specification, Language Version 1.00, Document Revision 17 and revision 395bd8deadSopenharmony_ci OpenGL ES 2.0.25 of the API specification. 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ciOverview 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ci This extension enables fragment shaders to read existing framebuffer 445bd8deadSopenharmony_ci data as input. This permits use-cases such as programmable blending, 455bd8deadSopenharmony_ci and other operations that may not be possible to implement with 465bd8deadSopenharmony_ci fixed-function blending. 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci This extension also adds the ability to indicate that a shader should 495bd8deadSopenharmony_ci be run once per sample instead of once per pixel. 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ci Reading framebuffer data as input in combination with multiple render 525bd8deadSopenharmony_ci targets (MRT) may not be supported by all implementations. This 535bd8deadSopenharmony_ci extension allows applications to query for this capability. 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ciNew Procedures and Functions 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci None 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ciNew Tokens 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, 625bd8deadSopenharmony_ci and by the <pname> parameter of GetBooleanv, GetIntegerv, and GetFloatv: 635bd8deadSopenharmony_ci FETCH_PER_SAMPLE_ARM 0x8F65 645bd8deadSopenharmony_ci 655bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, and 665bd8deadSopenharmony_ci GetFloatv: 675bd8deadSopenharmony_ci FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ciNew Macro Definitions 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ci #define GL_ARM_shader_framebuffer_fetch 1 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ciNew Built-in Variables 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci mediump vec4 gl_LastFragColorARM 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ciChanges to the OpenGL ES 2.0.25 Specification, Chapter 3 785bd8deadSopenharmony_ci 795bd8deadSopenharmony_ci Remove the last sentence of Paragraph 2 of Chapter 3.8.1, page 86 ("These 805bd8deadSopenharmony_ci built-in varying variables include [...]" and add: 815bd8deadSopenharmony_ci 825bd8deadSopenharmony_ci "These built-in varying variables include the fragment's position, eye z 835bd8deadSopenharmony_ci coordinate, and front-facing flag, as well as the current color value in the 845bd8deadSopenharmony_ci framebuffer. 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci When reading the current color value from the framebuffer, the values 875bd8deadSopenharmony_ci associated with the image attached to color attachment point 0 are returned. 885bd8deadSopenharmony_ci 895bd8deadSopenharmony_ci Reading the current color value from the framebuffer may not be supported on 905bd8deadSopenharmony_ci all hardware if more than one color attachment has an image attached. This 915bd8deadSopenharmony_ci capability can be determined by calling GetBooleanv with the symbolic 925bd8deadSopenharmony_ci constant FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM. If FALSE is returned, 935bd8deadSopenharmony_ci shaders that read the current value from the framebuffer when more than one 945bd8deadSopenharmony_ci color attachment point has an image attached produce undefined results. 955bd8deadSopenharmony_ci 965bd8deadSopenharmony_ci Reading the current color value from the framebuffer is only supported for 975bd8deadSopenharmony_ci fixed-point color components. Undefined results are produced if a shader 985bd8deadSopenharmony_ci reads from gl_LastFragColorARM while either no image is attached to color 995bd8deadSopenharmony_ci attachment 0 or the image attached to color attachment point 0 has a format 1005bd8deadSopenharmony_ci that is not unsigned normalized fixed-point. No error is generated in this 1015bd8deadSopenharmony_ci case. 1025bd8deadSopenharmony_ci 1035bd8deadSopenharmony_ci Add to Chapter 3.2 Multisampling: 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci "Per-sample fetch can be used to specify that reads of current values from 1065bd8deadSopenharmony_ci the framebuffer, colors and other associated data, including varying 1075bd8deadSopenharmony_ci interpolation, should be evaluated for each sample. Per-sample fetch 1085bd8deadSopenharmony_ci is controlled by by calling Enable or Disable with the symbolic constant 1095bd8deadSopenharmony_ci FETCH_PER_SAMPLE_ARM. 1105bd8deadSopenharmony_ci 1115bd8deadSopenharmony_ci If SAMPLE_BUFFERS is not one, or the fragment shader does not statically 1125bd8deadSopenharmony_ci access current values from the framebuffer, per-sample fetch has no effect." 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL ES Shading Language Specification 1155bd8deadSopenharmony_ci 1165bd8deadSopenharmony_ci Remove Paragraph 2 of section 3.8, page 17, Identifiers ("Identifiers 1175bd8deadSopenharmony_ci starting with "gl_" are reserved [...]") and add: 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ci "Identifiers starting with "gl_" are reserved for use by OpenGL ES, and 1205bd8deadSopenharmony_ci may not be declared in a shader as either a variable or a function. 1215bd8deadSopenharmony_ci However, as noted in the specification, certain predeclared "gl_" names 1225bd8deadSopenharmony_ci are allowed to be redeclared in a shader for the specific purpose of 1235bd8deadSopenharmony_ci changing their precision qualifier." 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ciAdditions to Chapter 7 of the OpenGL ES Shading Language Specification 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci In section 7.2 (Fragment Shader Special Variables), after the 1285bd8deadSopenharmony_ci 8th paragraph ("If the shader executes the discard keyword,") and before 1295bd8deadSopenharmony_ci the paragraph on about gl_FragCoord, add: 1305bd8deadSopenharmony_ci 1315bd8deadSopenharmony_ci "The fragment shader has access to the read-only built-in 1325bd8deadSopenharmony_ci variable gl_LastFragColorARM. The value of this variable is the 1335bd8deadSopenharmony_ci color of the pixel to which the current fragment is destined, i.e., 1345bd8deadSopenharmony_ci the color that will be used as the destination color during blending, 1355bd8deadSopenharmony_ci for draw buffer 0. 1365bd8deadSopenharmony_ci 1375bd8deadSopenharmony_ci If the current render target is multisampled, and the destination 1385bd8deadSopenharmony_ci pixel thus contains more than one sample per fragment, the value of 1395bd8deadSopenharmony_ci gl_LastFragColorARM is an implementation-dependent combination of the 1405bd8deadSopenharmony_ci samples within the destination pixel that are covered by the current 1415bd8deadSopenharmony_ci fragment. The value will be between the minium and maximum value of the 1425bd8deadSopenharmony_ci samples in the pixel. 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ci If the current GL state would cause the destination color to be 1455bd8deadSopenharmony_ci converted from sRGB to linear at input to blending, then the color read 1465bd8deadSopenharmony_ci from the framebuffer is converted from sRGB to linear before going into 1475bd8deadSopenharmony_ci gl_LastFragColorARM. If the destination pixel contains more than one 1485bd8deadSopenharmony_ci sample, this conversion is applied to each color sample prior to the 1495bd8deadSopenharmony_ci averaging. 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ci If no samples within the destination pixel are covered by the current 1525bd8deadSopenharmony_ci fragment, the value of gl_LastFragColorARM is undefined. 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci If more than one color attachment has an image attached, reads from 1555bd8deadSopenharmony_ci gl_LastFragColorARM, may produce undefined results. This is, however, 1565bd8deadSopenharmony_ci not an error. See section 3.8.1 "Shader Variables" of the OpenGL ES 1575bd8deadSopenharmony_ci 2.0.25 Graphics System Specification for more details. 1585bd8deadSopenharmony_ci 1595bd8deadSopenharmony_ci gl_LastFragColorARM is declared with a default precision qualifier. 1605bd8deadSopenharmony_ci This can be changed by redeclaring the variable with the desired 1615bd8deadSopenharmony_ci precision qualifier. Redeclarations must be at global scope and must 1625bd8deadSopenharmony_ci not otherwise alter the declared type of the variable. 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci Reads from gl_LastFragColorARM must wait for the processing of all 1655bd8deadSopenharmony_ci previous fragments destined for the current pixel to complete. For best 1665bd8deadSopenharmony_ci performance, it is therefore recommended that reads from this built-in 1675bd8deadSopenharmony_ci variable is done as late in the execution of the fragment shader as 1685bd8deadSopenharmony_ci possible. 1695bd8deadSopenharmony_ci 1705bd8deadSopenharmony_ci Access to gl_LastFragColorARM is optional, and must be enabled by: 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci #extension GL_ARM_shader_framebuffer_fetch : <behavior> 1735bd8deadSopenharmony_ci 1745bd8deadSopenharmony_ci Where <behavior> is as specified in section 3.4." 1755bd8deadSopenharmony_ci 1765bd8deadSopenharmony_ci In section 7.2 (Fragment Shader Special Variables), at the end of 1775bd8deadSopenharmony_ci the list of built-in variables, add: 1785bd8deadSopenharmony_ci 1795bd8deadSopenharmony_ci "mediump vec4 gl_LastFragColorARM" 1805bd8deadSopenharmony_ci 1815bd8deadSopenharmony_ciErrors 1825bd8deadSopenharmony_ci 1835bd8deadSopenharmony_ci None 1845bd8deadSopenharmony_ci 1855bd8deadSopenharmony_ciNew State 1865bd8deadSopenharmony_ci 1875bd8deadSopenharmony_ci Add to table 6.6 (Multisampling): 1885bd8deadSopenharmony_ci 1895bd8deadSopenharmony_ci Get Value Get Command Type Initial Value Description 1905bd8deadSopenharmony_ci --------- ----------- ---- ------------- --------- 1915bd8deadSopenharmony_ci FETCH_PER_SAMPLE_ARM IsEnabled B FALSE Per-sample fetch enabled 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ciNew Implementation Dependent State 1945bd8deadSopenharmony_ci 1955bd8deadSopenharmony_ci Add to table 6.19 (Implementation Dependent Values (cont.)): 1965bd8deadSopenharmony_ci 1975bd8deadSopenharmony_ci Get Value Type Get Command Minimum Value Description Section 1985bd8deadSopenharmony_ci --------- ---- ----------- ------------- -------------- ------- 1995bd8deadSopenharmony_ci FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM B GetBooleanv - Reading existing 3.8.1 2005bd8deadSopenharmony_ci framebuffer color data 2015bd8deadSopenharmony_ci from a fragment 2025bd8deadSopenharmony_ci shader when more than 2035bd8deadSopenharmony_ci one color attachment 2045bd8deadSopenharmony_ci point has an image attached 2055bd8deadSopenharmony_ci gives defined results. 2065bd8deadSopenharmony_ci 2075bd8deadSopenharmony_ciIssues 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ci (1) What should the built-in variables be called? 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci RESOLVED. 2125bd8deadSopenharmony_ci 2135bd8deadSopenharmony_ci In the current implementation, it is called gl_FBColor, but 2145bd8deadSopenharmony_ci since we need to change that anyway for the public version (to 2155bd8deadSopenharmony_ci add the ARM suffix), we could change the name completely if we 2165bd8deadSopenharmony_ci come up with something better. 2175bd8deadSopenharmony_ci 2185bd8deadSopenharmony_ci The current proposal is to use gl_LastFragColorARM as in 2195bd8deadSopenharmony_ci NV_shader_framebuffer_fetch with an added extension post-fix. 2205bd8deadSopenharmony_ci This could then be extended to include 2215bd8deadSopenharmony_ci gl_LastFragDataARM[gl_MaxDrawBuffers] as in EXT_framebuffer_fetch in a 2225bd8deadSopenharmony_ci future extension. 2235bd8deadSopenharmony_ci 2245bd8deadSopenharmony_ci (2) What should the precision of gl_LastFragColorARM be? 2255bd8deadSopenharmony_ci 2265bd8deadSopenharmony_ci RESOLVED. 2275bd8deadSopenharmony_ci 2285bd8deadSopenharmony_ci Is it usually appropriate for the variable to be mediump (or 2295bd8deadSopenharmony_ci perhaps lowp), but that precludes the mechanism from being 2305bd8deadSopenharmony_ci used effectively with float32 render targets. float32 render targets 2315bd8deadSopenharmony_ci are not required in either OpenGL ES 2.0 or OpenGL ES 3.0. 2325bd8deadSopenharmony_ci 2335bd8deadSopenharmony_ci gl_LastFragColor is currently defined as mediump by default, but the 2345bd8deadSopenharmony_ci precision can be redeclared in the shader in the same manner as in 2355bd8deadSopenharmony_ci EXT_shader_framebuffer_fetch. 2365bd8deadSopenharmony_ci 2375bd8deadSopenharmony_ci (3) What should the precision of gl_LastFragDepthARM be? 2385bd8deadSopenharmony_ci 2395bd8deadSopenharmony_ci RESOLVED. 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci No longer relevant for this extension as the depth buffer support 2425bd8deadSopenharmony_ci has been split out to a separate extension. 2435bd8deadSopenharmony_ci 2445bd8deadSopenharmony_ci (4) Which framebuffer formats are supported? 2455bd8deadSopenharmony_ci 2465bd8deadSopenharmony_ci RESOLVED. 2475bd8deadSopenharmony_ci 2485bd8deadSopenharmony_ci All UNORM formats are supported. No other formats are supported. 2495bd8deadSopenharmony_ci 2505bd8deadSopenharmony_ci Since gl_LastFragColor is a built-in variable, with a given 2515bd8deadSopenharmony_ci type, other types are not trivial to add. 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci (5) Should there be a query for the valid framebuffer formats? 2545bd8deadSopenharmony_ci 2555bd8deadSopenharmony_ci RESOLVED. 2565bd8deadSopenharmony_ci 2575bd8deadSopenharmony_ci If only some formats are supported, the application needs some 2585bd8deadSopenharmony_ci way to determine which formats are supported and which are not. 2595bd8deadSopenharmony_ci 2605bd8deadSopenharmony_ci Alternatives: 2615bd8deadSopenharmony_ci A) Specify the exact set of formats in the extension. 2625bd8deadSopenharmony_ci B) Add a query, for example something based on the internal format 2635bd8deadSopenharmony_ci queries in OpenGL ES 3.0. 2645bd8deadSopenharmony_ci 2655bd8deadSopenharmony_ci Given the resolution of Issue 4, alternative A is effectively 2665bd8deadSopenharmony_ci chosen. 2675bd8deadSopenharmony_ci 2685bd8deadSopenharmony_ci (6) What performance recommendations should the extension contain? 2695bd8deadSopenharmony_ci 2705bd8deadSopenharmony_ci RESOLVED. 2715bd8deadSopenharmony_ci 2725bd8deadSopenharmony_ci There is currently a recommendation to place the framebuffer 2735bd8deadSopenharmony_ci read as late as possible in the shader. 2745bd8deadSopenharmony_ci 2755bd8deadSopenharmony_ci (7) Should gl_LastFragStencil and gl_LastFragDepth be split into 2765bd8deadSopenharmony_ci separate extensions? 2775bd8deadSopenharmony_ci 2785bd8deadSopenharmony_ci RESOLVED. 2795bd8deadSopenharmony_ci 2805bd8deadSopenharmony_ci Yes. This is is now added by ARM_shader_framebuffer_fetch_depth_stencil. 2815bd8deadSopenharmony_ci 2825bd8deadSopenharmony_ci (8) Should shaders that read the current fragment color, depth, or stencil 2835bd8deadSopenharmony_ci be run per-sample? 2845bd8deadSopenharmony_ci 2855bd8deadSopenharmony_ci RESOLVED. 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci The EXT_framebuffer_fetch extension automatically runs the parts of the 2885bd8deadSopenharmony_ci shader that depend on gl_LastFragData per sample if this variable is 2895bd8deadSopenharmony_ci read. In some use-cases (e.g., tone-mapping), this is important to 2905bd8deadSopenharmony_ci avoid shader aliasing. This approach is, however, not possible to 2915bd8deadSopenharmony_ci implement on all hardware. 2925bd8deadSopenharmony_ci 2935bd8deadSopenharmony_ci An alternative is to allow the application to control the shader 2945bd8deadSopenharmony_ci iteration rate. This could be done similarly to the API part of 2955bd8deadSopenharmony_ci ARB_sample_shading. 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci The latter approach is taken by this extension. 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ci (9) Should the value read back include only the samples covered by the 3005bd8deadSopenharmony_ci current fragment? 3015bd8deadSopenharmony_ci 3025bd8deadSopenharmony_ci RESOLVED. 3035bd8deadSopenharmony_ci 3045bd8deadSopenharmony_ci Yes, only the samples covered by the current fragment will be read back. 3055bd8deadSopenharmony_ci 3065bd8deadSopenharmony_ci The alternative would be to ignore the coverage mask when returning the 3075bd8deadSopenharmony_ci value, but this seems less desirable. 3085bd8deadSopenharmony_ci 3095bd8deadSopenharmony_ci If the shader is run per sample (see Issue 8) both options would 3105bd8deadSopenharmony_ci give the same result. 3115bd8deadSopenharmony_ci 3125bd8deadSopenharmony_ci (10)How is this different from EXT_shader_framebuffer_fetch? 3135bd8deadSopenharmony_ci 3145bd8deadSopenharmony_ci RESOLVED. 3155bd8deadSopenharmony_ci 3165bd8deadSopenharmony_ci The core functionality is the same, that is, fragment shaders may read 3175bd8deadSopenharmony_ci existing framebuffer data as input. 3185bd8deadSopenharmony_ci 3195bd8deadSopenharmony_ci The two main differences are: 3205bd8deadSopenharmony_ci * This extension places the mechanism for running the shader per sample 3215bd8deadSopenharmony_ci under application control. It is not possible to run only those parts 3225bd8deadSopenharmony_ci of the shader that depend on the current framebuffer color per 3235bd8deadSopenharmony_ci sample. 3245bd8deadSopenharmony_ci * This extension may not be compatible with multiple render targets on 3255bd8deadSopenharmony_ci all hardware. 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ci (11) What is meant by undefined results in this extension? 3285bd8deadSopenharmony_ci 3295bd8deadSopenharmony_ci RESOLVED. 3305bd8deadSopenharmony_ci 3315bd8deadSopenharmony_ci Reads from gl_LastFragColorARM may return undefined results in some 3325bd8deadSopenharmony_ci cases as described in the text. This means that there is no guarantees 3335bd8deadSopenharmony_ci on the exact value returned in these cases. The values will typically 3345bd8deadSopenharmony_ci be a GPU specific 'default' value, or correspond to the API clear value. 3355bd8deadSopenharmony_ci It is guaranteed that these values will never originate from other GL 3365bd8deadSopenharmony_ci contexts or applications. 3375bd8deadSopenharmony_ci 3385bd8deadSopenharmony_ciRevision History 3395bd8deadSopenharmony_ci 3405bd8deadSopenharmony_ci Revision 12, 25/11/2013 (Jan-Harald Fredriksen) 3415bd8deadSopenharmony_ci Added and resolved issue 11. 3425bd8deadSopenharmony_ci 3435bd8deadSopenharmony_ci Revision 11, 26/09/2013 (Jan-Harald Fredriksen) 3445bd8deadSopenharmony_ci Restricting redeclarations of built-in variables to global scope. 3455bd8deadSopenharmony_ci 3465bd8deadSopenharmony_ci Revision 10, 15/07/2013 (Jan-Harald Fredriksen) 3475bd8deadSopenharmony_ci Minor clarification. 3485bd8deadSopenharmony_ci 3495bd8deadSopenharmony_ci Revision 9, 10/07/2013 (Jan-Harald Fredriksen) 3505bd8deadSopenharmony_ci Renaming SAMPLE_SHADING_ARM to FETCH_PER_SAMPLE_ARM and restricting it 3515bd8deadSopenharmony_ci to shaders that use fetch to avoid confusion with possible per per- 3525bd8deadSopenharmony_ci sample shading extensions in the future. 3535bd8deadSopenharmony_ci 3545bd8deadSopenharmony_ci Revision 8, 02/05/2013 (Jan-Harald Fredriksen) 3555bd8deadSopenharmony_ci Separated out depth and stencil functionality. 3565bd8deadSopenharmony_ci Changing MRT interactions to depend on the number of color attachments 3575bd8deadSopenharmony_ci that have images attached to them. 3585bd8deadSopenharmony_ci Removing error condition when reading from non-fixed-point color 3595bd8deadSopenharmony_ci attachments. 3605bd8deadSopenharmony_ci 3615bd8deadSopenharmony_ci Revision 7, 19/04/2013 (Jan-Harald Fredriksen) 3625bd8deadSopenharmony_ci Language clarifications. 3635bd8deadSopenharmony_ci 3645bd8deadSopenharmony_ci Revision 6, 12/04/2013 (Jan-Harald Fredriksen) 3655bd8deadSopenharmony_ci Removing explicit references to specific GPUs. 3665bd8deadSopenharmony_ci Resolved issues 4 and 5. 3675bd8deadSopenharmony_ci 3685bd8deadSopenharmony_ci Revision 5, 11/04/2013 (Jan-Harald Fredriksen) 3695bd8deadSopenharmony_ci Allowing the new built-in variables to be redeclared for purposes of 3705bd8deadSopenharmony_ci redefining their precision qualifier. 3715bd8deadSopenharmony_ci 3725bd8deadSopenharmony_ci Revision 4, 10/04/2013 (Jan-Harald Fredriksen) 3735bd8deadSopenharmony_ci Adding FRAGMENT_SHADER_FRAMEBUFFER_FETCH_DRAW_BUFFERS_ARM. 3745bd8deadSopenharmony_ci Clarifying ESSL language about how reads are done when multisampling is 3755bd8deadSopenharmony_ci enabled. 3765bd8deadSopenharmony_ci 3775bd8deadSopenharmony_ci Revision 3, 09/04/2013 (Jan-Harald Fredriksen) 3785bd8deadSopenharmony_ci Tentatively resolved issue 8 and 9. Added issue 10. 3795bd8deadSopenharmony_ci 3805bd8deadSopenharmony_ci Revision 2, 08/10/2012 (Jan-Harald Fredriksen) 3815bd8deadSopenharmony_ci Added issue 9. 3825bd8deadSopenharmony_ci 3835bd8deadSopenharmony_ci Revision 1, 22/07/2012 (Jan-Harald Fredriksen) 3845bd8deadSopenharmony_ci First draft based on ARM_framebuffer_read. 385