[BXT/GLK] up to 6% performance drop with "i965: Set "Subslice Hashing Mode" to 16x16 on Apollolake"
Submitted by Eero Tamminen
Assigned to Intel 3D Bugs Mailing List
Bisecting on BXT (J4205, 18 EUs) revealed following commit:
i965: Set "Subslice Hashing Mode" to 16x16 on Apollolake. As of 4.11, the kernel isn't bothering to set the subslice hashing mode on Apollolake, leaving it at the default of 8x8. (It initializes it to 16x4 on most platforms.) Performance data for GPUTest Triangle on Apollolake at 1024x640:
... <max ~1% perf improvement> ...
Based on this, we choose 16x16 for Apollolake. Skylake GT2 with X-tiled buffers appears to be a toss-up between 16x4 and 16x16, and with Y-tiled buffers it doesn't seem to really matter. So we'll leave Skylake alone for now. The hashing mode doesn't seem to make a measurable impact on more complex benchmarks. Acked-by: Matt Turner <email@example.com>
To drop performance in several test-cases:
- 6% in SynMark v7 TerrainPanTess
- 3% in GpuTest v0.7 GiMark
- 3% in GpuTest v0.7 FurMark
- 2% in SynMark v7 TerrainFlyTess
And cause additional drop in max sampling rate, on top of bug 102258.
(Unigine Valley had also dropped by 1% somewhere around this time, but that was too small change to be bisected reliably.)
GpuTest tests were run in HalfHD window, SynMark ones in FullHD fullscreen.
I don't have yet reliable data on the potential improvements from this commit, but around same time:
- GpuTest Triangle seems indeed to have improved marginally
- raw GPU texture read, copy & blend bandwidth has improved slightly
- Bug 102258 perf drop in SynMark TexMem*, TexFilterTri & GLB 2.7 Fill cases gets mostly compensated
- SynMark ZBuffer test, which does lot of depth buffer reads, also improves slightly
-> I will bisect also these (when the BXT machine is free again), to verify they come from the same commit and to see how much their exact impact is.
Note: Above data is for 18 EU BXT, if commit was tested with 12 EU variant, it's possible that hashing mode has less impact on 12 EU one.