Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test profile for FFXIV Endwalker Benchmark #248

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions pts/ffxiv-endwalker-1.0.0/downloads.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0"?>
<!--Phoronix Test Suite v10.0.1-->
<PhoronixTestSuite>
<Downloads>
<Package>
<URL>https://download.finalfantasyxiv.com/ys8glaimvmykn88p/ffxiv-endwalker-bench.zip</URL>
<FileName>ffxiv-endwalker-bench.zip</FileName>
<FileSize>2376241167</FileSize>
</Package>
</Downloads>
</PhoronixTestSuite>
9 changes: 9 additions & 0 deletions pts/ffxiv-endwalker-1.0.0/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
set -o errexit -o pipefail -o nounset -o noclobber

mkdir -p ffxiv-endwalker-bench
unzip ffxiv-endwalker-bench.zip -d ffxiv-endwalker-bench
rm -r ffxiv-endwalker-bench/screenshots # Prevent benchmark from automatically taking screenshots
cp "$(dirname -- "${BASH_SOURCE[0]}")/run.sh" ffxiv-endwalker
chmod +x ffxiv-endwalker
rm ffxiv-endwalker-bench.zip
14 changes: 14 additions & 0 deletions pts/ffxiv-endwalker-1.0.0/results-definition.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<!--Phoronix Test Suite v10.0.1-->
<PhoronixTestSuite>
<ResultsParser>
<ResultScale>Score</ResultScale>
<ResultProportion>HIB</ResultProportion>
<OutputTemplate>SCORE=#_RESULT_#</OutputTemplate>
</ResultsParser>
<ResultsParser>
<ResultScale>Frames Per Second</ResultScale>
<ResultProportion>HIB</ResultProportion>
<OutputTemplate>SCORE_FPSAVERAGE=#_RESULT_#</OutputTemplate>
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The benchmark also produces a list of per-second FPS values looking like this:

KEYS_COUNT=373
K0=33
K1=31
K2=31
...
K370=71
K371=72
K372=72

Is there any way for PTS to capture this info as well? (e.g., for min or 5th percentile FPS)

</ResultsParser>
</PhoronixTestSuite>
241 changes: 241 additions & 0 deletions pts/ffxiv-endwalker-1.0.0/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
#!/bin/bash
set -o errexit -o pipefail -o nounset -o noclobber

ARGS="$(getopt -o "w:h:m:q:" -n "$0" -- "$@")"
eval set -- "$ARGS"
WIDTH= HEIGHT= MODE= QUALITY=
while true; do
case "$1" in
-w) WIDTH="$2"; shift 2;;
-h) HEIGHT="$2"; shift 2;;
-m) MODE="$2"; shift 2;;
-q) QUALITY="$2"; shift 2;;
--) shift; break;;
*) echo "Internal error!" >&2; exit 1;;
esac
done

CONFIG=("[EVN]")
CMDLINE=(SYS.Language=0 SYS.Fps=0)

if [ -z "$WIDTH" -o -z "$HEIGHT" ]; then
echo "Missing -w <width> or -h <height>" >&2
exit 1
fi
CMDLINE+=(SYS.ScreenWidth="$WIDTH" SYS.ScreenHeight="$HEIGHT" SYS.FullScreenWidth="$WIDTH" SYS.FullScreenHeight="$HEIGHT")

case "$MODE" in
fullscreen) CMDLINE+=(SYS.ScreenMode=1);;
windowed) CMDLINE+=(SYS.ScreenMode=0);;
borderless) CMDLINE+=(SYS.ScreenMode=2);;
*) echo "Missing -m fullscreen|windowed|borderless" >&2; exit 1;;
esac

case "$QUALITY" in
maximum)
CONFIG+=(SPEC_DX11=0)
CMDLINE+=(
SYS.WaterWet_DX11=1
SYS.OcclusionCulling_DX11=0
SYS.LodType_DX11=0
SYS.ReflectionType_DX11=3
SYS.AntiAliasing_DX11=1
SYS.TranslucentQuality_DX11=1
SYS.GrassQuality_DX11=3
SYS.ShadowLOD_DX11=0
SYS.ShadowVisibilityTypeSelf_DX11=1
SYS.ShadowVisibilityTypeOther_DX11=1
SYS.ShadowTextureSizeType_DX11=2
SYS.ShadowCascadeCountType_DX11=2
SYS.ShadowSoftShadowType_DX11=1
SYS.PhysicsTypeSelf_DX11=2
SYS.PhysicsTypeOther_DX11=2
SYS.TextureFilterQuality_DX11=2
SYS.TextureAnisotropicQuality_DX11=2
SYS.Vignetting_DX11=1
SYS.RadialBlur_DX11=1
SYS.SSAO_DX11=4
SYS.Glare_DX11=2
SYS.DepthOfField_DX11=1
SYS.ParallaxOcclusion_DX11=1
SYS.Tessellation_DX11=1
SYS.GlareRepresentation_DX11=1
SYS.DistortionWater_DX11=2
)
;;
high-desktop)
CONFIG+=(SPEC_DX11=1)
CMDLINE+=(
SYS.WaterWet_DX11=1
SYS.OcclusionCulling_DX11=1
SYS.LodType_DX11=0
SYS.ReflectionType_DX11=3
SYS.AntiAliasing_DX11=1
SYS.TranslucentQuality_DX11=1
SYS.GrassQuality_DX11=3
SYS.ShadowLOD_DX11=1
SYS.ShadowVisibilityTypeSelf_DX11=1
SYS.ShadowVisibilityTypeOther_DX11=1
SYS.ShadowTextureSizeType_DX11=2
SYS.ShadowCascadeCountType_DX11=2
SYS.ShadowSoftShadowType_DX11=1
SYS.PhysicsTypeSelf_DX11=2
SYS.PhysicsTypeOther_DX11=2
SYS.TextureFilterQuality_DX11=2
SYS.TextureAnisotropicQuality_DX11=1
SYS.Vignetting_DX11=1
SYS.RadialBlur_DX11=1
SYS.SSAO_DX11=3
SYS.Glare_DX11=2
SYS.DepthOfField_DX11=1
SYS.ParallaxOcclusion_DX11=1
SYS.Tessellation_DX11=1
SYS.GlareRepresentation_DX11=1
SYS.DistortionWater_DX11=2
)
;;
high-laptop)
CONFIG+=(SPEC_DX11=2)
CMDLINE+=(
SYS.WaterWet_DX11=1
SYS.OcclusionCulling_DX11=1
SYS.LodType_DX11=1
SYS.ReflectionType_DX11=0
SYS.AntiAliasing_DX11=1
SYS.TranslucentQuality_DX11=0
SYS.GrassQuality_DX11=2
SYS.ShadowLOD_DX11=1
SYS.ShadowVisibilityTypeSelf_DX11=1
SYS.ShadowVisibilityTypeOther_DX11=1
SYS.ShadowTextureSizeType_DX11=1
SYS.ShadowCascadeCountType_DX11=2
SYS.ShadowSoftShadowType_DX11=1
SYS.PhysicsTypeSelf_DX11=2
SYS.PhysicsTypeOther_DX11=2
SYS.TextureFilterQuality_DX11=2
SYS.TextureAnisotropicQuality_DX11=0
SYS.Vignetting_DX11=1
SYS.RadialBlur_DX11=1
SYS.SSAO_DX11=3
SYS.Glare_DX11=2
SYS.DepthOfField_DX11=1
SYS.ParallaxOcclusion_DX11=1
SYS.Tessellation_DX11=1
SYS.GlareRepresentation_DX11=0
SYS.DistortionWater_DX11=2
)
;;
standard-desktop)
CONFIG+=(SPEC_DX11=3)
CMDLINE+=(
SYS.WaterWet_DX11=1
SYS.OcclusionCulling_DX11=1
SYS.LodType_DX11=1
SYS.ReflectionType_DX11=0
SYS.AntiAliasing_DX11=0
SYS.TranslucentQuality_DX11=0
SYS.GrassQuality_DX11=1
SYS.ShadowLOD_DX11=1
SYS.ShadowVisibilityTypeSelf_DX11=1
SYS.ShadowVisibilityTypeOther_DX11=0
SYS.ShadowTextureSizeType_DX11=1
SYS.ShadowCascadeCountType_DX11=1
SYS.ShadowSoftShadowType_DX11=0
SYS.PhysicsTypeSelf_DX11=2
SYS.PhysicsTypeOther_DX11=1
SYS.TextureFilterQuality_DX11=1
SYS.TextureAnisotropicQuality_DX11=0
SYS.Vignetting_DX11=0
SYS.RadialBlur_DX11=1
SYS.SSAO_DX11=0
SYS.Glare_DX11=2
SYS.DepthOfField_DX11=1
SYS.ParallaxOcclusion_DX11=0
SYS.Tessellation_DX11=0
SYS.GlareRepresentation_DX11=0
SYS.DistortionWater_DX11=2
)
;;
standard-laptop)
CONFIG+=(SPEC_DX11=4)
CMDLINE+=(
SYS.WaterWet_DX11=1
SYS.OcclusionCulling_DX11=1
SYS.LodType_DX11=1
SYS.ReflectionType_DX11=0
SYS.AntiAliasing_DX11=0
SYS.TranslucentQuality_DX11=0
SYS.GrassQuality_DX11=1
SYS.ShadowLOD_DX11=1
SYS.ShadowVisibilityTypeSelf_DX11=1
SYS.ShadowVisibilityTypeOther_DX11=0
SYS.ShadowTextureSizeType_DX11=1
SYS.ShadowCascadeCountType_DX11=1
SYS.ShadowSoftShadowType_DX11=0
SYS.PhysicsTypeSelf_DX11=2
SYS.PhysicsTypeOther_DX11=0
SYS.TextureFilterQuality_DX11=1
SYS.TextureAnisotropicQuality_DX11=0
SYS.Vignetting_DX11=0
SYS.RadialBlur_DX11=1
SYS.SSAO_DX11=0
SYS.Glare_DX11=2
SYS.DepthOfField_DX11=1
SYS.ParallaxOcclusion_DX11=0
SYS.Tessellation_DX11=0
SYS.GlareRepresentation_DX11=0
SYS.DistortionWater_DX11=2
)
;;
*)
echo "Missing -q maximum|high-desktop|high-laptop|standard-desktop|standard-laptop" >&2
exit 1
;;
esac

declare -A CMDLINE2CONFIG=(
[SYS.Language]=LANGUAGE
[SYS.ScreenWidth]=SCREENWIDTH_DX11
[SYS.ScreenHeight]=SCREENHEIGHT_DX11
[SYS.ScreenMode]=SCREENMODE_DX11

[SYS.WaterWet_DX11]=WaterWetness_DX11
[SYS.OcclusionCulling_DX11]=OcclusionCulling_DX11
[SYS.LodType_DX11]=LodType_DX11
[SYS.ReflectionType_DX11]=ReflectionType_DX11
[SYS.AntiAliasing_DX11]=AntiAliasing_DX11
[SYS.TranslucentQuality_DX11]=TranslucentQuality_DX11
[SYS.GrassQuality_DX11]=GrassQuality_DX11
[SYS.ShadowLOD_DX11]=ShadowLOD_DX11
[SYS.ShadowVisibilityTypeSelf_DX11]=ShadowVisibilityTypeSelf_DX11
[SYS.ShadowVisibilityTypeOther_DX11]=ShadowVisibilityTypeOther_DX11
[SYS.ShadowTextureSizeType_DX11]=ShadowTextureSizeType_DX11
[SYS.ShadowCascadeCountType_DX11]=ShadowCascadeCountType_DX11
[SYS.ShadowSoftShadowType_DX11]=ShadowSoftShadowType_DX11
[SYS.PhysicsTypeSelf_DX11]=PhysicsTypeSelf_DX11
[SYS.PhysicsTypeOther_DX11]=PhysicsTypeOther_DX11
[SYS.TextureFilterQuality_DX11]=TextureFilterQuality_DX11
[SYS.TextureAnisotropicQuality_DX11]=TextureAnisotropicQuality_DX11
[SYS.Vignetting_DX11]=Vignetting_DX11
[SYS.RadialBlur_DX11]=RadialBlur_DX11
[SYS.SSAO_DX11]=SSAO_DX11
[SYS.Glare_DX11]=Glare_DX11
[SYS.DepthOfField_DX11]=DepthOfField_DX11
[SYS.ParallaxOcclusion_DX11]=Parallax_DX11
[SYS.Tessellation_DX11]=WaterTess_DX11
[SYS.GlareRepresentation_DX11]=GlareRepresentation_DX11
[SYS.DistortionWater_DX11]=DistortionWater_DX11
)
for ARG in "${CMDLINE[@]}"; do
KEY="${ARG%%=*}"
VALUE="${ARG#*=}"
if [[ -v "CMDLINE2CONFIG[$KEY]" ]]; then
CONFIG+=("${CMDLINE2CONFIG[$KEY]}=$VALUE")
fi
done

cd ffxiv-endwalker-bench
rm -f ffxivbenchmarklauncher.ini
(IFS=$'\n'; echo "${CONFIG[*]}" > ffxivbenchmarklauncher.ini)
${USE_WINE:-} game/ffxiv_dx11.exe "${CMDLINE[@]}" "$@"
grep -E "SCORE(_FPSAVERAGE)?=" ffxivbenchmarklauncher.ini > "$LOG_FILE"
85 changes: 85 additions & 0 deletions pts/ffxiv-endwalker-1.0.0/test-definition.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<?xml version="1.0"?>
<!--Phoronix Test Suite v10.0.1-->
<PhoronixTestSuite>
<TestInformation>
<Title>FFXIV Endwalker Benchmark</Title>
<AppVersion>1.0</AppVersion>
<Description>
This test calculates the score from the FFXIV Endwalker Benchmark, released in 2021.

Technically a Windows-only benchmark, but also runs at near-native performance under Linux with wine+dxvk (e.g., with the USE_WINE config)
</Description>
<ResultScale>Score</ResultScale>
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The benchmark outputs two results: A score, and an average FPS value.
I'm not sure which one is more appropriate here.

The benchmark considers the score the "main" result, but I personally think the average FPS is a more practical result

<Proportion>HIB</Proportion>
<TimesToRun>3</TimesToRun>
</TestInformation>
<TestProfile>
<Version>1.0.0</Version>
<SupportedPlatforms>Windows</SupportedPlatforms>
<SoftwareType>Game</SoftwareType>
<TestType>Graphics</TestType>
<License>Non-Free</License>
<Status>Verified</Status>
<SupportedArchitectures>x86_64</SupportedArchitectures>
<RequiresDisplay>TRUE</RequiresDisplay>
<EnvironmentSize>5100</EnvironmentSize>
<ProjectURL>https://jp.finalfantasyxiv.com/benchmark/download/</ProjectURL>
<Maintainer>Michael Larabel</Maintainer>
</TestProfile>
<TestSettings>
<Option>
<DisplayName>Resolution</DisplayName>
<Identifier>auto-resolution</Identifier>
<Menu>
<Entry>
<Name>$VIDEO_WIDTH x $VIDEO_HEIGHT</Name>
<Value>-w $VIDEO_WIDTH -h $VIDEO_HEIGHT</Value>
</Entry>
</Menu>
</Option>
<Option>
<DisplayName>Mode</DisplayName>
<Identifier>mode</Identifier>
<Menu>
<Entry>
<Name>Full Screen</Name>
<Value>-m fullscreen</Value>
</Entry>
<Entry>
<Name>Windowed</Name>
<Value>-m windowed</Value>
</Entry>
<Entry>
<Name>Borderless Windowed</Name>
<Value>-m borderless</Value>
</Entry>
</Menu>
</Option>
<Option>
<DisplayName>Quality</DisplayName>
<Identifier>quality</Identifier>
<Menu>
<Entry>
<Name>Maximum</Name>
<Value>-q maximum</Value>
</Entry>
<Entry>
<Name>High Desktop</Name>
<Value>-q high-desktop</Value>
</Entry>
<Entry>
<Name>High Laptop</Name>
<Value>-q high-laptop</Value>
</Entry>
<Entry>
<Name>Standard Desktop</Name>
<Value>-q standard-desktop</Value>
</Entry>
<Entry>
<Name>Standard Laptop</Name>
<Value>-q standard-laptop</Value>
</Entry>
</Menu>
</Option>
</TestSettings>
</PhoronixTestSuite>