* docs: add guide for AHB zero-copy input on Android
Address #5531 - the AHB import API (VkAndroidHardwareBufferImageAllocator,
ImportAndroidHardwareBufferPipeline) has no user-facing docs today and
existing users hit linker errors against the official prebuilt because
build-android.cmd targets -DANDROID_PLATFORM=android-21 which strips the
AHB symbols.
The new page covers build prerequisites (__ANDROID_API__ >= 26),
AImageReader_newWithUsage setup, the per-frame call sequence, per-AHB-
pointer pipeline caching (~5000x setup-cost reduction), and trouble-
shooting for #5531 / #5190.
* docs(ahb): add ex.input(VkMat) format-matching caveat + soften cache bound
Two findings from a follow-up spike on Adreno 830:
- ex.input(VkMat) does NOT auto-convert format. The previous draft's hint
"// ex.input(\"data\", dst, cmd);" actually crashes if the network was
loaded with use_fp16_storage / use_fp16_packed (common on Vulkan path) -
NetPrivate::forward_layer recurses on itself looking for an implicit
converter that doesn't exist, observed as a ~180-frame stack overflow at
net.cpp:251. Add a dedicated caveat explaining the failure mode and the
vkdev->convert_packing workaround, and weaken the snippet hint accordingly.
- AImageReader's AHB pool isn't strictly bounded by maxImages. Under steady
state it stays at maxImages (3 -> 3 cache_n in 36 consecutive cycles), but
surface/focus events can transiently push it higher (observed cache_n=7
with maxImages=3 in one run). Soften the "<= maxImages entries" claim.
* docs(ahb): note cross-vendor validation (Adreno + Mali)
Same import path verified end-to-end on:
- Adreno 830, Vulkan 1.3.284 (Galaxy S25 Ultra)
- Mali-G925 Immortalis MC12, Vulkan 1.3.278 (Galaxy Tab S11)
Both report VK_ANDROID_external_memory_android_hardware_buffer spec
version 5 and surface AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420 AHBs from the
camera HAL. Only auxiliary usage bits differ between vendors and are
not consumed by this path (Adreno: 0x20103, Mali: 0x20133).
* Refactor BF16 conversion to use float32_to_bfloat16
* Fix image URL and update build instructions in README
* Remove NCNN_SIMPLEOMP option from workflow
* Update build instructions in how-to-build.md
Add single-file Vulkan pipeline cache save/load support with strict device, driver, shader, and payload validation. Cache compiled SPIR-V per shader hash alongside the driver pipeline cache blob, add focused cache tests, and document the current Vulkan pipeline cache architecture and usage.
Limit Vulkan layer test cache growth with a shared test-only pipeline cache window so repeated test_layer() calls can still exercise cache reuse.
Co-authored-by: futz12 <56149058+futz12@users.noreply.github.com>
Co-authored-by: CLV-Iclucia <89170890+CLV-Iclucia@users.noreply.github.com>
- synchronize the latest English content to the Chinese documentation
- correct spelling errors in the English version of glsl-extention
- Fix spelling 'enable_validation_layer' in src/gpu.cpp
* Support multiple QNX SDP versions: 700, 710, 800, etc
* Support windows and linux hosts when find programs like C/C++ compilers
* Better hint message by recommend users invoking QNX SDP bundled script
* Precise to aarch64 in file naming
* Update how-to-build.md QNX section
* add read npy for ncnn2table
* optimize npy to mat to avoid non-contiguous memory data
* add create the calibration table from npy
* add catch exception