diff options
author | Iago Toral Quiroga <itoral@igalia.com> | 2021-03-04 09:21:53 +0100 |
---|---|---|
committer | Iago Toral Quiroga <itoral@igalia.com> | 2021-03-05 10:32:19 +0100 |
commit | 839007e490d45a5cb43dda4c0aa0c2b8bc47ab78 (patch) | |
tree | 6e45601bde0f7b2befe5c2a2412e4e8a850e2656 /src/broadcom/compiler/v3d_compiler.h | |
parent | 2169c4f76385fd81e99224f5437a925500173bbe (diff) |
broadcom/compiler: always restart ldvary pipelining when scheduling ldvary
When we were only able to pipeline smooth varyings, if we had to disable
ldvary pipelining in the middle of a sequence it would stay disabled for
the rest of the program, to prevent us from prioritizing scheduling of
ldvary instructions that we would not be able to pipeline effectively.
Now that we can pipeline all ldvary sequences we can change this.
This change re-enables ldvary pipelining upon finding the next
ldvary in the program in the hopes that we can continue pipelining
succesfully. To do this, we track the number of ldvary instructions we
emitted so far and compare that to the number of inputs in the fragment
shader we are scheduling. This also allows us to simplify our ldvary
tracking at nir to vir time, since that is all now handled in the QPU
scheduler.
total instructions in shared programs: 13817048 -> 13810783 (-0.05%)
instructions in affected programs: 810114 -> 803849 (-0.77%)
helped: 4843
HURT: 591
Instructions are helped.
total max-temps in shared programs: 2326612 -> 2326300 (-0.01%)
max-temps in affected programs: 4689 -> 4377 (-6.65%)
helped: 285
HURT: 7
Max-temps are helped.
total sfu-stalls in shared programs: 30942 -> 30865 (-0.25%)
sfu-stalls in affected programs: 207 -> 130 (-37.20%)
helped: 120
HURT: 42
Sfu-stalls are helped.
total inst-and-stalls in shared programs: 13847990 -> 13841648 (-0.05%)
inst-and-stalls in affected programs: 825378 -> 819036 (-0.77%)
helped: 4899
HURT: 590
Inst-and-stalls are helped.
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9404>
Diffstat (limited to 'src/broadcom/compiler/v3d_compiler.h')
-rw-r--r-- | src/broadcom/compiler/v3d_compiler.h | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h index ed8747d11a3..fafdf5a208f 100644 --- a/src/broadcom/compiler/v3d_compiler.h +++ b/src/broadcom/compiler/v3d_compiler.h @@ -165,14 +165,6 @@ struct qinst { /* Set if this instruction participates in a varying setup. */ bool is_ldvary_sequence; - /* Set if this is the ldvary instruction starting a sequence of - * varyings we want to pipeline. - */ - bool ldvary_pipelining_start; - /* Set if this is the last instruction involved with a pipelineable - * varying sequence. - */ - bool ldvary_pipelining_end; }; enum quniform_contents { @@ -780,11 +772,6 @@ struct v3d_compile { uint32_t program_id; uint32_t variant_id; - /* Used to track pipelinable sequences of varyings */ - struct qinst *ldvary_sequence_start_inst; - struct qinst *ldvary_sequence_end_inst; - uint32_t ldvary_sequence_length; - /* Set to compile program in in 1x, 2x, or 4x threaded mode, where * SIG_THREAD_SWITCH is used to hide texturing latency at the cost of * limiting ourselves to the part of the physical reg space. |