freedreno/ci: Add a manual job for tracking performance
authorAntonio Caggiano <antonio.caggiano@collabora.com>
Wed, 28 Apr 2021 14:16:42 +0000 (16:16 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 5 Aug 2021 07:55:32 +0000 (07:55 +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: Michel Dänzer <mdaenzer@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12185>

.gitlab-ci/test-source-dep.yml
src/freedreno/ci/gitlab-ci.yml

index 4f6c4fb..56037f8 100644 (file)
       when: on_success
     - when: never
 
+# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the
+# rules duplication manually
+.freedreno-rules-performance:
+  stage: freedreno
+  rules:
+    - *ignore_scheduled_pipelines
+    # Run only on pre-merge pipelines from Marge
+    - if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
+      when: never
+    - changes:
+        *mesa_core_file_list
+      when: manual
+    - changes:
+        *gallium_core_file_list
+      when: manual
+    - changes:
+        *vulkan_file_list
+      when: manual
+    - changes:
+        *freedreno_file_list
+      when: manual
+    - when: never
+
 .panfrost-midgard-rules:
   stage: arm
   rules:
index 0b15b76..f9903bd 100644 (file)
@@ -288,3 +288,20 @@ a630-traces-restricted:
     PIGLIT_REPLAY_DESCRIPTION_FILE: "/install/restricted-traces-freedreno.yml"
     PIGLIT_REPLAY_EXTRA_ARGS:  --keep-image --db-path ${CI_PROJECT_DIR}/replayer-db/ --minio_host=minio-packet.freedesktop.org --minio_bucket=mesa-tracie-private --role-session-name=${CI_PROJECT_PATH}:${CI_JOB_ID} --jwt=${CI_JOB_JWT}
   allow_failure: true
+
+a630-traces-performance:
+  extends:
+    - a630-traces
+    - .freedreno-rules-performance
+  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
+    HWCI_FREQ_MAX: 1
+  allow_failure: true