mesa/src
Jason Ekstrand eebb2dedb2 intel/fs: Add a NONE scheduling mode
While our LIFO scheduling mode attempts to optimize for register
pressure, it's often hard for a scheduling algorithm to do better than
the instruction order provided by the shader author.  Shader authors
often do perfectly reasonable things like using texture results
immediately after fetching them or constructing texture coordinates
immediately before the texture op.  When we throw all the instruction
ordering information away, we loose any help the author may have given
us.  By attempting NONE before we fall back to the worst case LIFO mode.

And, yes, I tried this with NONE both before and after LIFO and doing
NONE before LIFO is substantially better, according to shader-db.

    total instructions in shared programs: 19673152 -> 19665202 (-0.04%)
    instructions in affected programs: 33669 -> 25719 (-23.61%)
    helped: 20
    HURT: 0
    helped stats (abs) min: 15 max: 4609 x̄: 397.50 x̃: 107
    helped stats (rel) min: 2.33% max: 67.50% x̄: 14.60% x̃: 9.12%
    95% mean confidence interval for instructions value: -867.61 72.61
    95% mean confidence interval for instructions %-change: -21.74% -7.46%
    Inconclusive result (value mean confidence interval includes 0).

    total cycles in shared programs: 935562500 -> 935020920 (-0.06%)
    cycles in affected programs: 18620349 -> 18078769 (-2.91%)
    helped: 104
    HURT: 48
    helped stats (abs) min: 88 max: 60986 x̄: 8031.48 x̃: 3680
    helped stats (rel) min: 0.61% max: 51.44% x̄: 14.95% x̃: 8.87%
    HURT stats (abs)   min: 10 max: 54724 x̄: 6118.62 x̃: 1530
    HURT stats (rel)   min: 0.13% max: 46.45% x̄: 10.28% x̃: 6.46%
    95% mean confidence interval for cycles value: -5724.34 -1401.71
    95% mean confidence interval for cycles %-change: -9.86% -4.10%
    Cycles are helped.

    total spills in shared programs: 12158 -> 10327 (-15.06%)
    spills in affected programs: 1831 -> 0
    helped: 20
    HURT: 0

    total fills in shared programs: 14749 -> 12635 (-14.33%)
    fills in affected programs: 2114 -> 0
    helped: 20
    HURT: 0

    LOST:   8
    GAINED: 649

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13734>
2021-12-18 01:46:19 +00:00
..
amd aco: remove SMEM constant/addition combining out of the loop 2021-12-17 22:14:36 +00:00
android_stub android_stub: update platform headers to include atrace 2021-10-09 00:42:32 +00:00
asahi treewide: drop mtypes/macros includes from main 2021-12-08 22:14:45 +00:00
broadcom broadcom/ci: restructure expected results 2021-12-17 09:15:34 +00:00
compiler spirv: Use the incorporated names 2021-12-17 16:37:14 -08:00
drm-shim drm-shim: Support kernels with >4k pages 2021-08-13 23:33:52 +00:00
egl egl: add config debug printout 2021-12-11 00:25:04 +00:00
etnaviv ci: move windowoverlap exclusion to all-skips 2021-11-29 18:08:49 -05:00
freedreno ci/freedreno: Add known flakes from the last month. 2021-12-16 22:37:53 +00:00
gallium crocus: Clamp VS point sizes to the HW limits as required. 2021-12-17 19:41:54 +00:00
gbm gbm: Don't pass default usage flags on ABIs < 1 2021-12-08 09:49:47 +00:00
getopt scons: Remove. 2021-03-20 10:38:55 +00:00
glx glx: Fix GLX_NV_float_buffer fbconfig handling 2021-12-16 22:05:20 +00:00
gtest gtest: Fix output of array ASSERT/EXPECT macros 2021-11-11 09:53:09 -08:00
hgl
imgui
intel intel/fs: Add a NONE scheduling mode 2021-12-18 01:46:19 +00:00
loader loader: Restore i915g support. 2021-12-09 09:05:23 -08:00
mapi mesa: use nop dispatch for ColorTable/Convolution/Histogram 2021-12-14 12:29:00 -05:00
mesa glthread: only log glthread destroy reason when it's not NULL 2021-12-17 11:56:24 +00:00
microsoft ci/windows: Remove line numbers of SPIR-V errors in spirv2dxil tests 2021-12-17 23:04:55 +00:00
nouveau
panfrost glx: fix querying GLX_FBCONFIG_ID for Window 2021-12-16 01:21:36 +00:00
tool intel/pps: tweak intel config some more 2021-11-22 11:52:46 +00:00
util radv: Expose the ETC2 emulation. 2021-12-14 11:30:48 +00:00
virtio venus: add some trace points 2021-12-16 19:27:56 +00:00
vulkan anv,wsi: simplify WSI synchronization 2021-12-17 00:55:31 +00:00
meson.build meson: make mesa/tests/glx depend on gallium 2021-12-07 13:03:53 +00:00