-
Andrey Filippov authored
Fixes the whole bug-class behind the -Dtp.backend=jna NPE in GpuQuad.setLpfRbg (CuasRanging.detectTargets -> CuasMotion -> setRectilinearReferenceTD): the rectilinear single-camera GpuQuad was built via the raw JCuda ctor, bypassing the backend factory, so in JNA mode it got a null gpuTileProcessor. - GpuQuad.createRectilinear(): backend-aware factory parallel to create(). JCUDA branch is byte-for-byte the legacy ctor (oracle path untouched); JNA branch builds a clean rectilinear GpuQuadJna. New no-alloc rectilinear ctor (num_cams=1, no kernels/geometry). - GpuQuadJna: rectilinear ctor + shared initNative(); the two overrides the gap-finder predicted -- reAllocateClt (no-op; native CLT pre-sized in setup) and singular setBayerImage (-> tp_proc_set_image). execConvertDirect already guarded on the rectilinear flag. - CuasMotion:452 routed through createRectilinear (CUAS rectilinear now JNA-capable). - ComboMatch:899 fail-loud UnsupportedOperationException in JNA mode (orthomosaic, wider unported surface, off the current path -- stays JCuda). Java-only; libtileproc.so untouched. mvn compile clean. JCuda legacy frozen as oracle; core convert_direct flag-soup cleanup deferred to Phase 2. Co-Authored-By:Claude Opus 4.8 (1M context) <noreply@anthropic.com>
b65ee10d