camera: intel: ipu6: sync still capture tnr bypass mode

Control the tnr bypass with TG in psysprocessor only
remove the judgement in GPUexecutor to avoid tnr lose
effect
Add dump support for gpu tnr image

BUG=b:149068439, b:149068672
TEST=Full tested pass for camera functions.

Change-Id: I9d474af5b4e61bb1d6f1e38a35c0100a4f569a18
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2597056
Tested-by: Zong Li <zong.li@intel.com>
Reviewed-by: Ren-Pei Zeng <kamesan@chromium.org>
Commit-Queue: Ren-Pei Zeng <kamesan@chromium.org>
diff --git a/camera/hal/intel/ipu6/src/core/psysprocessor/GPUExecutor.cpp b/camera/hal/intel/ipu6/src/core/psysprocessor/GPUExecutor.cpp
index 92244ae..2c76028 100644
--- a/camera/hal/intel/ipu6/src/core/psysprocessor/GPUExecutor.cpp
+++ b/camera/hal/intel/ipu6/src/core/psysprocessor/GPUExecutor.cpp
@@ -370,6 +370,11 @@
     ret = runTnrFrame(inBuf, outBuf);
     CheckError(ret != OK, ret, "@%s: run tnr failed", __func__);
 
+    if (CameraDump::isDumpTypeEnable(DUMP_GPU_TNR) && mStreamId == STILL_STREAM_ID) {
+        CameraDump::dumpImage(mCameraId, inBuf, M_GPUTNR, inBuffers.begin()->first);
+        CameraDump::dumpImage(mCameraId, outBuf, M_GPUTNR, outBuffers.begin()->first);
+    }
+
     // Remove internal output buffers
     for (auto& item : outBuffers) {
         if (item.second.get() == mInternalOutputBuffers[item.first].get()) {
@@ -507,7 +512,7 @@
 
     uint32_t sequence = inBuf->getSequence();
     int ret = OK;
-    if (mIntelTNR && !isBypassStillTnr(sequence)) {
+    if (mIntelTNR) {
         ret = updateTnrISPConfig(mTnr7usParam, sequence);
         CheckError(ret != OK, UNKNOWN_ERROR, " %s Failed to update TNR parameters", __func__);
     }
@@ -520,7 +525,8 @@
                        : outBuf->getBufferAddr();
     if (!outPtr) return UNKNOWN_ERROR;
 
-    if (!mIntelTNR || isBypassStillTnr(sequence)) {
+    outBuf->setSequence(sequence);
+    if (!mIntelTNR) {
         MEMCPY_S(outPtr, bufferSize, inBuf->getBufferAddr(), inBuf->getBufferSize());
         if (memoryType == V4L2_MEMORY_DMABUF) {
             CameraBuffer::unmapDmaBufferAddr(outPtr, bufferSize);
diff --git a/camera/hal/intel/ipu6/src/iutils/CameraDump.cpp b/camera/hal/intel/ipu6/src/iutils/CameraDump.cpp
index 58676a3..dc73f7b 100644
--- a/camera/hal/intel/ipu6/src/iutils/CameraDump.cpp
+++ b/camera/hal/intel/ipu6/src/iutils/CameraDump.cpp
@@ -54,7 +54,8 @@
     "isys",
     "psys",
     "de-inter",
-    "swip-op"
+    "swip-op",
+    "gpu-tnr"
 }; // map to the ModuleType
 
 static const char *StreamUsage[] = {
diff --git a/camera/hal/intel/ipu6/src/iutils/CameraDump.h b/camera/hal/intel/ipu6/src/iutils/CameraDump.h
index 3b51c84..6005231 100644
--- a/camera/hal/intel/ipu6/src/iutils/CameraDump.h
+++ b/camera/hal/intel/ipu6/src/iutils/CameraDump.h
@@ -75,6 +75,7 @@
 
     DUMP_AAL_OUTPUT = 1 << 23, // 0x800000 Decimal val 8388608
     DUMP_AAL_INPUT = 1 << 24, // 0x1000000 Decimal val 16777216
+    DUMP_GPU_TNR = 1 << 25, // 0x2000000
 };
 
 enum {
@@ -91,6 +92,7 @@
     M_PSYS,   // PSYS param, payload, frame dump
     M_DEINTR, // De-interlaced frame dump
     M_SWIPOP, // Sw Image processor frame dump
+    M_GPUTNR, // GPU TNR frame dump
 } ModuleType_t;
 
 typedef enum {