ci: Add a manual job for tracking the performance of Freedreno
authorAntonio Caggiano <antonio.caggiano@collabora.com>
Wed, 28 Apr 2021 14:16:42 +0000 (16:16 +0200)
committerMarge Bot <eric+marge@anholt.net>
Wed, 26 May 2021 18:20:19 +0000 (18:20 +0000)
Use Piglit's replay profile to measure and store the time that frames
take to render in the GPU.

This job won't run automatically in regular pipelines, but will be
triggered automatically by a script for every successful pre-merge
pipeline.

This is because we want to generate performance data for every relevant
commit merged in main, but we don't want to keep a device busy during
the pre-merge run.

Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-By: Rohan Garg <rohan.garg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7987>

.gitlab-ci/bare-metal/rootfs-setup.sh
.gitlab-ci/piglit/run.sh
src/freedreno/ci/gitlab-ci.yml

index db4cc04..d94c6e9 100644 (file)
@@ -67,6 +67,7 @@ for var in \
     PIGLIT_PLATFORM \
     PIGLIT_PROFILES \
     PIGLIT_REPLAY_ARTIFACTS_BASE_URL \
+    PIGLIT_REPLAY_SUBCOMMAND \
     PIGLIT_REPLAY_DESCRIPTION_FILE \
     PIGLIT_REPLAY_DEVICE_NAME \
     PIGLIT_REPLAY_EXTRA_ARGS \
index 97c4c9c..6ac67d9 100755 (executable)
@@ -238,7 +238,9 @@ if [ "x$PIGLIT_PROFILES" = "xreplay" ] \
     __MINIO_PATH="$PIGLIT_REPLAY_ARTIFACTS_BASE_URL"
     __MINIO_TRACES_PREFIX="traces"
 
-    quiet replay_minio_upload_images
+    if [ "x$PIGLIT_REPLAY_SUBCOMMAND" != "xprofile" ]; then
+        quiet replay_minio_upload_images
+    fi
 fi
 
 if [ -n "$USE_CASELIST" ]; then
index 7aa2632..fefc2e3 100644 (file)
@@ -277,3 +277,25 @@ a630-traces:
     # missing.
     MESA_GLSL_VERSION_OVERRIDE: "460"
     MESA_GL_VERSION_OVERRIDE: "4.6"
+
+a630-profile-traces:
+  extends:
+    - a630-traces
+  variables:
+    PIGLIT_REPLAY_SUBCOMMAND: "profile"
+    PIGLIT_REPLAY_EXTRA_ARGS: "--db-path ${CI_PROJECT_DIR}/replayer-db/"
+    # More than this can hit OOM due to BOs leaked during the replay of the last frame
+    PIGLIT_REPLAY_LOOP_TIMES: 150
+    # We don't want for more than one workload to be submitted to the GPU at a time
+    FDO_CI_CONCURRENT: 1
+    # So we aren't capped by VSync by the X server
+    EGL_PLATFORM: surfaceless
+    GIT_STRATEGY: none
+
+  rules:
+    # We want this job to be present always, will be triggered automatically
+    # *after* the code is merged, for stats collecting.
+    - when: manual
+  # This is needed so the manual job won't block MRs
+  stage: success
+  allow_failure: true