mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-07 19:58:32 +09:00
[Fix] (trace-replay): stabilize ANGLE retrace cases
This commit is contained in:
@@ -18,6 +18,7 @@ Usage:
|
||||
--trace-file FILE_IN_ARCHIVE \
|
||||
--golden FILE \
|
||||
[--alternate-golden FILE] \
|
||||
[--angle-library-dir DIR] \
|
||||
--target-call N \
|
||||
--width N \
|
||||
--height N \
|
||||
@@ -27,12 +28,15 @@ Usage:
|
||||
--crop-width N \
|
||||
--crop-height N \
|
||||
[--use-pbuffer] \
|
||||
[--avoid-angle-llvmpipe-sampler-mipmap-min-filter] \
|
||||
--timeout-seconds N
|
||||
|
||||
Set MOBILEGL_RETRACE_USE_ANGLE=1 to run DirectGLES replay with packaged ANGLE
|
||||
instead of the device system GLES driver.
|
||||
Set MOBILEGL_RETRACE_USE_PBUFFER=1 or pass --use-pbuffer to run DirectGLES
|
||||
against an offscreen EGL pbuffer instead of the Activity surface.
|
||||
Pass --avoid-angle-llvmpipe-sampler-mipmap-min-filter for DirectGLES traces that
|
||||
need ANGLE llvmpipe sampler mipmap filters downgraded to avoid driver stalls.
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -79,6 +83,7 @@ trace_archive=""
|
||||
trace_file=""
|
||||
golden_path=""
|
||||
alternate_golden_path=""
|
||||
angle_library_dir=""
|
||||
target_call=""
|
||||
width=""
|
||||
height=""
|
||||
@@ -88,6 +93,7 @@ crop_y=""
|
||||
crop_width=""
|
||||
crop_height=""
|
||||
use_pbuffer=0
|
||||
avoid_angle_llvmpipe_sampler_mipmap_min_filter=0
|
||||
timeout_seconds=""
|
||||
|
||||
while [ "$#" -gt 0 ]; do
|
||||
@@ -110,6 +116,7 @@ while [ "$#" -gt 0 ]; do
|
||||
shift 2
|
||||
fi
|
||||
;;
|
||||
--angle-library-dir) angle_library_dir="$(next_arg "$@")"; shift 2 ;;
|
||||
--target-call) target_call="$(next_arg "$@")"; shift 2 ;;
|
||||
--width) width="$(next_arg "$@")"; shift 2 ;;
|
||||
--height) height="$(next_arg "$@")"; shift 2 ;;
|
||||
@@ -119,6 +126,10 @@ while [ "$#" -gt 0 ]; do
|
||||
--crop-width) crop_width="$(next_arg "$@")"; shift 2 ;;
|
||||
--crop-height) crop_height="$(next_arg "$@")"; shift 2 ;;
|
||||
--use-pbuffer) use_pbuffer=1; shift 1 ;;
|
||||
--avoid-angle-llvmpipe-sampler-mipmap-min-filter)
|
||||
avoid_angle_llvmpipe_sampler_mipmap_min_filter=1
|
||||
shift 1
|
||||
;;
|
||||
--timeout-seconds) timeout_seconds="$(next_arg "$@")"; shift 2 ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) die "unknown argument: $1" ;;
|
||||
@@ -150,6 +161,10 @@ test -f "${golden_path}" || die "golden image does not exist: ${golden_path}"
|
||||
if [ -n "${alternate_golden_path}" ]; then
|
||||
test -f "${alternate_golden_path}" || die "alternate golden image does not exist: ${alternate_golden_path}"
|
||||
fi
|
||||
if [ -n "${angle_library_dir}" ]; then
|
||||
test -f "${angle_library_dir}/libEGL_angle.so" || die "ANGLE override is missing libEGL_angle.so: ${angle_library_dir}"
|
||||
test -f "${angle_library_dir}/libGLESv2_angle.so" || die "ANGLE override is missing libGLESv2_angle.so: ${angle_library_dir}"
|
||||
fi
|
||||
|
||||
safe_case="$(printf '%s' "${case_name}" | sed 's/[^A-Za-z0-9._-]/_/g')"
|
||||
app_dir="/data/user/0/${package_name}/files/trace-replay"
|
||||
@@ -188,10 +203,18 @@ prepare_fixture() {
|
||||
if [ -n "${alternate_golden_path}" ]; then
|
||||
adb_device_path push "$(host_path_for_adb "${alternate_golden_path}")" "/data/local/tmp/mobilegl-${safe_case}.alternate-golden.png"
|
||||
fi
|
||||
if [ -n "${angle_library_dir}" ]; then
|
||||
adb_device_path push "$(host_path_for_adb "${angle_library_dir}/libEGL_angle.so")" "/data/local/tmp/mobilegl-${safe_case}.libEGL_angle.so"
|
||||
adb_device_path push "$(host_path_for_adb "${angle_library_dir}/libGLESv2_angle.so")" "/data/local/tmp/mobilegl-${safe_case}.libGLESv2_angle.so"
|
||||
fi
|
||||
adb_device_path shell chmod 0644 "/data/local/tmp/mobilegl-${safe_case}.trace" "/data/local/tmp/mobilegl-${safe_case}.golden.png"
|
||||
if [ -n "${alternate_golden_path}" ]; then
|
||||
adb_device_path shell chmod 0644 "/data/local/tmp/mobilegl-${safe_case}.alternate-golden.png"
|
||||
fi
|
||||
if [ -n "${angle_library_dir}" ]; then
|
||||
adb_device_path shell chmod 0644 "/data/local/tmp/mobilegl-${safe_case}.libEGL_angle.so" \
|
||||
"/data/local/tmp/mobilegl-${safe_case}.libGLESv2_angle.so"
|
||||
fi
|
||||
}
|
||||
|
||||
copy_fixture_to_app() {
|
||||
@@ -206,6 +229,13 @@ copy_fixture_to_app() {
|
||||
if [ -n "${alternate_golden_path}" ]; then
|
||||
adb_device_path shell run-as "${package_name}" cp "${alternate_golden_tmp}" "${app_dir}/input/alternate-golden.png"
|
||||
fi
|
||||
if [ -n "${angle_library_dir}" ]; then
|
||||
adb_device_path shell run-as "${package_name}" mkdir -p "${app_dir}/angle"
|
||||
adb_device_path shell run-as "${package_name}" cp "/data/local/tmp/mobilegl-${safe_case}.libEGL_angle.so" \
|
||||
"${app_dir}/angle/libEGL_angle.so"
|
||||
adb_device_path shell run-as "${package_name}" cp "/data/local/tmp/mobilegl-${safe_case}.libGLESv2_angle.so" \
|
||||
"${app_dir}/angle/libGLESv2_angle.so"
|
||||
fi
|
||||
}
|
||||
|
||||
run_retrace() {
|
||||
@@ -236,10 +266,16 @@ run_retrace() {
|
||||
fi
|
||||
if [ "${use_angle}" -eq 1 ]; then
|
||||
set -- "$@" --ez use_angle true
|
||||
if [ -n "${angle_library_dir}" ]; then
|
||||
set -- "$@" --es angle_library_dir "${app_dir}/angle"
|
||||
fi
|
||||
fi
|
||||
if [ "${use_pbuffer}" -eq 1 ] && [ "${backend}" = "DirectGLES" ]; then
|
||||
set -- "$@" --ez use_pbuffer true
|
||||
fi
|
||||
if [ "${avoid_angle_llvmpipe_sampler_mipmap_min_filter}" -eq 1 ] && [ "${backend}" = "DirectGLES" ]; then
|
||||
set -- "$@" --ez avoid_angle_llvmpipe_sampler_mipmap_min_filter true
|
||||
fi
|
||||
set -- "$@" \
|
||||
--es output_dir "${app_dir}/output" \
|
||||
--es diff_path "${app_dir}/output/${safe_case}-diff.png" \
|
||||
|
||||
Reference in New Issue
Block a user