diff --git a/sexp_effects/primitive_libs/streaming_gpu.py b/sexp_effects/primitive_libs/streaming_gpu.py index bcc3a99..3d7fa8e 100644 --- a/sexp_effects/primitive_libs/streaming_gpu.py +++ b/sexp_effects/primitive_libs/streaming_gpu.py @@ -899,7 +899,12 @@ def prim_fused_pipeline(img, effects_list, **dynamic_params): if not _FUSED_KERNELS_AVAILABLE: # Fallback: apply effects one by one - result = img + # Wrap in GPUFrame if needed (GPU functions expect GPUFrame objects) + if isinstance(img, GPUFrame): + result = img + else: + on_gpu = hasattr(img, '__cuda_array_interface__') + result = GPUFrame(img, on_gpu=on_gpu) for effect in effects_list: op = effect['op'] if op == 'rotate':