Skip to content

[DO NOT MERGE] QVAC-19254 chore: tts-ggml Adreno device-farm via overlay-ports (ext-ggml PR#17, whisper.cpp PR#36)#2320

Closed
pratiknarola-t wants to merge 13 commits into
mainfrom
QVAC-19254-android-devicefarm-tts-ggml
Closed

[DO NOT MERGE] QVAC-19254 chore: tts-ggml Adreno device-farm via overlay-ports (ext-ggml PR#17, whisper.cpp PR#36)#2320
pratiknarola-t wants to merge 13 commits into
mainfrom
QVAC-19254-android-devicefarm-tts-ggml

Conversation

@pratiknarola-t

@pratiknarola-t pratiknarola-t commented May 28, 2026

Copy link
Copy Markdown
Contributor

What

Switches this [DO NOT MERGE] Adreno TTS device-farm PR from a registry test-branch reference to overlay-ports copied straight into the PR, per reviewer feedback — so the exact tts-cpp / ggml-speech sources under test are visible here, with no registry-branch indirection to chase.

Overlay ports (packages/tts-ggml/vcpkg-overlay-ports/)

Both are verbatim copies of the registry ports — same vcpkg_from_github REFs + SHA512s the prior registry-based run used — so the tested artifact is unchanged; only the indirection is removed.

default-registry

Reverted to the production baseline 74d2dfd0 (no reference, no baseline advance). Overlay ports supply tts-cpp + ggml-speech; everything else resolves from the production registry exactly as on main.

CI

Device-farm run: https://github.com/tetherto/qvac/actions/runs/26821191379

@pratiknarola-t pratiknarola-t requested review from a team as code owners May 28, 2026 11:14
@pratiknarola-t pratiknarola-t added the verified Authorize secrets / label-gate in PR workflows label May 28, 2026
@pratiknarola-t pratiknarola-t force-pushed the QVAC-19254-android-devicefarm-tts-ggml branch from df4262f to 0d9cf8c Compare May 28, 2026 13:21
…st branch + un-quarantine Adreno GPU smoke for Device Farm validation

Bumps the tts-ggml default-registry baseline to
tetherto/qvac-registry-vcpkg@945210e (QVAC-19254-android-devicefarm-test
branch), which pins:
  - ggml-speech port REF -> tetherto/qvac-ext-ggml@2bb83370 (combined
    test branch with PR #14 Vulkan-Adreno guards + PR #15 OpenCL
    elementwise kernels on top of speech tip c9126afc / v0.10.2)
  - tts-cpp port REF -> tetherto/qvac-ext-lib-whisper.cpp@afe2fd21
    (PR #35 head: Adreno backend tier policy)

Adds spirv-headers to the microsoft/vcpkg registry packages array so
ggml-speech's vulkan-feature dependency resolves (mirrors what
transcription-whispercpp already does for the whisper-cpp port).

Removes the Android short-circuit in the Chatterbox GPU smoke test so
the AWS Device Farm Adreno 740 pool actually exercises the GPU path.
Without the still-uncommitted ggml-opencl device_description fix, the
tts-cpp tier policy may pick Vulkan on Adreno; PR #14's Qualcomm-gated
guards are the safety net being validated in that path. PR #15's
OpenCL kernels are exercised only if the policy picks OpenCL.

Revert this branch once PR #14 / PR #15 / PR #35 land on their
respective default branches and a registry bump captures the merged
state.

QVAC-19254
…54-android-devicefarm-test branch

Without the 'reference' field, vcpkg only fetches the registry's default
ref (main) and the baseline SHA 945210e5 -- which lives on
QVAC-19254-android-devicefarm-test in qvac-registry-vcpkg, not main --
is unreachable from the local clone, so vcpkg can't see the new
tts-cpp#4 / ggml-speech#1 versions.

Setting 'reference' explicitly tells vcpkg which branch to fetch so the
test-branch commit becomes reachable. Documented at
learn.microsoft.com/en-us/vcpkg/consume/git-registries.

QVAC-19254
…RV-Headers patch

The previous baseline 945210e5 shipped ports/ggml-speech/patches/
0001-ggml-vulkan-find-spirv-headers.patch authored against speech tip
c9126afc. PR #14's mul_mat_vec / Adreno guards (also on this test
branch) added a Qualcomm-gated 'liblog' link block between Vulkan
target_link_libraries and target_include_directories in
src/ggml-vulkan/CMakeLists.txt, breaking the patch's hunk-2 context.

Registry branch QVAC-19254-android-devicefarm-test was amended +
force-pushed with a regenerated patch whose hunk-2 context matches
the PR-#14 layout. Tree-SHA of ports/ggml-speech updates from
e941a423... -> 381370e3...; baseline.json + versions/g- updated to
match.

QVAC-19254
… Device Farm Adreno smoke

The Device Farm Chatterbox GPU smoke test (un-quarantined in the prior
commit) showed backendDevice=0 / backendId=0 (CPU) on Samsung S25 Ultra
+ Pixel 9 even with useGPU=true. Logcat traced it to the
ChatterboxModel::loadLocked() #ifdef __ANDROID__ block that
unconditionally forces useGpu=false before tts_cpp::chatterbox::Engine
is constructed -- so tts-cpp's init_gpu_backend (with PR #14 + PR #15
fixes) is never exercised on Android.

Lifting the guard on the test branch so the AWS Device Farm Adreno smoke
can validate the PR #14 (Vulkan-Adreno guards) and PR #15 (OpenCL
elementwise kernels) paths end-to-end. The symmetric SupertonicModel
guard stays in place (out of scope; Supertonic GPU smoke currently
passes via JS-layer rejection on the test's invalid model path).

[DO NOT MERGE] branch only.

QVAC-19254
Re-pins the QVAC-19254 default-registry baseline to qvac-registry-vcpkg
61f04e9 (tts-cpp 2026-05-20#5), which carries the Android Adreno-only
GPU allowlist from qvac-ext-lib-whisper.cpp PR #35 (6d3751be): non-Adreno
Android GPUs fall back to CPU instead of aborting. Supersedes the earlier
defensive-try-catch attempt (verified ineffective: ggml_abort is not
catchable from C++).
…ched); Android GPU-smoke tolerates CPU fallback

- vcpkg-configuration.json baseline -> 990ebbf (tts-cpp 0a85f1d1: run_hift_decode
  capability-gates the S3Gen ggml_backend_sched so Metal/desktop run the HiFT graph
  directly instead of aborting in the scheduler split; Adreno OpenCL stays on the sched).
- gpu-smoke.test.js: a clean CPU fallback is an expected PASS on Android (GPU is
  Adreno-only by design; non-Adreno vendors route to CPU). iOS stays STRICT (must
  engage Metal) as the regression guard; Adreno OpenCL/Vulkan still asserted when
  the GPU is engaged.
…p registry test-branch pin)

Replace the default-registry test-branch reference (QVAC-19254-android-devicefarm-test) with overlay-ports copied straight into the PR, so the exact tts-cpp / ggml-speech sources under test are visible here without the registry indirection (reviewer feedback). default-registry reverts to the production baseline 74d2dfd0 (no baseline advance).

tts-cpp overlay -> qvac-ext-lib-whisper.cpp PR #36 @ 5205428e; ggml-speech overlay -> qvac-ext-ggml PR #14 + #17 @ 2bb83370.
…(PR #17 review fixes)

Point the ggml-speech overlay-port at the PR #17 branch head (speech v0.10.2 sync + ggml-opencl elementwise kernels for Chatterbox S3Gen + the PR #17 review fixes). Note: this drops the PR #14 (ggml-vulkan Adreno 740 / Qualcomm) commits that the prior 2bb83370 pin carried.
…-only source

The overlay's 0001-ggml-vulkan-find-spirv-headers.patch was contexted against PR #14's ggml-vulkan/CMakeLists.txt change (the Android log-link block), so it did not apply on the PR #17-only source (8de98a43) -> the vulkan-feature build failed on Linux/Android/Windows. Re-context hunk 2 onto plain PR #17 (target_include_directories) so the spirv-headers build glue applies independently of PR #14. Verified with 'git apply --check' against 8de98a43.
…a9a389 (HiFT graph cache)

Point the tts-cpp overlay-port at PR #36 HEAD 83a9a389 = GPU scheduling (5205428e) + the Android Adreno-only GPU allowlist (is_qualcomm refinement) + the HiFT direct-path graph cache. Re-verifies the device-farm CI on the updated combined stack (with ggml-speech still at PR #17 8de98a43).
…4f47d2 (is_qualcomm OR + Supertonic graph cache)
Picks up the gallocr allocation-failure checks on the Supertonic direct path; REF + SHA512 updated to the new PR #36 HEAD.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

verified Authorize secrets / label-gate in PR workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant