mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 22:28:32 +09:00
[CI] (trace-replay): run iterationRP only on DirectVulkan
This commit is contained in:
@@ -209,7 +209,7 @@ jobs:
|
|||||||
- name: Load trace cases
|
- name: Load trace cases
|
||||||
id: trace-cases
|
id: trace-cases
|
||||||
run: |
|
run: |
|
||||||
echo "android=$(python3 tools/trace_replay/trace_cases.py --ci --format github-apk)" >> "$GITHUB_OUTPUT"
|
echo "android=$(python3 tools/trace_replay/trace_cases.py --ci --format github-apk-matrix)" >> "$GITHUB_OUTPUT"
|
||||||
echo "names=$(python3 tools/trace_replay/trace_cases.py --ci --format names)" >> "$GITHUB_OUTPUT"
|
echo "names=$(python3 tools/trace_replay/trace_cases.py --ci --format names)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
trace-fixtures:
|
trace-fixtures:
|
||||||
@@ -337,13 +337,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
max-parallel: 4
|
max-parallel: 4
|
||||||
matrix:
|
matrix: ${{ fromJSON(needs.trace-cases.outputs.android) }}
|
||||||
backend:
|
|
||||||
- name: DirectGLES
|
|
||||||
gpu: software
|
|
||||||
- name: DirectVulkan
|
|
||||||
gpu: lavapipe
|
|
||||||
case: ${{ fromJSON(needs.trace-cases.outputs.android) }}
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set Swap Space
|
- name: Set Swap Space
|
||||||
uses: pierotofy/set-swap-space@v1.0
|
uses: pierotofy/set-swap-space@v1.0
|
||||||
|
|||||||
@@ -491,6 +491,7 @@ jobs:
|
|||||||
- benchmark
|
- benchmark
|
||||||
- integration
|
- integration
|
||||||
outputs:
|
outputs:
|
||||||
|
matrix: ${{ steps.trace-cases.outputs.matrix }}
|
||||||
names: ${{ steps.trace-cases.outputs.names }}
|
names: ${{ steps.trace-cases.outputs.names }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repo
|
- name: Checkout repo
|
||||||
@@ -498,7 +499,9 @@ jobs:
|
|||||||
|
|
||||||
- name: Load trace cases
|
- name: Load trace cases
|
||||||
id: trace-cases
|
id: trace-cases
|
||||||
run: echo "names=$(python3 tools/trace_replay/trace_cases.py --ci --format names)" >> "$GITHUB_OUTPUT"
|
run: |
|
||||||
|
echo "matrix=$(python3 tools/trace_replay/trace_cases.py --ci --format github-test-matrix)" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "names=$(python3 tools/trace_replay/trace_cases.py --ci --format names)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
trace-fixtures:
|
trace-fixtures:
|
||||||
name: trace fixture (${{ matrix.case }})
|
name: trace fixture (${{ matrix.case }})
|
||||||
@@ -577,11 +580,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
max-parallel: 4
|
max-parallel: 4
|
||||||
matrix:
|
matrix: ${{ fromJSON(needs.trace-cases.outputs.matrix) }}
|
||||||
backend:
|
|
||||||
- DirectGLES
|
|
||||||
- DirectVulkan
|
|
||||||
case: ${{ fromJSON(needs.trace-cases.outputs.names) }}
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set Swap Space
|
- name: Set Swap Space
|
||||||
|
|||||||
@@ -277,7 +277,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "minecraft-1.21.4-fabric-iris-iterationrp-in-world",
|
"name": "minecraft-1.21.4-fabric-iris-iterationrp-in-world",
|
||||||
"ci": false,
|
"ci_backends": [
|
||||||
|
"DirectVulkan"
|
||||||
|
],
|
||||||
"trace_archive": "minecraft-1.21.4-fabric-iris-iterationrp-in-world.tgz",
|
"trace_archive": "minecraft-1.21.4-fabric-iris-iterationrp-in-world.tgz",
|
||||||
"golden": "minecraft-1.21.4-fabric-iris-iterationrp-in-world.0000202020.png",
|
"golden": "minecraft-1.21.4-fabric-iris-iterationrp-in-world.0000202020.png",
|
||||||
"target_call": 202020,
|
"target_call": 202020,
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from pathlib import Path
|
|||||||
|
|
||||||
|
|
||||||
TRACE_CASES_JSON = Path(__file__).with_name("trace_cases.json")
|
TRACE_CASES_JSON = Path(__file__).with_name("trace_cases.json")
|
||||||
|
CI_BACKENDS = ("DirectGLES", "DirectVulkan")
|
||||||
|
|
||||||
|
|
||||||
def load_trace_case_manifest(path=TRACE_CASES_JSON):
|
def load_trace_case_manifest(path=TRACE_CASES_JSON):
|
||||||
@@ -71,6 +72,46 @@ def ci_trace_cases(cases):
|
|||||||
return [case for case in cases if case.get("ci", True)]
|
return [case for case in cases if case.get("ci", True)]
|
||||||
|
|
||||||
|
|
||||||
|
def ci_backends(case):
|
||||||
|
backends = case.get("ci_backends")
|
||||||
|
if backends is None:
|
||||||
|
return CI_BACKENDS
|
||||||
|
if not isinstance(backends, list) or not backends:
|
||||||
|
raise ValueError(f"ci_backends must be a non-empty list for {case['name']}")
|
||||||
|
unknown = [backend for backend in backends if backend not in CI_BACKENDS]
|
||||||
|
if unknown:
|
||||||
|
raise ValueError(
|
||||||
|
f"unknown ci_backends for {case['name']}: {', '.join(unknown)}"
|
||||||
|
)
|
||||||
|
if len(set(backends)) != len(backends):
|
||||||
|
raise ValueError(f"ci_backends contains duplicates for {case['name']}")
|
||||||
|
return backends
|
||||||
|
|
||||||
|
|
||||||
|
def github_test_matrix(cases):
|
||||||
|
return {
|
||||||
|
"include": [
|
||||||
|
{"backend": backend, "case": case["name"]}
|
||||||
|
for case in cases
|
||||||
|
for backend in ci_backends(case)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def github_apk_matrix(cases):
|
||||||
|
backends = {
|
||||||
|
"DirectGLES": {"name": "DirectGLES", "gpu": "software"},
|
||||||
|
"DirectVulkan": {"name": "DirectVulkan", "gpu": "lavapipe"},
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
"include": [
|
||||||
|
{"backend": backends[backend], "case": github_apk_case(case)}
|
||||||
|
for case in cases
|
||||||
|
for backend in ci_backends(case)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def cmake_quote(value):
|
def cmake_quote(value):
|
||||||
return '"' + str(value).replace("\\", "/").replace('"', '\\"') + '"'
|
return '"' + str(value).replace("\\", "/").replace('"', '\\"') + '"'
|
||||||
|
|
||||||
@@ -114,7 +155,14 @@ def parse_args():
|
|||||||
parser.add_argument("--fixture-root", default="tools/trace_replay/fixtures")
|
parser.add_argument("--fixture-root", default="tools/trace_replay/fixtures")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--format",
|
"--format",
|
||||||
choices=("names", "github-apk", "fixture-files", "cmake"),
|
choices=(
|
||||||
|
"names",
|
||||||
|
"github-test-matrix",
|
||||||
|
"github-apk",
|
||||||
|
"github-apk-matrix",
|
||||||
|
"fixture-files",
|
||||||
|
"cmake",
|
||||||
|
),
|
||||||
default="names",
|
default="names",
|
||||||
)
|
)
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
@@ -127,8 +175,12 @@ def main():
|
|||||||
cases = ci_trace_cases(cases)
|
cases = ci_trace_cases(cases)
|
||||||
if args.format == "names":
|
if args.format == "names":
|
||||||
print(json.dumps([case["name"] for case in cases], separators=(",", ":")))
|
print(json.dumps([case["name"] for case in cases], separators=(",", ":")))
|
||||||
|
elif args.format == "github-test-matrix":
|
||||||
|
print(json.dumps(github_test_matrix(cases), separators=(",", ":")))
|
||||||
elif args.format == "github-apk":
|
elif args.format == "github-apk":
|
||||||
print(json.dumps([github_apk_case(case) for case in cases], separators=(",", ":")))
|
print(json.dumps([github_apk_case(case) for case in cases], separators=(",", ":")))
|
||||||
|
elif args.format == "github-apk-matrix":
|
||||||
|
print(json.dumps(github_apk_matrix(cases), separators=(",", ":")))
|
||||||
elif args.format == "fixture-files":
|
elif args.format == "fixture-files":
|
||||||
if not args.case_name:
|
if not args.case_name:
|
||||||
print("--case is required for --format fixture-files", file=sys.stderr)
|
print("--case is required for --format fixture-files", file=sys.stderr)
|
||||||
|
|||||||
Reference in New Issue
Block a user