mesa/src
Jason Ekstrand 134af5ada2 intel/compiler: Don't insert barriers for NULL sources
Normally, we never see NULL in a source.  However, starting with
eab1c55590, we can with a SHADER_OPCODE_SEND if it only has the first
payload.  We were inserting barriers which adds unnecessary scheduling
dependencies and takes a lot of compile time because inserting a single
barrier is an O(n) operation.

All the extra O(n) can have a surprisingly large effect.  This cuts the
runtime of dEQP-VK.binding_model.buffer_device_address.set3.depth3.
basessbo.convertcheckuv2.store.single.std140.frag by a factor of 20x for
a debug build.

Shader-db results on ICL:

    total instructions in shared programs: 19918983 -> 19921610 (0.01%)
    instructions in affected programs: 884074 -> 886701 (0.30%)
    helped: 1688
    HURT: 817
    helped stats (abs) min: 1 max: 163 x̄: 4.23 x̃: 1
    helped stats (rel) min: 0.02% max: 12.50% x̄: 1.08% x̃: 0.61%
    HURT stats (abs)   min: 1 max: 2674 x̄: 11.95 x̃: 2
    HURT stats (rel)   min: 0.11% max: 70.22% x̄: 1.71% x̃: 1.03%
    95% mean confidence interval for instructions value: -1.97 4.06
    95% mean confidence interval for instructions %-change: -0.28% -0.06%
    Inconclusive result (value mean confidence interval includes 0).

    total cycles in shared programs: 976503324 -> 975884809 (-0.06%)
    cycles in affected programs: 82581703 -> 81963188 (-0.75%)
    helped: 4144
    HURT: 5010
    helped stats (abs) min: 1 max: 79294 x̄: 311.31 x̃: 8
    helped stats (rel) min: <.01% max: 53.69% x̄: 2.00% x̃: 0.51%
    HURT stats (abs)   min: 1 max: 92266 x̄: 134.04 x̃: 8
    HURT stats (rel)   min: <.01% max: 218.09% x̄: 3.25% x̃: 0.53%
    95% mean confidence interval for cycles value: -119.85 -15.29
    95% mean confidence interval for cycles %-change: 0.68% 1.07%
    Inconclusive result (value mean confidence interval and %-change mean confidence interval disagree).

    total spills in shared programs: 10659 -> 12014 (12.71%)
    spills in affected programs: 441 -> 1796 (307.26%)
    helped: 7
    HURT: 12

    total fills in shared programs: 11551 -> 14429 (24.92%)
    fills in affected programs: 993 -> 3871 (289.83%)
    helped: 8
    HURT: 11

    total sends in shared programs: 1025832 -> 1025353 (-0.05%)
    sends in affected programs: 2241 -> 1762 (-21.37%)
    helped: 105
    HURT: 1
    helped stats (abs) min: 1 max: 87 x̄: 4.57 x̃: 2
    helped stats (rel) min: 5.56% max: 54.72% x̄: 11.37% x̃: 10.00%
    HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
    HURT stats (rel)   min: 100.00% max: 100.00% x̄: 100.00% x̃: 100.00%
    95% mean confidence interval for sends value: -7.39 -1.65
    95% mean confidence interval for sends %-change: -12.95% -7.70%
    Sends are helped.

    LOST:   93
    GAINED: 109

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4648
Fixes: eab1c55590 "intel/fs: Support SENDS in SHADER_OPCODE_SEND"
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10412>
2021-04-22 18:00:16 +00:00
..
amd aco: Mark VCC clobbered for iadd8 and iadd16 reductions on GFX6-7. 2021-04-22 11:29:49 +00:00
android_stub android: add some more stub functions for cross compilation 2021-03-25 06:06:16 +00:00
broadcom v3dv/pipeline_cache: bail out in case of error 2021-04-22 11:40:40 +02:00
compiler nir/lower_fragcolor: Handle fp16 outputs 2021-04-21 22:17:28 +00:00
drm-shim drm-shim: fix compile with glibc >= 2.33 2021-04-20 05:49:29 +00:00
egl egl/android: include "util/compiler.h" for FALLTHROUGH macro 2021-04-16 16:42:20 +00:00
etnaviv etnaviv: tell the truth if alpha-test is supported 2021-04-08 19:25:26 +00:00
freedreno freedreno/regs: add 5nm DSI PHY/PLL regs 2021-04-21 15:42:03 +00:00
gallium zink: do not read outside of array 2021-04-22 17:47:30 +00:00
gbm egl: fix software flag in _eglAddDevice call on DRM 2021-03-26 10:32:31 +00:00
getopt scons: Remove. 2021-03-20 10:38:55 +00:00
glx glx: Remove some ancient backwards-compatibility typedefs 2021-04-16 10:13:07 +00:00
gtest
hgl hgl: Major refactor and cleanup 2021-01-09 20:51:35 -06:00
imgui
intel intel/compiler: Don't insert barriers for NULL sources 2021-04-22 18:00:16 +00:00
loader loader: prefer iris on Android 2021-03-31 06:28:18 +00:00
mapi mapi: Respect MESA_DEBUG=silent for no-op debug output. 2021-04-19 20:53:27 +00:00
mesa gallium/u_threaded: offload begin/end_intel_perf_query 2021-04-22 10:59:12 +00:00
microsoft microsoft/compiler: For Vulkan environment, don't create resource handles upfront 2021-04-22 02:43:30 +00:00
nouveau nouveau: add drm-shim support 2021-01-11 22:45:01 +00:00
panfrost panfrost: Add helpers to emit indirect dispatch jobs 2021-04-22 16:59:18 +00:00
util util: Fix big-endian handling of z/s formats. 2021-04-21 19:59:10 +00:00
virtio venus: force a roundtrip after vn_renderer_bo_create_dmabuf 2021-04-21 21:40:32 +00:00
vulkan vulkan: bump headers/registry to version 1.2.175 2021-04-22 15:34:52 +00:00
meson.build venus: add driver skeleton 2021-04-08 17:15:37 +00:00