diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp
index 52910a03..0b4bf7ff 100644
--- a/src/libcamera/software_isp/debayer_cpu.cpp
+++ b/src/libcamera/software_isp/debayer_cpu.cpp
@@ -483,10 +483,27 @@ void DebayerCpu::process(FrameBuffer *input, FrameBuffer *output, DebayerParams
 		return;
 	}
 
+       const uint8_t *uncached_src = in.planes()[0].data();
+       static uint8_t src[7000000];
+       unsigned long size = in.planes()[0].size();
+ 	if (size%8)
+        	 printf("very bad size!\n");
+
+       printf("copy...%ld\n", size);
+       (void) uncached_src;
+	if (1) {      
+	       unsigned int i;
+	       for (i=0; i<size/8; i++) {
+	               ((uint64_t *) src)[i] = ((uint64_t *) uncached_src)[i];
+	       }
+	}
+       printf("process...\n");
+       // debayer is "free" compared to the memcpy.
+
 	if (inputConfig_.patternSize.height == 2)
-		process2(in.planes()[0].data(), out.planes()[0].data());
+		process2(src, out.planes()[0].data());
 	else
-		process4(in.planes()[0].data(), out.planes()[0].data());
+		process4(src, out.planes()[0].data());
 
 	metadata.planes()[0].bytesused = out.planes()[0].size();
 
