-
Andrey Filippov authored
Architecture B (chosen after finding GpuQuad's surface is ~70 methods, too large for a clean interface): - GpuQuad: add a protected no-alloc constructor (QuadCLT, debug_level, native_backend marker) that sets only the final config fields (gpuTileProcessor=null) and allocates NO JCuda memory / context. The working JCuda constructors are untouched. - New GpuQuadJna extends GpuQuad: uses the no-alloc ctor, then stands up the native libtileproc.so via TpJna (tp_create_module + tp_proc_create + tp_proc_setup). Inherits all methods (so it compiles); GPU-touching methods will be overridden incrementally to delegate to TpProc, the rest throw to fail loudly off the validated path. close() frees native memory deterministically. mvn -DskipTests compile: clean. JCUDA remains the default/working path. Next: per-method override marshalling (kernels/bayer/geometry/tasks + convert/imclt/getRBG/corr), then the backend selector (QuadCLT ctor) and the live JCUDA-vs-JNA file comparison. Co-Authored-By:Claude Opus 4.8 (1M context) <noreply@anthropic.com>
a138f826