Name MESA_tile_raster_order Name Strings GL_MESA_tile_raster_order Contact Eric Anholt, Broadcom (eric@anholt.net) Status Proposal Version Last modified date: 24 September 2017 Number OpenGL Extension #515 OpenGL ES Extension #292 Dependencies GL_ARB_texture_barrier or GL_NV_texture_barrier is required. This extension is written against the OpenGL 4.4 (Compatibility Profile) specification, as modified by the GL_ARB_texture_barrier extension. Overview This extension extends the sampling-from-the-framebuffer behavior provided by GL_ARB_texture_barrier to allow setting the rasterization order of the scene, so that overlapping blits can be implemented. This can be used for scrolling or window movement within in 2D scenes, without first copying to a temporary. IP Status None Issues 1. Should this extension also affect BlitFramebuffer? NOT RESOLVED: BlitFramebuffer could use the same underlying functionality to provide defined results for 1:1 overlapping blits, but one could use the coordinates being copied to just produce the right result automatically, rather than requiring the state flags to be adjusted. New Procedures and Functions None New Tokens None Additions to Chapter 9 of the OpenGL 4.4 Specification (Per-Fragment Operations and the Frame Buffer) Modify Section 9.3.1 Rendering Feedback Loops, p. 289 Replace the bullet point "If a texel has been written..." with: - A texel has been written, but it has been separated from this Draw call by the command: void TextureBarrier(void); TextureBarrier() will guarantee that writes have completed and caches have been invalidated before subsequent Draws are executed." - TILE_RASTER_ORDER_FIXED_MESA is enabled, and there is only a single write of each texel, and primitives are emitted in the order of TILE_RASTER_ORDER_INCREASING_X/Y_MESA (where those being disabled mean negative texel offsets), and reads are only performed from texels offset from the current fragment shader invocation in the direction specified by TILE_RASTER_ORDER_INCREASING_X/Y_MESA, e.g. using "texelFetch2D(sampler, ivec2(gl_FragCoord.xy + vec2(dx, dy)), 0);". Additions to the AGL/GLX/WGL Specifications None GLX Protocol None Errors None New State Get Value Type Get Command Initial Value Description Section Attribute ----------------------------------- ------ ------------- ------------- --------------------------- -------- ------------ TILE_RASTER_ORDER_FIXED_MESA B IsEnabled True Tile rasterization order is 9.3.1 enable defined by TILE_RASTER_ORDER_INCREASING_*_MESA. in increasing X direction TILE_RASTER_ORDER_INCREASING_X_MESA B IsEnabled True Tiles are rasterized 9.3.1 enable in increasing X direction TILE_RASTER_ORDER_INCREASING_Y_MESA B IsEnabled True Tiles are rasterized 9.3.1 enable in increasing Y direction Revision History 26 July 2017 - Initial draft 24 September 2017 - Improved wording of the new specification paragraph. Adjust the ARB_texture_barrier paragraph, to make it clear that it's not required when in tile raster order mode. 2 October 2017 - Give it an ES extension number, mention NV_texture_barrier for ES. 5 October 2017 - Mention what spec it's written against.