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