ci: Add a manual job for tracking the performance of Freedreno

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>
This commit is contained in:
Antonio Caggiano 2021-04-28 16:16:42 +02:00 committed by Marge Bot
parent 93138ef122
commit 8e470457de
3 changed files with 26 additions and 1 deletions

View 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 \

View File

@ -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

View 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