mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-07 19:58:32 +09:00
[Chore] (tools/cts): pick a run config the suite does not contradict
Two harness settings were producing failures that say nothing about the backend: - dEQP's FboRenderContext picks the first entry of its own depth/stencil format list, GL_DEPTH32F_STENCIL8, when the config leaves the bit counts DONT_CARE. framebuffer_blit meanwhile hardcodes GL_DEPTH24_STENCIL8 for its own buffers as soon as it detects an FBO surface, and then blits depth between the two - which the spec forbids for mismatched formats, so a conformant driver has no choice but to fail it. Default to --deqp-gl-config-name=rgba8888d24s8 so the wrapper framebuffer and the test agree. - --deqp-watchdog aborts the whole process when one case exceeds a hardcoded 30 seconds (framework/common/tcuApp.hpp). That is not a hang on a CPU rasterizer: several texture_swizzle cases take ~17s each standalone and cross the limit once the process is warm, which came back as ten spurious Timeouts. dEQP's own default is off, and --chunk-timeout is what actually rescues a genuinely wedged case, so default it off too and leave it selectable.
This commit is contained in:
@@ -58,11 +58,26 @@ def main():
|
||||
# explode (a 4-sample 16K depth texture alone is 4 GiB).
|
||||
ap.add_argument("--surface-size", type=int, default=256,
|
||||
help="--deqp-surface-width/height value")
|
||||
# With DONT_CARE depth/stencil bits dEQP's FboRenderContext picks the first entry of
|
||||
# its own format list, GL_DEPTH32F_STENCIL8. framebuffer_blit meanwhile hardcodes
|
||||
# GL_DEPTH24_STENCIL8 for its own buffers whenever it detects an FBO surface, then
|
||||
# blits depth between the two - which the spec forbids for mismatched formats, so a
|
||||
# conformant driver has to fail it. Asking for a config the test agrees with avoids
|
||||
# the contradiction instead of papering over it.
|
||||
ap.add_argument("--gl-config-name", default="rgba8888d24s8",
|
||||
help="--deqp-gl-config-name value (empty string to leave it unset)")
|
||||
ap.add_argument("--max-rounds", type=int, default=4000)
|
||||
ap.add_argument("--max-empty-streak", type=int, default=64,
|
||||
help="abort after this many consecutive chunks that produce no log at all")
|
||||
ap.add_argument("--chunk-timeout", type=int, default=1800,
|
||||
help="seconds before killing one glcts invocation (a wedged case never returns)")
|
||||
# dEQP's watchdog aborts the process when a single case exceeds a hardcoded 30s
|
||||
# (framework/common/tcuApp.hpp), which is not a hang on a CPU rasterizer - some
|
||||
# texture_swizzle cases legitimately take ~17s each and cross it once the process is
|
||||
# warm, so they came back as spurious Timeouts. dEQP's own default is off; the
|
||||
# chunk-timeout above is what actually rescues a genuinely wedged case.
|
||||
ap.add_argument("--watchdog", default="disable", choices=["enable", "disable"],
|
||||
help="--deqp-watchdog value")
|
||||
ap.add_argument("--skip-file", default=None,
|
||||
help="file of case names to exclude, e.g. cases known to wedge the host")
|
||||
ap.add_argument("--waiver-file", default=None,
|
||||
@@ -130,13 +145,13 @@ def main():
|
||||
f"--deqp-surface-width={args.surface_size}",
|
||||
f"--deqp-surface-height={args.surface_size}",
|
||||
"--deqp-terminate-on-device-lost=disable",
|
||||
# A wedged case aborts the process instead of stalling the chunk;
|
||||
# the runner then records it as Crash and resumes past it.
|
||||
"--deqp-watchdog=enable",
|
||||
f"--deqp-watchdog={args.watchdog}",
|
||||
"--deqp-log-images=disable",
|
||||
"--deqp-log-shader-sources=disable",
|
||||
f"--deqp-log-filename={qpa}",
|
||||
]
|
||||
if args.gl_config_name:
|
||||
cmd.append(f"--deqp-gl-config-name={args.gl_config_name}")
|
||||
if args.waiver_file:
|
||||
cmd.append(f"--deqp-waiver-file={os.path.abspath(args.waiver_file)}")
|
||||
timed_out = False
|
||||
|
||||
Reference in New Issue
Block a user