From 50e849fb944f49ef2247704778a55654449ff284 Mon Sep 17 00:00:00 2001 From: Antonio Caggiano Date: Wed, 28 Apr 2021 16:16:42 +0200 Subject: [PATCH] freedreno/ci: Add a manual job for tracking performance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Tomeu Vizoso Reviewed-by: Michel Dänzer Part-of: --- .gitlab-ci/test-source-dep.yml | 23 +++++++++++++++++++++++ src/freedreno/ci/gitlab-ci.yml | 17 +++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/.gitlab-ci/test-source-dep.yml b/.gitlab-ci/test-source-dep.yml index 4f6c4fb74df..56037f85262 100644 --- a/.gitlab-ci/test-source-dep.yml +++ b/.gitlab-ci/test-source-dep.yml @@ -195,6 +195,29 @@ 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: diff --git a/src/freedreno/ci/gitlab-ci.yml b/src/freedreno/ci/gitlab-ci.yml index 0b15b760d8d..f9903bd55e1 100644 --- a/src/freedreno/ci/gitlab-ci.yml +++ b/src/freedreno/ci/gitlab-ci.yml @@ -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