• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    MESA_tile_raster_order
4
5Name Strings
6
7    GL_MESA_tile_raster_order
8
9Contact
10
11    Eric Anholt, Broadcom (eric@anholt.net)
12
13Status
14
15    Proposal
16
17Version
18
19    Last modified date: 24 September 2017
20
21Number
22
23    OpenGL Extension #515
24    OpenGL ES Extension #292
25
26Dependencies
27
28    GL_ARB_texture_barrier or GL_NV_texture_barrier is required.
29
30    This extension is written against the OpenGL 4.4 (Compatibility
31    Profile) specification, as modified by the GL_ARB_texture_barrier
32    extension.
33
34Overview
35
36    This extension extends the sampling-from-the-framebuffer behavior provided
37    by GL_ARB_texture_barrier to allow setting the rasterization order of the
38    scene, so that overlapping blits can be implemented.  This can be used for
39    scrolling or window movement within in 2D scenes, without first copying to
40    a temporary.
41
42IP Status
43
44    None
45
46Issues
47
48    1.  Should this extension also affect BlitFramebuffer?
49
50        NOT RESOLVED: BlitFramebuffer could use the same underlying
51        functionality to provide defined results for 1:1 overlapping blits,
52        but one could use the coordinates being copied to just produce the
53        right result automatically, rather than requiring the state flags to
54        be adjusted.
55
56New Procedures and Functions
57
58    None
59
60New Tokens
61
62    None
63
64Additions to Chapter 9 of the OpenGL 4.4 Specification (Per-Fragment
65Operations and the Frame Buffer)
66
67    Modify Section 9.3.1 Rendering Feedback Loops, p. 289
68
69    Replace the bullet point "If a texel has been written..." with:
70
71      - A texel has been written, but it has been separated from this
72        Draw call by the command:
73
74          void TextureBarrier(void);
75
76        TextureBarrier() will guarantee that writes have completed and
77        caches have been invalidated before subsequent Draws are
78        executed."
79
80      - TILE_RASTER_ORDER_FIXED_MESA is enabled, and there is only a
81        single write of each texel, and primitives are emitted in the
82        order of TILE_RASTER_ORDER_INCREASING_X/Y_MESA (where those
83        being disabled mean negative texel offsets), and reads are
84        only performed from texels offset from the current fragment
85        shader invocation in the direction specified by
86        TILE_RASTER_ORDER_INCREASING_X/Y_MESA, e.g. using
87        "texelFetch2D(sampler, ivec2(gl_FragCoord.xy + vec2(dx, dy)),
88        0);".
89
90Additions to the AGL/GLX/WGL Specifications
91
92    None
93
94GLX Protocol
95
96    None
97
98Errors
99
100    None
101
102New State
103
104    Get Value                            Type    Get Command    Initial Value Description                  Section   Attribute
105    -----------------------------------  ------  -------------  ------------- ---------------------------  --------  ------------
106    TILE_RASTER_ORDER_FIXED_MESA         B       IsEnabled      True          Tile rasterization order is  9.3.1     enable
107                                                                              defined by
108                                                                              TILE_RASTER_ORDER_INCREASING_*_MESA.
109                                                                              in increasing X direction
110    TILE_RASTER_ORDER_INCREASING_X_MESA  B       IsEnabled      True          Tiles are rasterized         9.3.1     enable
111                                                                              in increasing X direction
112    TILE_RASTER_ORDER_INCREASING_Y_MESA  B       IsEnabled      True          Tiles are rasterized         9.3.1     enable
113                                                                              in increasing Y direction
114
115Revision History
116
117    26 July 2017 - Initial draft
118
119    24 September 2017 - Improved wording of the new specification
120                        paragraph.  Adjust the ARB_texture_barrier
121                        paragraph, to make it clear that it's not
122                        required when in tile raster order mode.
123
124    2 October 2017 - Give it an ES extension number, mention
125                     NV_texture_barrier for ES.
126
127    5 October 2017 - Mention what spec it's written against.
128