| 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. |