blob: 24c46aaf5052345a511310f307bf819c7221d650 [file] [log] [blame]
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.