mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-10 21:28:32 +09:00
[Fix] (trace-replay): support alternate golden images
- compare actual output against primary and alternate golden images - record the matched golden path in trace replay results - allow APK and Linux retrace fixtures to pass alternate golden paths - keep nostalgia validation accepting both Mesa and PC goldens
This commit is contained in:
@@ -269,6 +269,7 @@ function(add_trace_replay_test CASE_NAME BACKEND)
|
||||
TRACE_ARCHIVE
|
||||
TRACE_FILE
|
||||
GOLDEN
|
||||
ALTERNATE_GOLDEN
|
||||
TARGET_CALL
|
||||
WIDTH
|
||||
HEIGHT
|
||||
@@ -314,6 +315,7 @@ function(add_trace_replay_test CASE_NAME BACKEND)
|
||||
-DTRACE_ARCHIVE=${TRACE_CASE_TRACE_ARCHIVE}
|
||||
-DTRACE_FILE=${TRACE_CASE_TRACE_FILE}
|
||||
-DTRACE_GOLDEN=${TRACE_CASE_GOLDEN}
|
||||
-DTRACE_ALTERNATE_GOLDEN=${TRACE_CASE_ALTERNATE_GOLDEN}
|
||||
-DTRACE_BACKEND=${BACKEND}
|
||||
-DTRACE_TARGET_CALL=${TRACE_CASE_TARGET_CALL}
|
||||
-DTRACE_WIDTH=${TRACE_CASE_WIDTH}
|
||||
@@ -469,6 +471,7 @@ add_trace_replay_test_for_backends(minecraft-1.21.4-fabric-iris-nostalgia-in-wor
|
||||
TRACE_ARCHIVE ${MOBILEGL_TRACE_ROOT}/fixtures/minecraft-1.21.4-fabric-iris-nostalgia-in-world.tgz
|
||||
TRACE_FILE trace.trace
|
||||
GOLDEN ${MOBILEGL_TRACE_ROOT}/fixtures/minecraft-1.21.4-fabric-iris-nostalgia-in-world.0000153808-linux-mesa.png
|
||||
ALTERNATE_GOLDEN ${MOBILEGL_TRACE_ROOT}/fixtures/minecraft-1.21.4-fabric-iris-nostalgia-in-world.0000153808.png
|
||||
TARGET_CALL 153808
|
||||
WIDTH 854
|
||||
HEIGHT 480
|
||||
|
||||
@@ -22,6 +22,10 @@ endif()
|
||||
if(NOT DEFINED TRACE_FUZZ_PERCENT OR "${TRACE_FUZZ_PERCENT}" STREQUAL "")
|
||||
set(TRACE_FUZZ_PERCENT 20)
|
||||
endif()
|
||||
set(alternate_golden_args)
|
||||
if(DEFINED TRACE_ALTERNATE_GOLDEN AND NOT "${TRACE_ALTERNATE_GOLDEN}" STREQUAL "")
|
||||
list(APPEND alternate_golden_args --alternate-golden "${TRACE_ALTERNATE_GOLDEN}")
|
||||
endif()
|
||||
|
||||
if(EXISTS "${TRACE_OUTPUT_DIR}")
|
||||
file(REMOVE_RECURSE "${TRACE_OUTPUT_DIR}")
|
||||
@@ -50,6 +54,7 @@ execute_process(
|
||||
COMMAND "${TRACE_REPLAY_EXE}"
|
||||
--trace "${trace_path}"
|
||||
--golden "${TRACE_GOLDEN}"
|
||||
${alternate_golden_args}
|
||||
--diff "${TRACE_OUTPUT_DIR}/output/${TRACE_CASE_NAME}-diff.png"
|
||||
--output "${TRACE_OUTPUT_DIR}/output"
|
||||
--backend "${TRACE_BACKEND}"
|
||||
|
||||
@@ -14,6 +14,7 @@ void PrintUsage(const char *argv0) {
|
||||
<< "\n"
|
||||
<< "Options:\n"
|
||||
<< " --golden PATH Golden PNG to compare against\n"
|
||||
<< " --alternate-golden PATH Additional acceptable golden PNG\n"
|
||||
<< " --diff PATH Difference PNG output path\n"
|
||||
<< " --backend NAME DirectGLES or DirectVulkan (default: DirectGLES)\n"
|
||||
<< " --mobilegl-library PATH libMobileGL.so path (default: libMobileGL.so)\n"
|
||||
@@ -64,6 +65,12 @@ bool ParseArgs(int argc, char **argv, mobilegl_trace::Request &request) {
|
||||
if (!ReadValue(argc, argv, i, request.tracePath)) return false;
|
||||
} else if (arg == "--golden") {
|
||||
if (!ReadValue(argc, argv, i, request.goldenPath)) return false;
|
||||
} else if (arg == "--alternate-golden") {
|
||||
std::string alternateGolden;
|
||||
if (!ReadValue(argc, argv, i, alternateGolden)) return false;
|
||||
if (!alternateGolden.empty()) {
|
||||
request.alternateGoldenPaths.push_back(alternateGolden);
|
||||
}
|
||||
} else if (arg == "--diff") {
|
||||
if (!ReadValue(argc, argv, i, request.diffPath)) return false;
|
||||
} else if (arg == "--output") {
|
||||
|
||||
Reference in New Issue
Block a user