• Andrey Filippov's avatar
    CLAUDE: JNA rectilinear single-array config port (Phase 1) · b65ee10d
    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: 's avatarClaude Opus 4.8 (1M context) <noreply@anthropic.com>
    b65ee10d
GpuQuadJna.java 23 KB