<div dir="ltr"><div><div>Hello,<br><br></div><div>I have an application that on each frame fills a full-window pixel buffer and then calls glTexSubImage2D() and maps the texture to a screen by drawing full-window rectangle (my hardware is Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz (brw->gen == 6), OpenGL 3.0, direct glDrawPixels() is much slower and is not used).<br>
<br></div><div>However in src/mesa/drivers/dri/i965/intel_tex_subimage.c:intel_texsubimage_tiled_memcpy() fast path is implemented only for I915_TILING_X, and src/mesa/drivers/dri/i965/intel_mipmap_tree.c:intel_miptree_choose_tiling() returns (I915_TILING_Y | I915_TILING_X) in my case, which makes intel_miptree_create() in the same file call intel_region_alloc() with I915_TILING_Y.<br>
</div><br></div>By forcing intel_region_alloc() to use I915_TILING_X I get 50% FPS rise (for glxgears 2400FPS -> 3600FPS in default window, 108FPS -> 175FPS for 1920x1080 fullscreen).  I do this with<br><br>  gdb -x i965-texture-tiling-x.gdb --args myapp<br>
<div><br></div><div>where i965-texture-tiling-x.gdb script contains:<br>----------<br>  set breakpoint pending on<br>  break intel_miptree_create<br>  break intel_region_alloc<br>  disable 2<br>  comm 1<br>    silent<br>    enable 2<br>
    cont<br>  end<br>  comm 2<br>    silent<br>    set tiling = 1<br>    disable 2<br>    cont<br>  end<br>  run<br>---------<br><br></div><div>So I wonder if there are strong reasons to prefer Y tiling for textures, at least on gen == 6?  Is Y tiling preffered because of faster texel lookups (assuming glTexSubImage2D() is not called on each frame)?<br>
<br></div><div><br>-- <br><div dir="ltr"><div>  Tomash Brechko<br></div></div>
</div></div>