Mesa (master): panfrost: Update scoreboarding notes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Feb 18 14:10:43 UTC 2020


Module: Mesa
Branch: master
Commit: 308f9cf104dab55ab4d9f92150bf6952c9813dd4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=308f9cf104dab55ab4d9f92150bf6952c9813dd4

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Sun Feb 16 13:58:09 2020 -0500

panfrost: Update scoreboarding notes

Our understanding of the set/write value jobs has evolved, so let's
update the rules.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3836>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3836>

---

 src/gallium/drivers/panfrost/pan_scoreboard.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_scoreboard.c b/src/gallium/drivers/panfrost/pan_scoreboard.c
index 0e27a0ae64c..c83e78a5934 100644
--- a/src/gallium/drivers/panfrost/pan_scoreboard.c
+++ b/src/gallium/drivers/panfrost/pan_scoreboard.c
@@ -49,7 +49,8 @@
  *
  * More specifically, here are a set of rules:
  *
- * - A set value job must appear if and only if there is at least one tiler job.
+ * - A write value job must appear if and only if there is at least one tiler
+ *   job, and tiler jobs must depend on it.
  *
  * - Vertex jobs and tiler jobs are independent.
  *
@@ -57,8 +58,7 @@
  *   data from a vertex job, it depends on the vertex job. If it's getting data
  *   from software, this is null.
  *
- * - The first vertex job used as the input to tiling must depend on the set
- *   value job, if it is present.
+ * - Tiler jobs must depend on the write value job (chained or otherwise).
  *
  * - Tiler jobs must be strictly ordered. So each tiler job must depend on the
  *   previous job in the chain.
@@ -70,9 +70,9 @@
  *
  * Justification for each rule:
  *
- * - Set value jobs set up tiling, essentially. If tiling occurs, they are
- *   needed; if it does not, we cannot emit them since then tiling partially
- *   occurs and it's bad.
+ * - Write value jobs are used to write a zero into a magic tiling field, which
+ *   enables tiling to work. If tiling occurs, they are needed; if it does not,
+ *   we cannot emit them since then tiling partially occurs and it's bad.
  *
  * - The hardware has no notion of a "vertex/tiler job" (at least not our
  *   hardware -- other revs have fused jobs, but --- crap, this just got even
@@ -83,10 +83,6 @@
  *   read-before-write hazard. Tiler jobs get their data from vertex jobs, ergo
  *   tiler jobs depend on the corresponding vertex job (if it's there).
  *
- * - In fact, tiling depends on the set value job, but tiler jobs depend on the
- *   corresponding vertex jobs and each other, so this rule ensures each tiler
- *   job automatically depends on the set value job.
- *
  * - The tiler is not thread-safe; this dependency prevents race conditions
  *   between two different jobs trying to write to the tiler outputs at the
  *   same time.



More information about the mesa-commit mailing list