diff --git a/config/linux/ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin b/config/linux/ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin index 4b785e4..db3f3c8 100644 Binary files a/config/linux/ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin and b/config/linux/ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin differ diff --git a/config/linux/ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin b/config/linux/ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin index f0960bc..bdb7364 100644 Binary files a/config/linux/ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin and b/config/linux/ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin differ diff --git a/config/linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin b/config/linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin index 6045a3f..768f1c6 100644 Binary files a/config/linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin and b/config/linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin differ diff --git a/config/linux/ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin b/config/linux/ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin index 41773f7..3863cbd 100644 Binary files a/config/linux/ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin and b/config/linux/ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin differ diff --git a/config/linux/ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin b/config/linux/ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin index ab8e8c8..8909ae9 100644 Binary files a/config/linux/ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin and b/config/linux/ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin differ diff --git a/config/linux/ipu7x/gcss/OV05C10_BBG501N3.IPU7X.bin b/config/linux/ipu7x/gcss/OV05C10_BBG501N3.IPU7X.bin index a48e24b..dfe81e6 100644 Binary files a/config/linux/ipu7x/gcss/OV05C10_BBG501N3.IPU7X.bin and b/config/linux/ipu7x/gcss/OV05C10_BBG501N3.IPU7X.bin differ diff --git a/config/linux/ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin b/config/linux/ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin index d20bf1a..5f81ac8 100644 Binary files a/config/linux/ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin and b/config/linux/ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin differ diff --git a/config/linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin b/config/linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin index f1345b4..cf657ed 100644 Binary files a/config/linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin and b/config/linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin differ diff --git a/config/linux/ipu7x/gcss/S5K3J1_GRBG_NONPDAF.IPU7X.bin b/config/linux/ipu7x/gcss/S5K3J1_GRBG_NONPDAF.IPU7X.bin index 4a3f64b..01c1595 100644 Binary files a/config/linux/ipu7x/gcss/S5K3J1_GRBG_NONPDAF.IPU7X.bin and b/config/linux/ipu7x/gcss/S5K3J1_GRBG_NONPDAF.IPU7X.bin differ diff --git a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp index ab40be6..4d71c04 100644 --- a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp +++ b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.cpp @@ -25,13 +25,14 @@ * suppliers or licensors in any way. */ #include "FragmentsConfigurator.h" +#include Ipu8FragmentsConfigurator::Ipu8FragmentsConfigurator(IStaticGraphConfig* staticGraph, OuterNode* node, uint32_t upscalerWidthGranularity) : _staticGraph(staticGraph), _node(node), _upscalerWidthGranularity(upscalerWidthGranularity) { } -StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() +StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments(std::vector& smurfKernels) { if (_staticGraph == nullptr || _node == nullptr) { @@ -44,17 +45,20 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() _node->fragmentVanishStatus[stripe] = VanishOption::Full; } - for (uint32_t j = 0; j < _node->nodeKernels.kernelCount; j++) + StaticGraphStatus res = StaticGraphStatus::SG_OK; + + const uint16_t* kenelConfigOrder = _node->getRunKernelConfigOrder(); + + for (uint16_t i = 0; i < _node->nodeKernels.kernelCount; i++) { + uint16_t j = kenelConfigOrder[i]; StaticGraphRunKernel* runKernel = &_node->nodeKernels.kernelList[j].run_kernel; StaticGraphFragmentDesc* kernelFragments = _node->nodeKernels.kernelList[j].fragment_descs; - // Take previous kernel as reference, unless we will change it below. StaticGraphFragmentDesc* prevKernelFragments = j == 0 ? nullptr : _node->nodeKernels.kernelList[j - 1].fragment_descs; uint32_t prevKernelUuid = j == 0 ? 0 : _node->nodeKernels.kernelList[j - 1].run_kernel.kernel_uuid; uint32_t referenceKernel = GraphResolutionConfiguratorHelper::getReferenceKernel(runKernel->kernel_uuid); - if (referenceKernel != 0) { // Special reference kernel @@ -76,45 +80,57 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() { case GraphResolutionConfiguratorKernelRole::DownScaler: { - configFragmentsDownscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsDownscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::EspaCropper: { - configFragmentsCropper(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsCropper(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::UpScaler: { - configFragmentsUpscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsUpscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::Output: { - configFragmentsOutput(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsOutput(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::TnrScaler: { - configFragmentsTnrScaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsTnrScaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::TnrFeederFull: case GraphResolutionConfiguratorKernelRole::TnrFeederSmall: { - configFragmentsTnrFeeder(runKernel, kernelFragments, kernelRole); + res = configFragmentsTnrFeeder(runKernel, kernelFragments, kernelRole); + break; + } + + case GraphResolutionConfiguratorKernelRole::Smurf: + { + res = configFragmentsSmurf(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments, smurfKernels); + break; + } + + case GraphResolutionConfiguratorKernelRole::SmurfFeeder: + { + res = configFragmentsSmurfFeeder(runKernel, kernelFragments); break; } case GraphResolutionConfiguratorKernelRole::NonRcb: { // Before zoom kernels - take prev kernel fragments as-is - copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); + res = copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); } default: @@ -123,6 +139,11 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() break; } } + + if (res != StaticGraphStatus::SG_OK) + { + return res; + } } return StaticGraphStatus::SG_OK; @@ -154,11 +175,64 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsDownscaler(StaticGra // Start of output is rounded up since this is what b2i_ds does (Creates pixels starting from the pixel after) value = (scaleFactor * kernelFragments[stripe].fragmentStartX) / 2; _outputStartX[runKernel->kernel_uuid][stripe] = static_cast(ceil(value)) * 2; + + // Check if pixels are missing in the last stripe + if (stripe == _node->numberOfFragments - 1) + { + if (_outputStartX[runKernel->kernel_uuid][stripe] + kernelFragments[stripe].fragmentOutputWidth < resInfo->output_width) + { + if (validateDownscalerOutputWidth(&(kernelFragments[stripe]), 4, stripe, scaleFactor, runKernel)) + { + kernelFragments[stripe].fragmentOutputWidth += 4; + } + } + } } return StaticGraphStatus::SG_OK; } +bool Ipu8FragmentsConfigurator::validateDownscalerOutputWidth(StaticGraphFragmentDesc* stripe, uint16_t addition, int32_t stripeIndex, double scaleFactor, StaticGraphRunKernel* runKernel) +{ + const double ratio_prec = 1U << GraphResolutionConfigurator::SCALE_PREC; + + int scaling_ratio = (int)ceil((1 / scaleFactor) * (double)(1U << GraphResolutionConfigurator::SCALE_PREC)); + const double scaling_ratio_f = static_cast(scaling_ratio) / ratio_prec; + + int32_t offset_common = ((scaling_ratio - (static_cast(1U) << GraphResolutionConfigurator::SCALE_PREC)) >> 1); + + uint32_t orig_horizontal_offset; + if (stripeIndex == 0) + { + orig_horizontal_offset = (runKernel->resolution_info->input_crop.left << GraphResolutionConfigurator::SCALE_PREC) + offset_common; + } + else + { + orig_horizontal_offset = offset_common; + } + const uint16_t fragment_start_x = stripe->fragmentStartX; + const double calc = ceil((static_cast(fragment_start_x) / scaling_ratio_f / 2.0)) * 2.0; //2 * ceil(x/2) means round up to a closest even number + double horizontal_offset = (static_cast(orig_horizontal_offset) / ratio_prec) + static_cast(scaling_ratio_f * calc - static_cast(fragment_start_x)); + + const int32_t fragment_input_width = stripe->fragmentInputWidth; + const int32_t fragment_output_width = stripe->fragmentOutputWidth + addition; + + int32_t horizontal_offset_fxp = static_cast(floor(horizontal_offset * ratio_prec)); + + //1 + int32_t horizontal_offset_min = 0; + int32_t horizontal_offset_max = ((5 * scaling_ratio) - (1U << GraphResolutionConfigurator::SCALE_PREC)) / 2; + + //2 + horizontal_offset_min = std::max((58982 * fragment_input_width) - (fragment_output_width * scaling_ratio), horizontal_offset_min); + horizontal_offset_max = std::min((72089 * fragment_input_width) - (fragment_output_width * scaling_ratio), horizontal_offset_max); + + //3 + horizontal_offset_max = std::min(fragment_input_width * (1 << GraphResolutionConfigurator::SCALE_PREC) + scaling_ratio * (1 + 1 / 128) - fragment_output_width * scaling_ratio, horizontal_offset_max); + + return (horizontal_offset_fxp >= horizontal_offset_min && horizontal_offset_fxp <= horizontal_offset_max); +} + void Ipu8FragmentsConfigurator::vanishStripe(uint8_t stripe, uint32_t runKerenlUuid, StaticGraphFragmentDesc* kernelFragments, VanishOption vanishOption) { _node->fragmentVanishStatus[stripe] = vanishOption; @@ -189,7 +263,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsCropper(StaticGraphR for (int8_t stripe = 0; stripe < _node->numberOfFragments; stripe++) { - if (leftPixel + VANISH_MIN >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) + if (leftPixel + MIN_STRIPE_WIDTH_BEFORE_TNR >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) { // This stripe is cropped out, vanish it! // Note that we set output width to 0 for ESPA cropper and forward. But Stripe vanishes much eairlier in pipe, and these infos are not updated. @@ -204,7 +278,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsCropper(StaticGraphR for (uint8_t stripe = _node->numberOfFragments - 1; stripe >= 0; stripe--) { - if (rightPixel <= kernelFragments[stripe].fragmentStartX + VANISH_MIN) + if (rightPixel <= kernelFragments[stripe].fragmentStartX + MIN_STRIPE_WIDTH_BEFORE_TNR) { // This stripe is cropped out, vanish it! // Note that we set output width to 0 for ESPA cropper and forward. But Stripe vanishes much eairlier in pipe, and these infos are not updated. @@ -321,7 +395,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsUpscaler(StaticGraph // We would like to keep upscalerWidthGranularity as large as possible in order to minimize the number of pixels that cannot be used for upscaling // (upscalerWidthGranularity is divided to stripes, so the larger it is the more accurately we can divide) - while (inputUnits % 2 == 0) + while (inputUnits % 4 == 0) { inputUnits /= 2; upscalerWidthGranularity *= 2; @@ -340,7 +414,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsUpscaler(StaticGraph continue; } - if (leftPixel >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) + if (leftPixel + MIN_STRIPE_WIDTH_AFTER_TNR >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) { // This stripe is cropped out, vanish it! vanishStripe(stripe, runKernel->kernel_uuid, kernelFragments, VanishOption::AfterTnr); @@ -359,7 +433,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsUpscaler(StaticGraph continue; } - if (rightPixel <= kernelFragments[stripe].fragmentStartX) + if (rightPixel <= kernelFragments[stripe].fragmentStartX + MIN_STRIPE_WIDTH_AFTER_TNR) { // This stripe is cropped out, vanish it! vanishStripe(stripe, runKernel->kernel_uuid, kernelFragments, VanishOption::AfterTnr); @@ -504,7 +578,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsOutput(StaticGraphRu { if (stripe == rightNonVanishedStripe) // last stripe { - kernelFragments[stripe].fragmentOutputWidth = static_cast(runKernel->resolution_info->input_width - _outputStartX[runKernel->kernel_uuid][stripe]); + kernelFragments[stripe].fragmentOutputWidth = static_cast(runKernel->resolution_info->output_width - _outputStartX[runKernel->kernel_uuid][stripe]); } else // first or middle stripe { @@ -654,7 +728,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrScaler(StaticGrap for (int32_t stripe = 0; stripe < _node->numberOfFragments; stripe++) { - if (_node->fragmentVanishStatus[stripe] != VanishOption::Full) + if (_node->fragmentVanishStatus[stripe] == VanishOption::AfterStats) { continue; } @@ -667,14 +741,14 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrScaler(StaticGrap // Save stripes for feeder configuration _tnrScalerFragments = kernelFragments; - _tnrScalerUuid = runKernel->kernel_uuid; + _tnrScalerRunKernel = runKernel; return StaticGraphStatus::SG_OK; } StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, GraphResolutionConfiguratorKernelRole kernelRole) { - if (kernelFragments == nullptr) + if (kernelFragments == nullptr || _tnrScalerFragments == nullptr || _tnrScalerRunKernel == nullptr) { return StaticGraphStatus::SG_ERROR; } @@ -691,6 +765,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGrap if (kernelRole == GraphResolutionConfiguratorKernelRole::TnrFeederFull) { // TNR Full resolution + kernelFragments[stripe].fragmentInputWidth = static_cast(_tnrScalerRunKernel->resolution_info->input_width); kernelFragments[stripe].fragmentOutputWidth = _tnrScalerFragments[stripe].fragmentInputWidth; kernelFragments[stripe].fragmentStartX = _tnrScalerFragments[stripe].fragmentStartX; _outputStartX[runKernel->kernel_uuid][stripe] = _tnrScalerFragments[stripe].fragmentStartX; @@ -698,20 +773,100 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGrap else // GraphResolutionConfiguratorKernelRole::TnrFeederSmall { // TNR Small resolution + kernelFragments[stripe].fragmentInputWidth = static_cast(_tnrScalerRunKernel->resolution_info->output_width); kernelFragments[stripe].fragmentOutputWidth = _tnrScalerFragments[stripe].fragmentOutputWidth; - kernelFragments[stripe].fragmentStartX = _outputStartX[_tnrScalerUuid][stripe]; - _outputStartX[runKernel->kernel_uuid][stripe] = _outputStartX[_tnrScalerUuid][stripe]; + kernelFragments[stripe].fragmentStartX = _outputStartX[_tnrScalerRunKernel->kernel_uuid][stripe]; + _outputStartX[runKernel->kernel_uuid][stripe] = _outputStartX[_tnrScalerRunKernel->kernel_uuid][stripe]; } } return StaticGraphStatus::SG_OK; } -void Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments) +StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, + uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels) +{ + if (kernelFragments == nullptr || prevKernelFragments == nullptr) + { + return StaticGraphStatus::SG_ERROR; + } + + copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); + + // Find the device that is fed by this smurf (the second in the pair) + StaticGraphRunKernel* deviceRunKernel = nullptr; + for (auto& smurfInfo : smurfKernels) + { + if (smurfInfo->_smurfRunKernel->kernel_uuid == runKernel->kernel_uuid) + { + deviceRunKernel = smurfInfo->_deviceRunKernel; + break; + } + } + + if (deviceRunKernel == nullptr) + { + // Smurf does not have a device? + return StaticGraphStatus::SG_ERROR; + } + + // Find the index of the device in the node kernels + StaticGraphFragmentDesc* deviceFragments = nullptr; + for (uint32_t j = 0; j < _node->nodeKernels.kernelCount; j++) + { + if (_node->nodeKernels.kernelList[j].run_kernel.kernel_uuid == deviceRunKernel->kernel_uuid) + { + + deviceFragments = _node->nodeKernels.kernelList[j].fragment_descs; + break; + } + } + + if (deviceFragments == nullptr) + { + // Smurf does not have a device? + return StaticGraphStatus::SG_ERROR; + } + + for (int8_t stripe = 0; stripe < _node->GetNumberOfFragments(); stripe++) + { + // If device is vanished, vanish the smurf too + if (deviceFragments[stripe].fragmentOutputWidth == 0 && + deviceFragments[stripe].fragmentInputWidth == 0) + { + vanishStripe(stripe, runKernel->kernel_uuid, kernelFragments, _node->fragmentVanishStatus[stripe]); + continue; + } + + // Smurf output is the same as the device input + kernelFragments[stripe].fragmentOutputWidth = deviceFragments[stripe].fragmentInputWidth; + } + + return StaticGraphStatus::SG_OK; +} + +StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurfFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments) +{ + if (runKernel == nullptr || kernelFragments == nullptr) + { + return StaticGraphStatus::SG_ERROR; + } + + _outputStartX[runKernel->kernel_uuid] = std::vector(_node->numberOfFragments, 0); + + for (uint8_t stripe = 0; stripe < _node->numberOfFragments; stripe++) + { + _outputStartX[runKernel->kernel_uuid][stripe] = static_cast(kernelFragments[stripe].fragmentStartX - runKernel->resolution_info->input_crop.left); + } + + return StaticGraphStatus::SG_OK; +} + +StaticGraphStatus Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments) { if (prevKernelFragments == nullptr || kernelFragments == nullptr) { - return; + return StaticGraphStatus::SG_ERROR; } _outputStartX[runKernel->kernel_uuid] = std::vector(_node->numberOfFragments, 0); @@ -719,7 +874,7 @@ void Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, S if (_outputStartX.find(prevKernelUuid) == _outputStartX.end()) { // This is the main DS, we start from it, no need to copy - return; + return StaticGraphStatus::SG_OK; } for (uint32_t i = 0; i < _node->numberOfFragments; i++) @@ -732,4 +887,6 @@ void Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, S _outputStartX[runKernel->kernel_uuid][i] = kernelFragments[i].fragmentStartX; } + + return StaticGraphStatus::SG_OK; } diff --git a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h index f3c6c9a..41fc1c1 100644 --- a/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h +++ b/modules/ipu_desc/ipu75xa/FragmentsConfigurator.h @@ -31,12 +31,12 @@ class Ipu8FragmentsConfigurator { public: - - static const int32_t VANISH_MIN = 16; + static const int32_t MIN_STRIPE_WIDTH_BEFORE_TNR = 128; + static const int32_t MIN_STRIPE_WIDTH_AFTER_TNR = 64; static const int32_t UPSCALER_MAX_OUTPUT_WIDTH = 4672; Ipu8FragmentsConfigurator(IStaticGraphConfig* staticGraph, OuterNode* node, uint32_t upscalerWidthGranularity); - StaticGraphStatus configureFragments(); + StaticGraphStatus configureFragments(std::vector& smurfKernels); private: // Stripe Actions - each filter will perform one action according to its role @@ -46,11 +46,15 @@ class Ipu8FragmentsConfigurator StaticGraphStatus configFragmentsOutput(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsTnrScaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsTnrFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, GraphResolutionConfiguratorKernelRole kernelRole); + StaticGraphStatus configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, + std::vector& smurfKernels); + StaticGraphStatus configFragmentsSmurfFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments); - void copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments); + StaticGraphStatus copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments); void vanishStripe(uint8_t stripe, uint32_t runKerenlUuid, StaticGraphFragmentDesc* kernelFragments, VanishOption vanishOption); uint32_t getPlaneStartAddress(uint32_t sumOfPrevWidths, FormatType formatType, uint8_t plane); uint16_t alignToFormatRestrictions(uint16_t size, FormatType bufferFormat); + bool validateDownscalerOutputWidth(StaticGraphFragmentDesc* stripe, uint16_t addition, int32_t stripeIndex, double scaleFactor, StaticGraphRunKernel* runKernel); OuterNode* _node = nullptr; IStaticGraphConfig* _staticGraph = nullptr; @@ -61,5 +65,5 @@ class Ipu8FragmentsConfigurator // Save TNR resolutions for feeder configurations StaticGraphFragmentDesc* _tnrScalerFragments = nullptr; - uint32_t _tnrScalerUuid = 0; + StaticGraphRunKernel* _tnrScalerRunKernel = nullptr; }; diff --git a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp index bd5dbb9..dcdc115 100644 --- a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp +++ b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.cpp @@ -629,7 +629,6 @@ StaticGraphStatus GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGra uint32_t& upscalerActualInputWidth, uint32_t& upscalerActualInputHeight, uint32_t& upscalerActualOutputWidth, uint32_t& upscalerActualOutputHeight) { - static const int SCALE_PREC = 16; const uint32_t ia_pal_isp_upscaler_1_0__scaling_ratio__min = 4096; const uint32_t max_upscaling = (1 << SCALE_PREC) / ia_pal_isp_upscaler_1_0__scaling_ratio__min; @@ -1166,14 +1165,6 @@ Ipu8GraphResolutionConfigurator::Ipu8GraphResolutionConfigurator(IStaticGraphCon _originalCropOfOutput = _outputRunKernel->resolution_info->input_crop; } - _widthIn2OutScale = static_cast(_outputRunKernel->resolution_history->input_width - - _outputRunKernel->resolution_history->input_crop.left - _outputRunKernel->resolution_history->input_crop.right) / - _outputRunKernel->resolution_history->output_width; - - _heightIn2OutScale = static_cast(_outputRunKernel->resolution_history->input_height - - _outputRunKernel->resolution_history->input_crop.top - _outputRunKernel->resolution_history->input_crop.bottom) / - _outputRunKernel->resolution_history->output_height; - SensorMode* sensorMode = nullptr; _staticGraph->getSensorMode(&sensorMode); if (sensorMode == nullptr) @@ -1193,10 +1184,14 @@ Ipu8GraphResolutionConfigurator::Ipu8GraphResolutionConfigurator(IStaticGraphCon } #if SUPPORT_FRAGMENTS == 1 + + initIsFragments(); + if (_node != nullptr && _node->GetNumberOfFragments() > 1) { _fragmentsConfigurator = new Ipu8FragmentsConfigurator(_staticGraph, _node, _upscalerStepW); } + #endif } @@ -1211,6 +1206,13 @@ Ipu8GraphResolutionConfigurator::~Ipu8GraphResolutionConfigurator() delete _fragmentsConfigurator; _fragmentsConfigurator = nullptr; } + + for (auto& smurfInfo : _smurfKernels) + { + delete smurfInfo; + } + _smurfKernels.clear(); + #endif } @@ -1330,14 +1332,50 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::initKernelsForUpdate() if (initRunKernel(smurfUuid.first, runKernel) == StaticGraphStatus::SG_OK && initRunKernel(smurfUuid.second, deviceRunKernel) == StaticGraphStatus::SG_OK) { - std::pair runKernelPair = std::make_pair(runKernel, deviceRunKernel); - _smurfKernels.push_back(runKernelPair); + SmurfKernelInfo* smurfInfo = new SmurfKernelInfo(); + smurfInfo->_smurfRunKernel = runKernel; + smurfInfo->_deviceRunKernel = deviceRunKernel; + smurfInfo->_originalDeviceCropHistory = deviceRunKernel->resolution_history->input_crop; + smurfInfo->_originalSmurfOutputCrop = runKernel->resolution_info->output_crop; + + _smurfKernels.push_back(smurfInfo); } } return StaticGraphStatus::SG_OK; } +StaticGraphStatus Ipu8GraphResolutionConfigurator::initIsFragments() +{ + _isFragments = false; + + if (_downscalerRunKernel == nullptr) + { + return StaticGraphStatus::SG_ERROR; + } + +#ifdef STATIC_GRAPH_USE_IA_LEGACY_TYPES + if (_downscalerRunKernel->system_api.size != ((GRA_ROUND_UP(sizeof(SystemApiRecordHeader), 4)) + (sizeof(StaticGraphKernelSystemApiB2iDs1_1)))) + { + // TODO log error + return StaticGraphStatus::SG_ERROR; + } +#endif + + auto systemApiHeader = static_cast(_downscalerRunKernel->system_api.data); + if (systemApiHeader->systemApiUuid != GraphResolutionConfiguratorHelper::getRunKernelDownscalerSystemApiUuid()) + { + // TODO log error + return StaticGraphStatus::SG_ERROR; + } + + StaticGraphKernelSystemApiB2iDs1_1* systemApi = reinterpret_cast + (static_cast(_downscalerRunKernel->system_api.data) + GRA_ROUND_UP(sizeof(SystemApiRecordHeader), 4)); + + _isFragments = systemApi->is_striping; + return StaticGraphStatus::SG_OK; +} + StaticGraphStatus Ipu8GraphResolutionConfigurator::updateStaticGraphConfig(const RegionOfInterest& roi, bool isCenteredZoom) { if (_staticGraph == nullptr) @@ -1504,9 +1542,9 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso // After resolution history was updated, re-configure SAP devices to get the correct FOV // We do not change the sap feeders configuration, only update the crop & scale of smurfs - for (auto& runKernelForUpdate : _smurfKernels) + for (auto& smurfInfo : _smurfKernels) { - if (updateRunKernelSmurf(runKernelForUpdate.first, runKernelForUpdate.second) != StaticGraphStatus::SG_OK) + if (updateRunKernelSmurf(smurfInfo) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } @@ -1517,10 +1555,10 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso ret = SanityCheck(); } - if (_fragmentsConfigurator != nullptr) + if (ret == StaticGraphStatus::SG_OK && _fragmentsConfigurator != nullptr) { // Configure fragments according to the new zoomed run kernels information - _fragmentsConfigurator->configureFragments(); + ret = _fragmentsConfigurator->configureFragments(_smurfKernels); } return ret; @@ -1530,7 +1568,7 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelDownScaler(Sta { StaticGraphStatus ret = StaticGraphStatus::SG_OK; - if (_fragmentsConfigurator == nullptr) + if (_isFragments == false) { // No fragments, crop to ROI and downscale to output resolution runKernel->resolution_info->output_width = outputWidth; @@ -1763,34 +1801,39 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelUpScaler(Stati return ret; } -StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelSmurf(StaticGraphRunKernel* smurfRunKernel, StaticGraphRunKernel* deviceRunKernel) +StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelSmurf(SmurfKernelInfo* smurfInfo) { StaticGraphStatus ret = StaticGraphStatus::SG_OK; - auto resInfo = smurfRunKernel->resolution_info; + auto resInfo = smurfInfo->_smurfRunKernel->resolution_info; if (resInfo->input_width == 0 || resInfo->input_height == 0) { return StaticGraphStatus::SG_OK; } - // We need to reach new history for device, without the crop already done by feeder. - // The hist of the smurf is the crop already being done by feeder, mutliplied by segmap factor (without smurf factor which changes) - StaticGraphKernelResCrop smurfNewCrop; - smurfNewCrop.left = deviceRunKernel->resolution_history->input_crop.left - smurfRunKernel->resolution_history->input_crop.left; - smurfNewCrop.right = deviceRunKernel->resolution_history->input_crop.right - smurfRunKernel->resolution_history->input_crop.right; - smurfNewCrop.top = deviceRunKernel->resolution_history->input_crop.top - smurfRunKernel->resolution_history->input_crop.top; - smurfNewCrop.bottom = deviceRunKernel->resolution_history->input_crop.bottom - smurfRunKernel->resolution_history->input_crop.bottom; + // We need to update smurf's output crop according to device's new crop history + StaticGraphKernelRes* deviceResHist = smurfInfo->_deviceRunKernel->resolution_history; + StaticGraphKernelResCrop newCrop; + newCrop.left = deviceResHist->input_crop.left - smurfInfo->_originalDeviceCropHistory.left; + newCrop.right = deviceResHist->input_crop.right - smurfInfo->_originalDeviceCropHistory.right; + newCrop.top = deviceResHist->input_crop.top - smurfInfo->_originalDeviceCropHistory.top; + newCrop.bottom = deviceResHist->input_crop.bottom - smurfInfo->_originalDeviceCropHistory.bottom; // Now calculate how much is left for the smurf to crop // Translate from history units to device units - double newInputToDeviceFactor = static_cast(deviceRunKernel->resolution_history->input_width - deviceRunKernel->resolution_history->input_crop.left - deviceRunKernel->resolution_history->input_crop.right) / - deviceRunKernel->resolution_history->output_width; + double newInputToDeviceFactor = static_cast(deviceResHist->input_width - deviceResHist->input_crop.left - deviceResHist->input_crop.right) / + deviceResHist->output_width; // Now translate from history units to smurf output (device) - smurfRunKernel->resolution_info->output_crop.left = static_cast(smurfNewCrop.left / newInputToDeviceFactor); - smurfRunKernel->resolution_info->output_crop.right = static_cast(smurfNewCrop.right / newInputToDeviceFactor); - smurfRunKernel->resolution_info->output_crop.top = static_cast(smurfNewCrop.top / newInputToDeviceFactor); - smurfRunKernel->resolution_info->output_crop.bottom = static_cast(smurfNewCrop.bottom / newInputToDeviceFactor); + newCrop.left = static_cast(newCrop.left / newInputToDeviceFactor); + newCrop.right = static_cast(newCrop.right / newInputToDeviceFactor); + newCrop.top = static_cast(newCrop.top / newInputToDeviceFactor); + newCrop.bottom = static_cast(newCrop.bottom / newInputToDeviceFactor); + + smurfInfo->_smurfRunKernel->resolution_info->output_crop.left = smurfInfo->_originalSmurfOutputCrop.left + newCrop.left; + smurfInfo->_smurfRunKernel->resolution_info->output_crop.right = smurfInfo->_originalSmurfOutputCrop.right + newCrop.right; + smurfInfo->_smurfRunKernel->resolution_info->output_crop.top = smurfInfo->_originalSmurfOutputCrop.top + newCrop.top; + smurfInfo->_smurfRunKernel->resolution_info->output_crop.bottom = smurfInfo->_originalSmurfOutputCrop.bottom + newCrop.bottom; return ret; } diff --git a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h index 3fb124d..85a7f7a 100644 --- a/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h +++ b/modules/ipu_desc/ipu75xa/GraphResolutionConfigurator.h @@ -82,6 +82,8 @@ enum class GraphResolutionConfiguratorKernelRole : uint8_t TnrScaler, TnrFeederFull, TnrFeederSmall, + Smurf, + SmurfFeeder, None }; @@ -122,6 +124,8 @@ class GraphResolutionConfigurator StaticGraphStatus undoSensorCropandScale(SensorRoi& sensor_roi); StaticGraphStatus sensorCropOrScaleExist(bool& sensor_crop_or_scale_exist); StaticGraphStatus undoSensorScaleRipAngle(int32_t& rip_angle); + + static const int SCALE_PREC = 16; protected: StaticGraphStatus updateRunKernelPassThrough(StaticGraphRunKernel* runKernel, uint32_t width, uint32_t height); StaticGraphStatus updateRunKernelResolutionHistory(StaticGraphRunKernel* runKernel, StaticGraphRunKernel* prevRunKernel, bool updateResolution = true); @@ -172,6 +176,15 @@ class GraphResolutionConfigurator class Ipu8FragmentsConfigurator; +class SmurfKernelInfo +{ +public: + StaticGraphRunKernel* _smurfRunKernel; + StaticGraphRunKernel* _deviceRunKernel; + StaticGraphKernelResCrop _originalDeviceCropHistory = { 0,0,0,0 }; + StaticGraphKernelResCrop _originalSmurfOutputCrop = { 0,0,0,0 }; +}; + class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator { public: @@ -191,6 +204,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphStatus initRunKernel(uint32_t kernelUuid, StaticGraphRunKernel*& runKernel); StaticGraphStatus initOutputRunKernel(); StaticGraphStatus initKernelsForUpdate(); + StaticGraphStatus initIsFragments(); // Calculate ROI in dimensions of pipe downscaler input. StaticGraphStatus getDownscalerInputRoi(const RegionOfInterest& userRoi, ResolutionRoi& pipeInputRoi); @@ -201,7 +215,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphStatus updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, uint32_t outputWidth, uint32_t outputHeight); StaticGraphStatus updateRunKernelCropper(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, uint32_t inputWidth, uint32_t inputHeight, uint32_t outputWidth, uint32_t outputHeight, StaticGraphKernelResCrop& downscalerCropHist); - StaticGraphStatus updateRunKernelSmurf(StaticGraphRunKernel* smurfRunKernel, StaticGraphRunKernel* deviceRunKernel); + StaticGraphStatus updateRunKernelSmurf(SmurfKernelInfo* smurfInfo); StaticGraphStatus SanityCheck(); StaticGraphStatus SanityCheckCrop(StaticGraphKernelResCrop* crop); @@ -220,9 +234,10 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphRunKernel* _outputRunKernel; std::vector _kernelsForUpdateAfterCropper; std::vector _kernelsForUpdateAfterUpscaler; - std::vector> _smurfKernels; + std::vector _smurfKernels; // For striping OuterNode* _node = nullptr; Ipu8FragmentsConfigurator* _fragmentsConfigurator = nullptr; + bool _isFragments = false; }; diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp b/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp index 1393acf..b8fa596 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp +++ b/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.cpp @@ -119,3 +119,8 @@ uint32_t GraphResolutionConfiguratorHelper::getRunKernelIoBufferSystemApiUuid() return 47358; } +uint32_t GraphResolutionConfiguratorHelper::getRunKernelDownscalerSystemApiUuid() +{ + return 2102; +} + diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.h b/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.h index 0e59555..d091130 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.h +++ b/modules/ipu_desc/ipu75xa/Ipu75xaGraphResolutionConfiguratorAutogen.h @@ -38,5 +38,6 @@ class GraphResolutionConfiguratorHelper static uint32_t getRunKernelUuidOfOutput(HwSink hwSink, int32_t graphId, GraphLink** links); static StaticGraphStatus getRunKernelUuidForResHistoryUpdate(std::vector& kernelUuids); static uint32_t getRunKernelIoBufferSystemApiUuid(); + static uint32_t getRunKernelDownscalerSystemApiUuid(); static GraphResolutionConfiguratorKernelRole getKernelRole(uint32_t kernelUuid); }; diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp index cf3dfdb..bb7dc7b 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp +++ b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphAutogen.cpp @@ -306,7 +306,6 @@ void IsysOuterNode::Init(IsysOuterNodeConfiguration** selectedGraphConfiguration uint16_t kernelsUuids[1] = {11470 /*is_odr_a*/}; uint64_t kernelsRcbBitmap = 0x1; // { is_odr_a[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{is_odr_a}[0] } - uint8_t systemApisSizes[1] = {0 /*is_odr_a*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -327,7 +326,6 @@ void LbffBayerOuterNode::Init(LbffBayerOuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[31] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -354,7 +352,6 @@ void BbpsNoTnrOuterNode::Init(BbpsNoTnrOuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[5] = {6907 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 22660 /*cas_1_0*/, 18789 /*ofs_mp_bodr_regs_1_3*/, 6800 /*outputscaler_2_0_a*/, 27847 /*ofs_dp_bodr_regs_1_3*/}; uint64_t kernelsRcbBitmap = 0x1C; // { ofs_mp_bodr_regs_1_3[2], outputscaler_2_0_a[3], ofs_dp_bodr_regs_1_3[4] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x10; // {{slim_tnr_spatial_bifd_yuvn_regs_1_3, cas_1_0, ofs_mp_bodr_regs_1_3, outputscaler_2_0_a}[0], {ofs_dp_bodr_regs_1_3}[1] } - uint8_t systemApisSizes[5] = {156 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 0 /*cas_1_0*/, 156 /*ofs_mp_bodr_regs_1_3*/, 0 /*outputscaler_2_0_a*/, 156 /*ofs_dp_bodr_regs_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -375,7 +372,6 @@ void LbffBayerWithGmvOuterNode::Init(LbffBayerWithGmvOuterNodeConfiguration** se uint16_t kernelsUuids[35] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x113FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28], gmv_statistics_1_0[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7FEE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12], {ifd_gmv_1_3}[13], {gmv_statistics_1_0}[14], {odr_gmv_match_1_3}[15], {odr_gmv_feature_1_3}[16] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -402,7 +398,6 @@ void BbpsWithTnrOuterNode::Init(BbpsWithTnrOuterNodeConfiguration** selectedGrap uint16_t kernelsUuids[18] = {25579 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_3*/, 48078 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_3*/, 57803 /*tnr_sp_bc_bifd_yuv4n_regs_1_3*/, 48987 /*tnr7_ims_1_1*/, 54840 /*tnr7_bc_1_1*/, 39096 /*tnr_sp_bc_bodr_rs4n_regs_1_3*/, 6907 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 3133 /*tnr7_spatial_1_0*/, 26536 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_3*/, 42936 /*tnr_fp_blend_bifd_rs4n_regs_1_3*/, 32696 /*tnr7_blend_1_0*/, 38465 /*tnr_fp_bodr_yuvn_regs_1_3*/, 22660 /*cas_1_0*/, 60056 /*tnr_scale_fp*/, 18789 /*ofs_mp_bodr_regs_1_3*/, 6800 /*outputscaler_2_0_a*/, 27847 /*ofs_dp_bodr_regs_1_3*/, 20865 /*tnr_scale_fp_bodr_yuv4n_regs_1_3*/}; uint64_t kernelsRcbBitmap = 0x1E000; // { tnr_scale_fp[13], ofs_mp_bodr_regs_1_3[14], outputscaler_2_0_a[15], ofs_dp_bodr_regs_1_3[16] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3074E; // {{slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_3}[0], {slim_tnr_sp_bc_bifd_rs4nm1_regs_1_3}[1], {tnr_sp_bc_bifd_yuv4n_regs_1_3}[2], {tnr7_ims_1_1, tnr7_bc_1_1, tnr_sp_bc_bodr_rs4n_regs_1_3}[3], {slim_tnr_spatial_bifd_yuvn_regs_1_3, tnr7_spatial_1_0}[4], {slim_tnr_fp_blend_bifd_yuvnm1_regs_1_3}[5], {tnr_fp_blend_bifd_rs4n_regs_1_3}[6], {tnr7_blend_1_0, tnr_fp_bodr_yuvn_regs_1_3, cas_1_0, tnr_scale_fp, ofs_mp_bodr_regs_1_3, outputscaler_2_0_a}[7], {ofs_dp_bodr_regs_1_3}[8], {tnr_scale_fp_bodr_yuv4n_regs_1_3}[9] } - uint8_t systemApisSizes[18] = {156 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_3*/, 156 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_3*/, 156 /*tnr_sp_bc_bifd_yuv4n_regs_1_3*/, 0 /*tnr7_ims_1_1*/, 0 /*tnr7_bc_1_1*/, 156 /*tnr_sp_bc_bodr_rs4n_regs_1_3*/, 156 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 0 /*tnr7_spatial_1_0*/, 156 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_3*/, 156 /*tnr_fp_blend_bifd_rs4n_regs_1_3*/, 6 /*tnr7_blend_1_0*/, 156 /*tnr_fp_bodr_yuvn_regs_1_3*/, 0 /*cas_1_0*/, 0 /*tnr_scale_fp*/, 156 /*ofs_mp_bodr_regs_1_3*/, 0 /*outputscaler_2_0_a*/, 156 /*ofs_dp_bodr_regs_1_3*/, 156 /*tnr_scale_fp_bodr_yuv4n_regs_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -423,7 +418,6 @@ void SwGdcOuterNode::Init(SwGdcOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {5637 /*gdc7_1*/}; uint64_t kernelsRcbBitmap = 0x1; // { gdc7_1[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{gdc7_1}[0] } - uint8_t systemApisSizes[1] = {0 /*gdc7_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -444,7 +438,6 @@ void SwScalerOuterNode::Init(SwScalerOuterNodeConfiguration** selectedGraphConfi uint16_t kernelsUuids[1] = {19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x1; // { sw_scaler[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{sw_scaler}[0] } - uint8_t systemApisSizes[1] = {5 /*sw_scaler*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -465,7 +458,6 @@ void SwNntmOuterNode::Init(SwNntmOuterNodeConfiguration** selectedGraphConfigura uint16_t kernelsUuids[1] = {46539 /*nntm_1_0*/}; uint64_t kernelsRcbBitmap = 0x0; // { } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{nntm_1_0}[0] } - uint8_t systemApisSizes[1] = {5 /*nntm_1_0*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -486,7 +478,6 @@ void LbffRgbIrOuterNode::Init(LbffRgbIrOuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[34] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33714 /*gd_dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 28176 /*odr_ir_1_3*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0xFF800071; // { ifd_pipe_1_3[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_3[6], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_1[25], upscaler_1_0[26], lbff_crop_espa_1_3[27], tnr_scale_lb[28], odr_output_ps_1_3[29], odr_output_me_1_3[30], aestatistics_2_1[31] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3DC000FC2; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0, gd_dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_3}[2], {odr_awb_std_1_3}[3], {odr_awb_sve_1_3}[4], {odr_awb_sat_1_3}[5], {ifd_lsc_1_3}[6], {lsc_1_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[7], {upscaler_1_0}[8], {lbff_crop_espa_1_3}[9], {tnr_scale_lb, odr_output_ps_1_3}[10], {odr_output_me_1_3}[11], {aestatistics_2_1}[12], {odr_ae_1_3}[13], {odr_af_std_1_3}[14] } - uint8_t systemApisSizes[34] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 0 /*gd_dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 156 /*odr_ir_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -513,7 +504,6 @@ void LbffIrNoGmvIrStreamOuterNode::Init(LbffIrNoGmvIrStreamOuterNodeConfiguratio uint16_t kernelsUuids[31] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -540,7 +530,6 @@ void BbpsIrWithTnrOuterNode::Init(BbpsIrWithTnrOuterNodeConfiguration** selected uint16_t kernelsUuids[18] = {25579 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_3*/, 48078 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_3*/, 57803 /*tnr_sp_bc_bifd_yuv4n_regs_1_3*/, 48987 /*tnr7_ims_1_1*/, 54840 /*tnr7_bc_1_1*/, 39096 /*tnr_sp_bc_bodr_rs4n_regs_1_3*/, 6907 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 3133 /*tnr7_spatial_1_0*/, 26536 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_3*/, 42936 /*tnr_fp_blend_bifd_rs4n_regs_1_3*/, 32696 /*tnr7_blend_1_0*/, 38465 /*tnr_fp_bodr_yuvn_regs_1_3*/, 22660 /*cas_1_0*/, 60056 /*tnr_scale_fp*/, 18789 /*ofs_mp_bodr_regs_1_3*/, 6800 /*outputscaler_2_0_a*/, 27847 /*ofs_dp_bodr_regs_1_3*/, 20865 /*tnr_scale_fp_bodr_yuv4n_regs_1_3*/}; uint64_t kernelsRcbBitmap = 0x1E000; // { tnr_scale_fp[13], ofs_mp_bodr_regs_1_3[14], outputscaler_2_0_a[15], ofs_dp_bodr_regs_1_3[16] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3074E; // {{slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_3}[0], {slim_tnr_sp_bc_bifd_rs4nm1_regs_1_3}[1], {tnr_sp_bc_bifd_yuv4n_regs_1_3}[2], {tnr7_ims_1_1, tnr7_bc_1_1, tnr_sp_bc_bodr_rs4n_regs_1_3}[3], {slim_tnr_spatial_bifd_yuvn_regs_1_3, tnr7_spatial_1_0}[4], {slim_tnr_fp_blend_bifd_yuvnm1_regs_1_3}[5], {tnr_fp_blend_bifd_rs4n_regs_1_3}[6], {tnr7_blend_1_0, tnr_fp_bodr_yuvn_regs_1_3, cas_1_0, tnr_scale_fp, ofs_mp_bodr_regs_1_3, outputscaler_2_0_a}[7], {ofs_dp_bodr_regs_1_3}[8], {tnr_scale_fp_bodr_yuv4n_regs_1_3}[9] } - uint8_t systemApisSizes[18] = {156 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_3*/, 156 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_3*/, 156 /*tnr_sp_bc_bifd_yuv4n_regs_1_3*/, 0 /*tnr7_ims_1_1*/, 0 /*tnr7_bc_1_1*/, 156 /*tnr_sp_bc_bodr_rs4n_regs_1_3*/, 156 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 0 /*tnr7_spatial_1_0*/, 156 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_3*/, 156 /*tnr_fp_blend_bifd_rs4n_regs_1_3*/, 6 /*tnr7_blend_1_0*/, 156 /*tnr_fp_bodr_yuvn_regs_1_3*/, 0 /*cas_1_0*/, 0 /*tnr_scale_fp*/, 156 /*ofs_mp_bodr_regs_1_3*/, 0 /*outputscaler_2_0_a*/, 156 /*ofs_dp_bodr_regs_1_3*/, 156 /*tnr_scale_fp_bodr_yuv4n_regs_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -561,7 +550,6 @@ void LbffBayerBurstOutNo3AOuterNode::Init(LbffBayerBurstOutNo3AOuterNodeConfigur uint16_t kernelsUuids[31] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 32658 /*odr_burst_isp_1_3*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 6874 /*ifd_pdaf_1_3*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 24208 /*odr_pdaf_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x137F0001; // { ifd_pipe_1_3[0], odr_burst_isp_1_3[16], b2i_ds_1_1[17], upscaler_1_0[18], lbff_crop_espa_1_3[19], tnr_scale_lb[20], odr_output_ps_1_3[21], odr_output_me_1_3[22], pext_1_0[24], pafstatistics_1_2[25], gmv_statistics_1_0[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EDC0002; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0, lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, odr_burst_isp_1_3, b2i_ds_1_1}[1], {upscaler_1_0}[2], {lbff_crop_espa_1_3}[3], {tnr_scale_lb, odr_output_ps_1_3}[4], {odr_output_me_1_3}[5], {ifd_pdaf_1_3, pext_1_0}[6], {pafstatistics_1_2}[7], {odr_pdaf_1_3}[8], {ifd_gmv_1_3}[9], {gmv_statistics_1_0}[10], {odr_gmv_match_1_3}[11], {odr_gmv_feature_1_3}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 156 /*odr_burst_isp_1_3*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*ifd_pdaf_1_3*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -588,7 +576,6 @@ void BbpsIrNoTnrOuterNode::Init(BbpsIrNoTnrOuterNodeConfiguration** selectedGrap uint16_t kernelsUuids[5] = {6907 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 22660 /*cas_1_0*/, 18789 /*ofs_mp_bodr_regs_1_3*/, 6800 /*outputscaler_2_0_a*/, 27847 /*ofs_dp_bodr_regs_1_3*/}; uint64_t kernelsRcbBitmap = 0x1C; // { ofs_mp_bodr_regs_1_3[2], outputscaler_2_0_a[3], ofs_dp_bodr_regs_1_3[4] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x10; // {{slim_tnr_spatial_bifd_yuvn_regs_1_3, cas_1_0, ofs_mp_bodr_regs_1_3, outputscaler_2_0_a}[0], {ofs_dp_bodr_regs_1_3}[1] } - uint8_t systemApisSizes[5] = {156 /*slim_tnr_spatial_bifd_yuvn_regs_1_3*/, 0 /*cas_1_0*/, 156 /*ofs_mp_bodr_regs_1_3*/, 0 /*outputscaler_2_0_a*/, 156 /*ofs_dp_bodr_regs_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -609,7 +596,6 @@ void LbffIrNoGmvOuterNode::Init(LbffIrNoGmvOuterNodeConfiguration** selectedGrap uint16_t kernelsUuids[31] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -630,7 +616,6 @@ void IsysPdaf2OuterNode::Init(IsysPdaf2OuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[2] = {11470 /*is_odr_a*/, 55449 /*is_odr_b*/}; uint64_t kernelsRcbBitmap = 0x3; // { is_odr_a[0], is_odr_b[1] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{is_odr_a}[0], {is_odr_b}[1] } - uint8_t systemApisSizes[2] = {0 /*is_odr_a*/, 0 /*is_odr_b*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -651,7 +636,6 @@ void LbffBayerPdaf2OuterNode::Init(LbffBayerPdaf2OuterNodeConfiguration** select uint16_t kernelsUuids[35] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 6874 /*ifd_pdaf_1_3*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 24208 /*odr_pdaf_1_3*/}; uint64_t kernelsRcbBitmap = 0x313FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28], pext_1_0[32], pafstatistics_1_2[33] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x6FEE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12], {ifd_pdaf_1_3, pext_1_0}[13], {pafstatistics_1_2}[14], {odr_pdaf_1_3}[15] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_pdaf_1_3*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -678,7 +662,6 @@ void LbffBayerPdaf3OuterNode::Init(LbffBayerPdaf3OuterNodeConfiguration** select uint16_t kernelsUuids[34] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 43213 /*pext_1_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 44308 /*pafstatistics_1_2*/, 24208 /*odr_pdaf_1_3*/}; uint64_t kernelsRcbBitmap = 0x127FE0001; // { ifd_pipe_1_3[0], pext_1_0[17], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_1[21], upscaler_1_0[22], lbff_crop_espa_1_3[23], tnr_scale_lb[24], odr_output_ps_1_3[25], odr_output_me_1_3[26], aestatistics_2_1[29], pafstatistics_1_2[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FDC0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, pext_1_0, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_3}[14] } - uint8_t systemApisSizes[34] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*pext_1_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -705,7 +688,6 @@ void IsysDolOuterNode::Init(IsysDolOuterNodeConfiguration** selectedGraphConfigu uint16_t kernelsUuids[2] = {11470 /*is_odr_a*/, 50407 /*is_odr_c*/}; uint64_t kernelsRcbBitmap = 0x3; // { is_odr_a[0], is_odr_c[1] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{is_odr_a}[0], {is_odr_c}[1] } - uint8_t systemApisSizes[2] = {0 /*is_odr_a*/, 0 /*is_odr_c*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -726,7 +708,6 @@ void LbffDol2InputsOuterNode::Init(LbffDol2InputsOuterNodeConfiguration** select uint16_t kernelsUuids[34] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x1FC000463; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], rgbs_grid_1_1[5], ccm_3a_2_0[6], aestatistics_2_1[10], fr_grid_1_0[26], b2i_ds_1_1[27], upscaler_1_0[28], lbff_crop_espa_1_3[29], tnr_scale_lb[30], odr_output_ps_1_3[31], odr_output_me_1_3[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x370003F86; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {dol_lite_1_1, bxt_blc, linearization2_0, rgbs_grid_1_1, ccm_3a_2_0}[2], {odr_awb_std_1_3}[3], {odr_awb_sve_1_3}[4], {odr_awb_sat_1_3}[5], {aestatistics_2_1}[6], {odr_ae_1_3}[7], {ifd_lsc_1_3}[8], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[9], {upscaler_1_0}[10], {lbff_crop_espa_1_3}[11], {tnr_scale_lb, odr_output_ps_1_3}[12], {odr_output_me_1_3}[13], {odr_af_std_1_3}[14] } - uint8_t systemApisSizes[34] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -753,7 +734,6 @@ void LbffDolSmoothOuterNode::Init(LbffDolSmoothOuterNodeConfiguration** selected uint16_t kernelsUuids[7] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 56904 /*odr_bnlm_1_3*/}; uint64_t kernelsRcbBitmap = 0x41; // { ifd_pipe_1_3[0], odr_bnlm_1_3[6] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0, gd_dpc_2_2, wb_1_1, bnlm_3_3, odr_bnlm_1_3}[1] } - uint8_t systemApisSizes[7] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 156 /*odr_bnlm_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -780,7 +760,6 @@ void LbffDol3InputsOuterNode::Init(LbffDol3InputsOuterNodeConfiguration** select uint16_t kernelsUuids[35] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 49695 /*ifd_pipe_short_smth_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x3F80008C7; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], ifd_pipe_short_smth_1_3[2], rgbs_grid_1_1[6], ccm_3a_2_0[7], aestatistics_2_1[11], fr_grid_1_0[27], b2i_ds_1_1[28], upscaler_1_0[29], lbff_crop_espa_1_3[30], tnr_scale_lb[31], odr_output_ps_1_3[32], odr_output_me_1_3[33] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x6E0007F0E; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {ifd_pipe_short_smth_1_3}[2], {dol_lite_1_1, bxt_blc, linearization2_0, rgbs_grid_1_1, ccm_3a_2_0}[3], {odr_awb_std_1_3}[4], {odr_awb_sve_1_3}[5], {odr_awb_sat_1_3}[6], {aestatistics_2_1}[7], {odr_ae_1_3}[8], {ifd_lsc_1_3}[9], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[10], {upscaler_1_0}[11], {lbff_crop_espa_1_3}[12], {tnr_scale_lb, odr_output_ps_1_3}[13], {odr_output_me_1_3}[14], {odr_af_std_1_3}[15] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 156 /*ifd_pipe_short_smth_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -807,7 +786,6 @@ void LbffBayerPdaf2WithGmvOuterNode::Init(LbffBayerPdaf2WithGmvOuterNodeConfigur uint16_t kernelsUuids[39] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 6874 /*ifd_pdaf_1_3*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 24208 /*odr_pdaf_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x1313FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28], pext_1_0[32], pafstatistics_1_2[33], gmv_statistics_1_0[36] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EFEE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12], {ifd_pdaf_1_3, pext_1_0}[13], {pafstatistics_1_2}[14], {odr_pdaf_1_3}[15], {ifd_gmv_1_3}[16], {gmv_statistics_1_0}[17], {odr_gmv_match_1_3}[18], {odr_gmv_feature_1_3}[19] } - uint8_t systemApisSizes[39] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_pdaf_1_3*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -834,7 +812,6 @@ void LbffBayerPdaf3WithGmvOuterNode::Init(LbffBayerPdaf3WithGmvOuterNodeConfigur uint16_t kernelsUuids[38] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 43213 /*pext_1_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 44308 /*pafstatistics_1_2*/, 24208 /*odr_pdaf_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x927FE0001; // { ifd_pipe_1_3[0], pext_1_0[17], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_1[21], upscaler_1_0[22], lbff_crop_espa_1_3[23], tnr_scale_lb[24], odr_output_ps_1_3[25], odr_output_me_1_3[26], aestatistics_2_1[29], pafstatistics_1_2[32], gmv_statistics_1_0[35] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FFDC0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, pext_1_0, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_3}[14], {ifd_gmv_1_3}[15], {gmv_statistics_1_0}[16], {odr_gmv_match_1_3}[17], {odr_gmv_feature_1_3}[18] } - uint8_t systemApisSizes[38] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*pext_1_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -861,7 +838,6 @@ void LbffRgbIrWithGmvOuterNode::Init(LbffRgbIrWithGmvOuterNodeConfiguration** se uint16_t kernelsUuids[38] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33714 /*gd_dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 28176 /*odr_ir_1_3*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x8FF800071; // { ifd_pipe_1_3[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_3[6], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_1[25], upscaler_1_0[26], lbff_crop_espa_1_3[27], tnr_scale_lb[28], odr_output_ps_1_3[29], odr_output_me_1_3[30], aestatistics_2_1[31], gmv_statistics_1_0[35] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FDC000FC2; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0, gd_dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_3}[2], {odr_awb_std_1_3}[3], {odr_awb_sve_1_3}[4], {odr_awb_sat_1_3}[5], {ifd_lsc_1_3}[6], {lsc_1_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[7], {upscaler_1_0}[8], {lbff_crop_espa_1_3}[9], {tnr_scale_lb, odr_output_ps_1_3}[10], {odr_output_me_1_3}[11], {aestatistics_2_1}[12], {odr_ae_1_3}[13], {odr_af_std_1_3}[14], {ifd_gmv_1_3}[15], {gmv_statistics_1_0}[16], {odr_gmv_match_1_3}[17], {odr_gmv_feature_1_3}[18] } - uint8_t systemApisSizes[38] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 0 /*gd_dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 156 /*odr_ir_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -888,7 +864,6 @@ void LbffIrWithGmvIrStreamOuterNode::Init(LbffIrWithGmvIrStreamOuterNodeConfigur uint16_t kernelsUuids[35] = {55223 /*ifd_pipe_1_3*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x113FE0001; // { ifd_pipe_1_3[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_1[20], upscaler_1_0[21], lbff_crop_espa_1_3[22], tnr_scale_lb[23], odr_output_ps_1_3[24], odr_output_me_1_3[25], aestatistics_2_1[28], gmv_statistics_1_0[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7FEE0001A; // {{ifd_pipe_1_3}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_3}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_3}[5], {tnr_scale_lb, odr_output_ps_1_3}[6], {odr_output_me_1_3}[7], {odr_awb_std_1_3}[8], {odr_awb_sat_1_3}[9], {aestatistics_2_1}[10], {odr_ae_1_3}[11], {odr_af_std_1_3}[12], {ifd_gmv_1_3}[13], {gmv_statistics_1_0}[14], {odr_gmv_match_1_3}[15], {odr_gmv_feature_1_3}[16] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_3*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -915,7 +890,6 @@ void LbffDol2InputsWithGmvOuterNode::Init(LbffDol2InputsWithGmvOuterNodeConfigur uint16_t kernelsUuids[38] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 23958 /*odr_af_std_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x9FC000463; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], rgbs_grid_1_1[5], ccm_3a_2_0[6], aestatistics_2_1[10], fr_grid_1_0[26], b2i_ds_1_1[27], upscaler_1_0[28], lbff_crop_espa_1_3[29], tnr_scale_lb[30], odr_output_ps_1_3[31], odr_output_me_1_3[32], gmv_statistics_1_0[35] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3F70003F86; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {dol_lite_1_1, bxt_blc, linearization2_0, rgbs_grid_1_1, ccm_3a_2_0}[2], {odr_awb_std_1_3}[3], {odr_awb_sve_1_3}[4], {odr_awb_sat_1_3}[5], {aestatistics_2_1}[6], {odr_ae_1_3}[7], {ifd_lsc_1_3}[8], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[9], {upscaler_1_0}[10], {lbff_crop_espa_1_3}[11], {tnr_scale_lb, odr_output_ps_1_3}[12], {odr_output_me_1_3}[13], {odr_af_std_1_3}[14], {ifd_gmv_1_3}[15], {gmv_statistics_1_0}[16], {odr_gmv_match_1_3}[17], {odr_gmv_feature_1_3}[18] } - uint8_t systemApisSizes[38] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -942,7 +916,6 @@ void LbffDol3InputsWithGmvOuterNode::Init(LbffDol3InputsWithGmvOuterNodeConfigur uint16_t kernelsUuids[39] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 49695 /*ifd_pipe_short_smth_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 23958 /*odr_af_std_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x13F80008C7; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], ifd_pipe_short_smth_1_3[2], rgbs_grid_1_1[6], ccm_3a_2_0[7], aestatistics_2_1[11], fr_grid_1_0[27], b2i_ds_1_1[28], upscaler_1_0[29], lbff_crop_espa_1_3[30], tnr_scale_lb[31], odr_output_ps_1_3[32], odr_output_me_1_3[33], gmv_statistics_1_0[36] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0007F0E; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {ifd_pipe_short_smth_1_3}[2], {dol_lite_1_1, bxt_blc, linearization2_0, rgbs_grid_1_1, ccm_3a_2_0}[3], {odr_awb_std_1_3}[4], {odr_awb_sve_1_3}[5], {odr_awb_sat_1_3}[6], {aestatistics_2_1}[7], {odr_ae_1_3}[8], {ifd_lsc_1_3}[9], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, fr_grid_1_0, b2i_ds_1_1}[10], {upscaler_1_0}[11], {lbff_crop_espa_1_3}[12], {tnr_scale_lb, odr_output_ps_1_3}[13], {odr_output_me_1_3}[14], {odr_af_std_1_3}[15], {ifd_gmv_1_3}[16], {gmv_statistics_1_0}[17], {odr_gmv_match_1_3}[18], {odr_gmv_feature_1_3}[19] } - uint8_t systemApisSizes[39] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 156 /*ifd_pipe_short_smth_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -969,7 +942,6 @@ void SwB2bOuterNode::Init(SwB2bOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {45372 /*b2b*/}; uint64_t kernelsRcbBitmap = 0x0; // { } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{b2b}[0] } - uint8_t systemApisSizes[1] = {0 /*b2b*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -990,7 +962,6 @@ void SwImvOuterNode::Init(SwImvOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[2] = {33331 /*imv*/, 19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x3; // { imv[0], sw_scaler[1] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{imv}[0], {sw_scaler}[1] } - uint8_t systemApisSizes[2] = {0 /*imv*/, 5 /*sw_scaler*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -1011,7 +982,6 @@ void SwRemosaicOuterNode::Init(SwRemosaicOuterNodeConfiguration** selectedGraphC uint16_t kernelsUuids[1] = {19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x1; // { sw_scaler[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{sw_scaler}[0] } - uint8_t systemApisSizes[1] = {5 /*sw_scaler*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -1032,7 +1002,6 @@ void LbffDol2InputsBayerStatOuterNode::Init(LbffDol2InputsBayerStatOuterNodeConf uint16_t kernelsUuids[34] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x8FF80003; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], upscaler_1_0[23], lbff_crop_espa_1_3[24], tnr_scale_lb[25], odr_output_ps_1_3[26], odr_output_me_1_3[27], aestatistics_2_1[31] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FB800066; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {dol_lite_1_1, bxt_blc, linearization2_0}[2], {ifd_lsc_1_3}[3], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[4], {upscaler_1_0}[5], {lbff_crop_espa_1_3}[6], {tnr_scale_lb, odr_output_ps_1_3}[7], {odr_output_me_1_3}[8], {odr_awb_std_1_3}[9], {odr_awb_sve_1_3}[10], {odr_awb_sat_1_3}[11], {aestatistics_2_1}[12], {odr_ae_1_3}[13], {odr_af_std_1_3}[14] } - uint8_t systemApisSizes[34] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -1059,7 +1028,6 @@ void LbffDol3InputsBayerStatOuterNode::Init(LbffDol3InputsBayerStatOuterNodeConf uint16_t kernelsUuids[35] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 49695 /*ifd_pipe_short_smth_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/}; uint64_t kernelsRcbBitmap = 0x11FF00007; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], ifd_pipe_short_smth_1_3[2], rgbs_grid_1_1[20], ccm_3a_2_0[21], fr_grid_1_0[22], b2i_ds_1_1[23], upscaler_1_0[24], lbff_crop_espa_1_3[25], tnr_scale_lb[26], odr_output_ps_1_3[27], odr_output_me_1_3[28], aestatistics_2_1[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7F70000CE; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {ifd_pipe_short_smth_1_3}[2], {dol_lite_1_1, bxt_blc, linearization2_0}[3], {ifd_lsc_1_3}[4], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[5], {upscaler_1_0}[6], {lbff_crop_espa_1_3}[7], {tnr_scale_lb, odr_output_ps_1_3}[8], {odr_output_me_1_3}[9], {odr_awb_std_1_3}[10], {odr_awb_sve_1_3}[11], {odr_awb_sat_1_3}[12], {aestatistics_2_1}[13], {odr_ae_1_3}[14], {odr_af_std_1_3}[15] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 156 /*ifd_pipe_short_smth_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -1086,7 +1054,6 @@ void LbffDol2InputsWithGmvBayerStatOuterNode::Init(LbffDol2InputsWithGmvBayerSta uint16_t kernelsUuids[38] = {55223 /*ifd_pipe_1_3*/, 52982 /*ifd_pipe_long_1_3*/, 22000 /*dol_lite_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 27730 /*ifd_lsc_1_3*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 5394 /*gammatm_v4*/, 62703 /*csc_1_1*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 40299 /*b2i_ds_1_1*/, 25569 /*upscaler_1_0*/, 42330 /*lbff_crop_espa_1_3*/, 33723 /*tnr_scale_lb*/, 38648 /*odr_output_ps_1_3*/, 59680 /*odr_output_me_1_3*/, 1338 /*odr_awb_std_1_3*/, 8720 /*odr_awb_sve_1_3*/, 45123 /*odr_awb_sat_1_3*/, 55073 /*aestatistics_2_1*/, 53496 /*odr_ae_1_3*/, 23958 /*odr_af_std_1_3*/, 62409 /*ifd_gmv_1_3*/, 61146 /*gmv_statistics_1_0*/, 32160 /*odr_gmv_match_1_3*/, 55924 /*odr_gmv_feature_1_3*/}; uint64_t kernelsRcbBitmap = 0x88FF80003; // { ifd_pipe_1_3[0], ifd_pipe_long_1_3[1], rgbs_grid_1_1[19], ccm_3a_2_0[20], fr_grid_1_0[21], b2i_ds_1_1[22], upscaler_1_0[23], lbff_crop_espa_1_3[24], tnr_scale_lb[25], odr_output_ps_1_3[26], odr_output_me_1_3[27], aestatistics_2_1[31], gmv_statistics_1_0[35] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FFB800066; // {{ifd_pipe_1_3}[0], {ifd_pipe_long_1_3}[1], {dol_lite_1_1, bxt_blc, linearization2_0}[2], {ifd_lsc_1_3}[3], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v4, csc_1_1, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_1}[4], {upscaler_1_0}[5], {lbff_crop_espa_1_3}[6], {tnr_scale_lb, odr_output_ps_1_3}[7], {odr_output_me_1_3}[8], {odr_awb_std_1_3}[9], {odr_awb_sve_1_3}[10], {odr_awb_sat_1_3}[11], {aestatistics_2_1}[12], {odr_ae_1_3}[13], {odr_af_std_1_3}[14], {ifd_gmv_1_3}[15], {gmv_statistics_1_0}[16], {odr_gmv_match_1_3}[17], {odr_gmv_feature_1_3}[18] } - uint8_t systemApisSizes[38] = {156 /*ifd_pipe_1_3*/, 156 /*ifd_pipe_long_1_3*/, 5 /*dol_lite_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_3*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 0 /*gammatm_v4*/, 0 /*csc_1_1*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 5 /*b2i_ds_1_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_3*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_3*/, 156 /*odr_output_me_1_3*/, 156 /*odr_awb_std_1_3*/, 156 /*odr_awb_sve_1_3*/, 156 /*odr_awb_sat_1_3*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_3*/, 156 /*odr_af_std_1_3*/, 156 /*ifd_gmv_1_3*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_3*/, 156 /*odr_gmv_feature_1_3*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphBinaryAutogen.h b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphBinaryAutogen.h index f950a50..e580d45 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphBinaryAutogen.h +++ b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphBinaryAutogen.h @@ -84,6 +84,7 @@ struct GraphConfigurationKey { }; struct GraphConfigurationHeader { + uint32_t additonalFeaturesBit = 0; GraphConfigurationKey settingsKey; uint16_t settingId = 0; int32_t graphId = 0; diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphDataPreloadAutogen.h b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphDataPreloadAutogen.h index a3feefb..8ea81a0 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphDataPreloadAutogen.h +++ b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphDataPreloadAutogen.h @@ -99,7 +99,7 @@ typedef struct DataRange static int distinctGraphsCount = 37; static GraphHashCode hashCodeLookup[] = { - {0, 0x327EB4A8}, + {0, 0x4229ABEE}, {100000, 0x829C70F3}, {100001, 0x36553465}, {100002, 0x868896D7}, diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphReaderAutogen.h b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphReaderAutogen.h index 20e328d..b01c5f2 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphReaderAutogen.h +++ b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphReaderAutogen.h @@ -82,7 +82,7 @@ class StaticGraphReader StaticGraphStatus Init(StaticReaderBinaryData& binaryGraphSettings); StaticGraphStatus GetStaticGraphConfig(GraphConfigurationKey& settingsKey, IStaticGraphConfig** graph); std::pair GetGraphConfigurationHeaders() const; - static const uint32_t staticGraphCommonHashCode = 847164584; // autogenerated + static const uint32_t staticGraphCommonHashCode = 1110027246; // autogenerated private: void GetSinkMappingConfiguration(GraphConfigurationHeader* baseGraphConfigurationHeader, VirtualSinkMapping* baseSinkMappingConfiguration, GraphConfigurationHeader* selectedGraphConfigurationHeader, VirtualSinkMapping* selectedSinkMappingConfiguration); diff --git a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphTypesAutogen.h b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphTypesAutogen.h index 0bcc4c5..f538530 100644 --- a/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphTypesAutogen.h +++ b/modules/ipu_desc/ipu75xa/Ipu75xaStaticGraphTypesAutogen.h @@ -146,6 +146,11 @@ struct StaticGraphKernelSystemApiIoBuffer1_4 { uint32_t plane_start_address_per_stripe[12]; }; +// ia_pal_system_api_b2i_ds_1_1_t; +struct StaticGraphKernelSystemApiB2iDs1_1 { + uint8_t is_striping; +}; + #endif struct StaticGraphKernelBppConfiguration { uint8_t input_bpp = 0; diff --git a/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp b/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp index ab40be6..4d71c04 100644 --- a/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp +++ b/modules/ipu_desc/ipu7x/FragmentsConfigurator.cpp @@ -25,13 +25,14 @@ * suppliers or licensors in any way. */ #include "FragmentsConfigurator.h" +#include Ipu8FragmentsConfigurator::Ipu8FragmentsConfigurator(IStaticGraphConfig* staticGraph, OuterNode* node, uint32_t upscalerWidthGranularity) : _staticGraph(staticGraph), _node(node), _upscalerWidthGranularity(upscalerWidthGranularity) { } -StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() +StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments(std::vector& smurfKernels) { if (_staticGraph == nullptr || _node == nullptr) { @@ -44,17 +45,20 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() _node->fragmentVanishStatus[stripe] = VanishOption::Full; } - for (uint32_t j = 0; j < _node->nodeKernels.kernelCount; j++) + StaticGraphStatus res = StaticGraphStatus::SG_OK; + + const uint16_t* kenelConfigOrder = _node->getRunKernelConfigOrder(); + + for (uint16_t i = 0; i < _node->nodeKernels.kernelCount; i++) { + uint16_t j = kenelConfigOrder[i]; StaticGraphRunKernel* runKernel = &_node->nodeKernels.kernelList[j].run_kernel; StaticGraphFragmentDesc* kernelFragments = _node->nodeKernels.kernelList[j].fragment_descs; - // Take previous kernel as reference, unless we will change it below. StaticGraphFragmentDesc* prevKernelFragments = j == 0 ? nullptr : _node->nodeKernels.kernelList[j - 1].fragment_descs; uint32_t prevKernelUuid = j == 0 ? 0 : _node->nodeKernels.kernelList[j - 1].run_kernel.kernel_uuid; uint32_t referenceKernel = GraphResolutionConfiguratorHelper::getReferenceKernel(runKernel->kernel_uuid); - if (referenceKernel != 0) { // Special reference kernel @@ -76,45 +80,57 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() { case GraphResolutionConfiguratorKernelRole::DownScaler: { - configFragmentsDownscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsDownscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::EspaCropper: { - configFragmentsCropper(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsCropper(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::UpScaler: { - configFragmentsUpscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsUpscaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::Output: { - configFragmentsOutput(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsOutput(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::TnrScaler: { - configFragmentsTnrScaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); + res = configFragmentsTnrScaler(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments); break; } case GraphResolutionConfiguratorKernelRole::TnrFeederFull: case GraphResolutionConfiguratorKernelRole::TnrFeederSmall: { - configFragmentsTnrFeeder(runKernel, kernelFragments, kernelRole); + res = configFragmentsTnrFeeder(runKernel, kernelFragments, kernelRole); + break; + } + + case GraphResolutionConfiguratorKernelRole::Smurf: + { + res = configFragmentsSmurf(runKernel, kernelFragments, prevKernelUuid, prevKernelFragments, smurfKernels); + break; + } + + case GraphResolutionConfiguratorKernelRole::SmurfFeeder: + { + res = configFragmentsSmurfFeeder(runKernel, kernelFragments); break; } case GraphResolutionConfiguratorKernelRole::NonRcb: { // Before zoom kernels - take prev kernel fragments as-is - copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); + res = copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); } default: @@ -123,6 +139,11 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configureFragments() break; } } + + if (res != StaticGraphStatus::SG_OK) + { + return res; + } } return StaticGraphStatus::SG_OK; @@ -154,11 +175,64 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsDownscaler(StaticGra // Start of output is rounded up since this is what b2i_ds does (Creates pixels starting from the pixel after) value = (scaleFactor * kernelFragments[stripe].fragmentStartX) / 2; _outputStartX[runKernel->kernel_uuid][stripe] = static_cast(ceil(value)) * 2; + + // Check if pixels are missing in the last stripe + if (stripe == _node->numberOfFragments - 1) + { + if (_outputStartX[runKernel->kernel_uuid][stripe] + kernelFragments[stripe].fragmentOutputWidth < resInfo->output_width) + { + if (validateDownscalerOutputWidth(&(kernelFragments[stripe]), 4, stripe, scaleFactor, runKernel)) + { + kernelFragments[stripe].fragmentOutputWidth += 4; + } + } + } } return StaticGraphStatus::SG_OK; } +bool Ipu8FragmentsConfigurator::validateDownscalerOutputWidth(StaticGraphFragmentDesc* stripe, uint16_t addition, int32_t stripeIndex, double scaleFactor, StaticGraphRunKernel* runKernel) +{ + const double ratio_prec = 1U << GraphResolutionConfigurator::SCALE_PREC; + + int scaling_ratio = (int)ceil((1 / scaleFactor) * (double)(1U << GraphResolutionConfigurator::SCALE_PREC)); + const double scaling_ratio_f = static_cast(scaling_ratio) / ratio_prec; + + int32_t offset_common = ((scaling_ratio - (static_cast(1U) << GraphResolutionConfigurator::SCALE_PREC)) >> 1); + + uint32_t orig_horizontal_offset; + if (stripeIndex == 0) + { + orig_horizontal_offset = (runKernel->resolution_info->input_crop.left << GraphResolutionConfigurator::SCALE_PREC) + offset_common; + } + else + { + orig_horizontal_offset = offset_common; + } + const uint16_t fragment_start_x = stripe->fragmentStartX; + const double calc = ceil((static_cast(fragment_start_x) / scaling_ratio_f / 2.0)) * 2.0; //2 * ceil(x/2) means round up to a closest even number + double horizontal_offset = (static_cast(orig_horizontal_offset) / ratio_prec) + static_cast(scaling_ratio_f * calc - static_cast(fragment_start_x)); + + const int32_t fragment_input_width = stripe->fragmentInputWidth; + const int32_t fragment_output_width = stripe->fragmentOutputWidth + addition; + + int32_t horizontal_offset_fxp = static_cast(floor(horizontal_offset * ratio_prec)); + + //1 + int32_t horizontal_offset_min = 0; + int32_t horizontal_offset_max = ((5 * scaling_ratio) - (1U << GraphResolutionConfigurator::SCALE_PREC)) / 2; + + //2 + horizontal_offset_min = std::max((58982 * fragment_input_width) - (fragment_output_width * scaling_ratio), horizontal_offset_min); + horizontal_offset_max = std::min((72089 * fragment_input_width) - (fragment_output_width * scaling_ratio), horizontal_offset_max); + + //3 + horizontal_offset_max = std::min(fragment_input_width * (1 << GraphResolutionConfigurator::SCALE_PREC) + scaling_ratio * (1 + 1 / 128) - fragment_output_width * scaling_ratio, horizontal_offset_max); + + return (horizontal_offset_fxp >= horizontal_offset_min && horizontal_offset_fxp <= horizontal_offset_max); +} + void Ipu8FragmentsConfigurator::vanishStripe(uint8_t stripe, uint32_t runKerenlUuid, StaticGraphFragmentDesc* kernelFragments, VanishOption vanishOption) { _node->fragmentVanishStatus[stripe] = vanishOption; @@ -189,7 +263,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsCropper(StaticGraphR for (int8_t stripe = 0; stripe < _node->numberOfFragments; stripe++) { - if (leftPixel + VANISH_MIN >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) + if (leftPixel + MIN_STRIPE_WIDTH_BEFORE_TNR >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) { // This stripe is cropped out, vanish it! // Note that we set output width to 0 for ESPA cropper and forward. But Stripe vanishes much eairlier in pipe, and these infos are not updated. @@ -204,7 +278,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsCropper(StaticGraphR for (uint8_t stripe = _node->numberOfFragments - 1; stripe >= 0; stripe--) { - if (rightPixel <= kernelFragments[stripe].fragmentStartX + VANISH_MIN) + if (rightPixel <= kernelFragments[stripe].fragmentStartX + MIN_STRIPE_WIDTH_BEFORE_TNR) { // This stripe is cropped out, vanish it! // Note that we set output width to 0 for ESPA cropper and forward. But Stripe vanishes much eairlier in pipe, and these infos are not updated. @@ -321,7 +395,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsUpscaler(StaticGraph // We would like to keep upscalerWidthGranularity as large as possible in order to minimize the number of pixels that cannot be used for upscaling // (upscalerWidthGranularity is divided to stripes, so the larger it is the more accurately we can divide) - while (inputUnits % 2 == 0) + while (inputUnits % 4 == 0) { inputUnits /= 2; upscalerWidthGranularity *= 2; @@ -340,7 +414,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsUpscaler(StaticGraph continue; } - if (leftPixel >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) + if (leftPixel + MIN_STRIPE_WIDTH_AFTER_TNR >= kernelFragments[stripe].fragmentStartX + kernelFragments[stripe].fragmentInputWidth) { // This stripe is cropped out, vanish it! vanishStripe(stripe, runKernel->kernel_uuid, kernelFragments, VanishOption::AfterTnr); @@ -359,7 +433,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsUpscaler(StaticGraph continue; } - if (rightPixel <= kernelFragments[stripe].fragmentStartX) + if (rightPixel <= kernelFragments[stripe].fragmentStartX + MIN_STRIPE_WIDTH_AFTER_TNR) { // This stripe is cropped out, vanish it! vanishStripe(stripe, runKernel->kernel_uuid, kernelFragments, VanishOption::AfterTnr); @@ -504,7 +578,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsOutput(StaticGraphRu { if (stripe == rightNonVanishedStripe) // last stripe { - kernelFragments[stripe].fragmentOutputWidth = static_cast(runKernel->resolution_info->input_width - _outputStartX[runKernel->kernel_uuid][stripe]); + kernelFragments[stripe].fragmentOutputWidth = static_cast(runKernel->resolution_info->output_width - _outputStartX[runKernel->kernel_uuid][stripe]); } else // first or middle stripe { @@ -654,7 +728,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrScaler(StaticGrap for (int32_t stripe = 0; stripe < _node->numberOfFragments; stripe++) { - if (_node->fragmentVanishStatus[stripe] != VanishOption::Full) + if (_node->fragmentVanishStatus[stripe] == VanishOption::AfterStats) { continue; } @@ -667,14 +741,14 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrScaler(StaticGrap // Save stripes for feeder configuration _tnrScalerFragments = kernelFragments; - _tnrScalerUuid = runKernel->kernel_uuid; + _tnrScalerRunKernel = runKernel; return StaticGraphStatus::SG_OK; } StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, GraphResolutionConfiguratorKernelRole kernelRole) { - if (kernelFragments == nullptr) + if (kernelFragments == nullptr || _tnrScalerFragments == nullptr || _tnrScalerRunKernel == nullptr) { return StaticGraphStatus::SG_ERROR; } @@ -691,6 +765,7 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGrap if (kernelRole == GraphResolutionConfiguratorKernelRole::TnrFeederFull) { // TNR Full resolution + kernelFragments[stripe].fragmentInputWidth = static_cast(_tnrScalerRunKernel->resolution_info->input_width); kernelFragments[stripe].fragmentOutputWidth = _tnrScalerFragments[stripe].fragmentInputWidth; kernelFragments[stripe].fragmentStartX = _tnrScalerFragments[stripe].fragmentStartX; _outputStartX[runKernel->kernel_uuid][stripe] = _tnrScalerFragments[stripe].fragmentStartX; @@ -698,20 +773,100 @@ StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsTnrFeeder(StaticGrap else // GraphResolutionConfiguratorKernelRole::TnrFeederSmall { // TNR Small resolution + kernelFragments[stripe].fragmentInputWidth = static_cast(_tnrScalerRunKernel->resolution_info->output_width); kernelFragments[stripe].fragmentOutputWidth = _tnrScalerFragments[stripe].fragmentOutputWidth; - kernelFragments[stripe].fragmentStartX = _outputStartX[_tnrScalerUuid][stripe]; - _outputStartX[runKernel->kernel_uuid][stripe] = _outputStartX[_tnrScalerUuid][stripe]; + kernelFragments[stripe].fragmentStartX = _outputStartX[_tnrScalerRunKernel->kernel_uuid][stripe]; + _outputStartX[runKernel->kernel_uuid][stripe] = _outputStartX[_tnrScalerRunKernel->kernel_uuid][stripe]; } } return StaticGraphStatus::SG_OK; } -void Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments) +StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, + uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, std::vector& smurfKernels) +{ + if (kernelFragments == nullptr || prevKernelFragments == nullptr) + { + return StaticGraphStatus::SG_ERROR; + } + + copyFragments(runKernel, prevKernelFragments, prevKernelUuid, kernelFragments); + + // Find the device that is fed by this smurf (the second in the pair) + StaticGraphRunKernel* deviceRunKernel = nullptr; + for (auto& smurfInfo : smurfKernels) + { + if (smurfInfo->_smurfRunKernel->kernel_uuid == runKernel->kernel_uuid) + { + deviceRunKernel = smurfInfo->_deviceRunKernel; + break; + } + } + + if (deviceRunKernel == nullptr) + { + // Smurf does not have a device? + return StaticGraphStatus::SG_ERROR; + } + + // Find the index of the device in the node kernels + StaticGraphFragmentDesc* deviceFragments = nullptr; + for (uint32_t j = 0; j < _node->nodeKernels.kernelCount; j++) + { + if (_node->nodeKernels.kernelList[j].run_kernel.kernel_uuid == deviceRunKernel->kernel_uuid) + { + + deviceFragments = _node->nodeKernels.kernelList[j].fragment_descs; + break; + } + } + + if (deviceFragments == nullptr) + { + // Smurf does not have a device? + return StaticGraphStatus::SG_ERROR; + } + + for (int8_t stripe = 0; stripe < _node->GetNumberOfFragments(); stripe++) + { + // If device is vanished, vanish the smurf too + if (deviceFragments[stripe].fragmentOutputWidth == 0 && + deviceFragments[stripe].fragmentInputWidth == 0) + { + vanishStripe(stripe, runKernel->kernel_uuid, kernelFragments, _node->fragmentVanishStatus[stripe]); + continue; + } + + // Smurf output is the same as the device input + kernelFragments[stripe].fragmentOutputWidth = deviceFragments[stripe].fragmentInputWidth; + } + + return StaticGraphStatus::SG_OK; +} + +StaticGraphStatus Ipu8FragmentsConfigurator::configFragmentsSmurfFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments) +{ + if (runKernel == nullptr || kernelFragments == nullptr) + { + return StaticGraphStatus::SG_ERROR; + } + + _outputStartX[runKernel->kernel_uuid] = std::vector(_node->numberOfFragments, 0); + + for (uint8_t stripe = 0; stripe < _node->numberOfFragments; stripe++) + { + _outputStartX[runKernel->kernel_uuid][stripe] = static_cast(kernelFragments[stripe].fragmentStartX - runKernel->resolution_info->input_crop.left); + } + + return StaticGraphStatus::SG_OK; +} + +StaticGraphStatus Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments) { if (prevKernelFragments == nullptr || kernelFragments == nullptr) { - return; + return StaticGraphStatus::SG_ERROR; } _outputStartX[runKernel->kernel_uuid] = std::vector(_node->numberOfFragments, 0); @@ -719,7 +874,7 @@ void Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, S if (_outputStartX.find(prevKernelUuid) == _outputStartX.end()) { // This is the main DS, we start from it, no need to copy - return; + return StaticGraphStatus::SG_OK; } for (uint32_t i = 0; i < _node->numberOfFragments; i++) @@ -732,4 +887,6 @@ void Ipu8FragmentsConfigurator::copyFragments(StaticGraphRunKernel* runKernel, S _outputStartX[runKernel->kernel_uuid][i] = kernelFragments[i].fragmentStartX; } + + return StaticGraphStatus::SG_OK; } diff --git a/modules/ipu_desc/ipu7x/FragmentsConfigurator.h b/modules/ipu_desc/ipu7x/FragmentsConfigurator.h index f3c6c9a..41fc1c1 100644 --- a/modules/ipu_desc/ipu7x/FragmentsConfigurator.h +++ b/modules/ipu_desc/ipu7x/FragmentsConfigurator.h @@ -31,12 +31,12 @@ class Ipu8FragmentsConfigurator { public: - - static const int32_t VANISH_MIN = 16; + static const int32_t MIN_STRIPE_WIDTH_BEFORE_TNR = 128; + static const int32_t MIN_STRIPE_WIDTH_AFTER_TNR = 64; static const int32_t UPSCALER_MAX_OUTPUT_WIDTH = 4672; Ipu8FragmentsConfigurator(IStaticGraphConfig* staticGraph, OuterNode* node, uint32_t upscalerWidthGranularity); - StaticGraphStatus configureFragments(); + StaticGraphStatus configureFragments(std::vector& smurfKernels); private: // Stripe Actions - each filter will perform one action according to its role @@ -46,11 +46,15 @@ class Ipu8FragmentsConfigurator StaticGraphStatus configFragmentsOutput(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsTnrScaler(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments); StaticGraphStatus configFragmentsTnrFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, GraphResolutionConfiguratorKernelRole kernelRole); + StaticGraphStatus configFragmentsSmurf(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* prevKernelFragments, + std::vector& smurfKernels); + StaticGraphStatus configFragmentsSmurfFeeder(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* kernelFragments); - void copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments); + StaticGraphStatus copyFragments(StaticGraphRunKernel* runKernel, StaticGraphFragmentDesc* prevKernelFragments, uint32_t prevKernelUuid, StaticGraphFragmentDesc* kernelFragments); void vanishStripe(uint8_t stripe, uint32_t runKerenlUuid, StaticGraphFragmentDesc* kernelFragments, VanishOption vanishOption); uint32_t getPlaneStartAddress(uint32_t sumOfPrevWidths, FormatType formatType, uint8_t plane); uint16_t alignToFormatRestrictions(uint16_t size, FormatType bufferFormat); + bool validateDownscalerOutputWidth(StaticGraphFragmentDesc* stripe, uint16_t addition, int32_t stripeIndex, double scaleFactor, StaticGraphRunKernel* runKernel); OuterNode* _node = nullptr; IStaticGraphConfig* _staticGraph = nullptr; @@ -61,5 +65,5 @@ class Ipu8FragmentsConfigurator // Save TNR resolutions for feeder configurations StaticGraphFragmentDesc* _tnrScalerFragments = nullptr; - uint32_t _tnrScalerUuid = 0; + StaticGraphRunKernel* _tnrScalerRunKernel = nullptr; }; diff --git a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp index bd5dbb9..dcdc115 100644 --- a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp +++ b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.cpp @@ -629,7 +629,6 @@ StaticGraphStatus GraphResolutionConfigurator::updateRunKernelUpScaler(StaticGra uint32_t& upscalerActualInputWidth, uint32_t& upscalerActualInputHeight, uint32_t& upscalerActualOutputWidth, uint32_t& upscalerActualOutputHeight) { - static const int SCALE_PREC = 16; const uint32_t ia_pal_isp_upscaler_1_0__scaling_ratio__min = 4096; const uint32_t max_upscaling = (1 << SCALE_PREC) / ia_pal_isp_upscaler_1_0__scaling_ratio__min; @@ -1166,14 +1165,6 @@ Ipu8GraphResolutionConfigurator::Ipu8GraphResolutionConfigurator(IStaticGraphCon _originalCropOfOutput = _outputRunKernel->resolution_info->input_crop; } - _widthIn2OutScale = static_cast(_outputRunKernel->resolution_history->input_width - - _outputRunKernel->resolution_history->input_crop.left - _outputRunKernel->resolution_history->input_crop.right) / - _outputRunKernel->resolution_history->output_width; - - _heightIn2OutScale = static_cast(_outputRunKernel->resolution_history->input_height - - _outputRunKernel->resolution_history->input_crop.top - _outputRunKernel->resolution_history->input_crop.bottom) / - _outputRunKernel->resolution_history->output_height; - SensorMode* sensorMode = nullptr; _staticGraph->getSensorMode(&sensorMode); if (sensorMode == nullptr) @@ -1193,10 +1184,14 @@ Ipu8GraphResolutionConfigurator::Ipu8GraphResolutionConfigurator(IStaticGraphCon } #if SUPPORT_FRAGMENTS == 1 + + initIsFragments(); + if (_node != nullptr && _node->GetNumberOfFragments() > 1) { _fragmentsConfigurator = new Ipu8FragmentsConfigurator(_staticGraph, _node, _upscalerStepW); } + #endif } @@ -1211,6 +1206,13 @@ Ipu8GraphResolutionConfigurator::~Ipu8GraphResolutionConfigurator() delete _fragmentsConfigurator; _fragmentsConfigurator = nullptr; } + + for (auto& smurfInfo : _smurfKernels) + { + delete smurfInfo; + } + _smurfKernels.clear(); + #endif } @@ -1330,14 +1332,50 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::initKernelsForUpdate() if (initRunKernel(smurfUuid.first, runKernel) == StaticGraphStatus::SG_OK && initRunKernel(smurfUuid.second, deviceRunKernel) == StaticGraphStatus::SG_OK) { - std::pair runKernelPair = std::make_pair(runKernel, deviceRunKernel); - _smurfKernels.push_back(runKernelPair); + SmurfKernelInfo* smurfInfo = new SmurfKernelInfo(); + smurfInfo->_smurfRunKernel = runKernel; + smurfInfo->_deviceRunKernel = deviceRunKernel; + smurfInfo->_originalDeviceCropHistory = deviceRunKernel->resolution_history->input_crop; + smurfInfo->_originalSmurfOutputCrop = runKernel->resolution_info->output_crop; + + _smurfKernels.push_back(smurfInfo); } } return StaticGraphStatus::SG_OK; } +StaticGraphStatus Ipu8GraphResolutionConfigurator::initIsFragments() +{ + _isFragments = false; + + if (_downscalerRunKernel == nullptr) + { + return StaticGraphStatus::SG_ERROR; + } + +#ifdef STATIC_GRAPH_USE_IA_LEGACY_TYPES + if (_downscalerRunKernel->system_api.size != ((GRA_ROUND_UP(sizeof(SystemApiRecordHeader), 4)) + (sizeof(StaticGraphKernelSystemApiB2iDs1_1)))) + { + // TODO log error + return StaticGraphStatus::SG_ERROR; + } +#endif + + auto systemApiHeader = static_cast(_downscalerRunKernel->system_api.data); + if (systemApiHeader->systemApiUuid != GraphResolutionConfiguratorHelper::getRunKernelDownscalerSystemApiUuid()) + { + // TODO log error + return StaticGraphStatus::SG_ERROR; + } + + StaticGraphKernelSystemApiB2iDs1_1* systemApi = reinterpret_cast + (static_cast(_downscalerRunKernel->system_api.data) + GRA_ROUND_UP(sizeof(SystemApiRecordHeader), 4)); + + _isFragments = systemApi->is_striping; + return StaticGraphStatus::SG_OK; +} + StaticGraphStatus Ipu8GraphResolutionConfigurator::updateStaticGraphConfig(const RegionOfInterest& roi, bool isCenteredZoom) { if (_staticGraph == nullptr) @@ -1504,9 +1542,9 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso // After resolution history was updated, re-configure SAP devices to get the correct FOV // We do not change the sap feeders configuration, only update the crop & scale of smurfs - for (auto& runKernelForUpdate : _smurfKernels) + for (auto& smurfInfo : _smurfKernels) { - if (updateRunKernelSmurf(runKernelForUpdate.first, runKernelForUpdate.second) != StaticGraphStatus::SG_OK) + if (updateRunKernelSmurf(smurfInfo) != StaticGraphStatus::SG_OK) { ret = StaticGraphStatus::SG_ERROR; } @@ -1517,10 +1555,10 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelOfScalers(Reso ret = SanityCheck(); } - if (_fragmentsConfigurator != nullptr) + if (ret == StaticGraphStatus::SG_OK && _fragmentsConfigurator != nullptr) { // Configure fragments according to the new zoomed run kernels information - _fragmentsConfigurator->configureFragments(); + ret = _fragmentsConfigurator->configureFragments(_smurfKernels); } return ret; @@ -1530,7 +1568,7 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelDownScaler(Sta { StaticGraphStatus ret = StaticGraphStatus::SG_OK; - if (_fragmentsConfigurator == nullptr) + if (_isFragments == false) { // No fragments, crop to ROI and downscale to output resolution runKernel->resolution_info->output_width = outputWidth; @@ -1763,34 +1801,39 @@ StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelUpScaler(Stati return ret; } -StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelSmurf(StaticGraphRunKernel* smurfRunKernel, StaticGraphRunKernel* deviceRunKernel) +StaticGraphStatus Ipu8GraphResolutionConfigurator::updateRunKernelSmurf(SmurfKernelInfo* smurfInfo) { StaticGraphStatus ret = StaticGraphStatus::SG_OK; - auto resInfo = smurfRunKernel->resolution_info; + auto resInfo = smurfInfo->_smurfRunKernel->resolution_info; if (resInfo->input_width == 0 || resInfo->input_height == 0) { return StaticGraphStatus::SG_OK; } - // We need to reach new history for device, without the crop already done by feeder. - // The hist of the smurf is the crop already being done by feeder, mutliplied by segmap factor (without smurf factor which changes) - StaticGraphKernelResCrop smurfNewCrop; - smurfNewCrop.left = deviceRunKernel->resolution_history->input_crop.left - smurfRunKernel->resolution_history->input_crop.left; - smurfNewCrop.right = deviceRunKernel->resolution_history->input_crop.right - smurfRunKernel->resolution_history->input_crop.right; - smurfNewCrop.top = deviceRunKernel->resolution_history->input_crop.top - smurfRunKernel->resolution_history->input_crop.top; - smurfNewCrop.bottom = deviceRunKernel->resolution_history->input_crop.bottom - smurfRunKernel->resolution_history->input_crop.bottom; + // We need to update smurf's output crop according to device's new crop history + StaticGraphKernelRes* deviceResHist = smurfInfo->_deviceRunKernel->resolution_history; + StaticGraphKernelResCrop newCrop; + newCrop.left = deviceResHist->input_crop.left - smurfInfo->_originalDeviceCropHistory.left; + newCrop.right = deviceResHist->input_crop.right - smurfInfo->_originalDeviceCropHistory.right; + newCrop.top = deviceResHist->input_crop.top - smurfInfo->_originalDeviceCropHistory.top; + newCrop.bottom = deviceResHist->input_crop.bottom - smurfInfo->_originalDeviceCropHistory.bottom; // Now calculate how much is left for the smurf to crop // Translate from history units to device units - double newInputToDeviceFactor = static_cast(deviceRunKernel->resolution_history->input_width - deviceRunKernel->resolution_history->input_crop.left - deviceRunKernel->resolution_history->input_crop.right) / - deviceRunKernel->resolution_history->output_width; + double newInputToDeviceFactor = static_cast(deviceResHist->input_width - deviceResHist->input_crop.left - deviceResHist->input_crop.right) / + deviceResHist->output_width; // Now translate from history units to smurf output (device) - smurfRunKernel->resolution_info->output_crop.left = static_cast(smurfNewCrop.left / newInputToDeviceFactor); - smurfRunKernel->resolution_info->output_crop.right = static_cast(smurfNewCrop.right / newInputToDeviceFactor); - smurfRunKernel->resolution_info->output_crop.top = static_cast(smurfNewCrop.top / newInputToDeviceFactor); - smurfRunKernel->resolution_info->output_crop.bottom = static_cast(smurfNewCrop.bottom / newInputToDeviceFactor); + newCrop.left = static_cast(newCrop.left / newInputToDeviceFactor); + newCrop.right = static_cast(newCrop.right / newInputToDeviceFactor); + newCrop.top = static_cast(newCrop.top / newInputToDeviceFactor); + newCrop.bottom = static_cast(newCrop.bottom / newInputToDeviceFactor); + + smurfInfo->_smurfRunKernel->resolution_info->output_crop.left = smurfInfo->_originalSmurfOutputCrop.left + newCrop.left; + smurfInfo->_smurfRunKernel->resolution_info->output_crop.right = smurfInfo->_originalSmurfOutputCrop.right + newCrop.right; + smurfInfo->_smurfRunKernel->resolution_info->output_crop.top = smurfInfo->_originalSmurfOutputCrop.top + newCrop.top; + smurfInfo->_smurfRunKernel->resolution_info->output_crop.bottom = smurfInfo->_originalSmurfOutputCrop.bottom + newCrop.bottom; return ret; } diff --git a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h index 3fb124d..85a7f7a 100644 --- a/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h +++ b/modules/ipu_desc/ipu7x/GraphResolutionConfigurator.h @@ -82,6 +82,8 @@ enum class GraphResolutionConfiguratorKernelRole : uint8_t TnrScaler, TnrFeederFull, TnrFeederSmall, + Smurf, + SmurfFeeder, None }; @@ -122,6 +124,8 @@ class GraphResolutionConfigurator StaticGraphStatus undoSensorCropandScale(SensorRoi& sensor_roi); StaticGraphStatus sensorCropOrScaleExist(bool& sensor_crop_or_scale_exist); StaticGraphStatus undoSensorScaleRipAngle(int32_t& rip_angle); + + static const int SCALE_PREC = 16; protected: StaticGraphStatus updateRunKernelPassThrough(StaticGraphRunKernel* runKernel, uint32_t width, uint32_t height); StaticGraphStatus updateRunKernelResolutionHistory(StaticGraphRunKernel* runKernel, StaticGraphRunKernel* prevRunKernel, bool updateResolution = true); @@ -172,6 +176,15 @@ class GraphResolutionConfigurator class Ipu8FragmentsConfigurator; +class SmurfKernelInfo +{ +public: + StaticGraphRunKernel* _smurfRunKernel; + StaticGraphRunKernel* _deviceRunKernel; + StaticGraphKernelResCrop _originalDeviceCropHistory = { 0,0,0,0 }; + StaticGraphKernelResCrop _originalSmurfOutputCrop = { 0,0,0,0 }; +}; + class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator { public: @@ -191,6 +204,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphStatus initRunKernel(uint32_t kernelUuid, StaticGraphRunKernel*& runKernel); StaticGraphStatus initOutputRunKernel(); StaticGraphStatus initKernelsForUpdate(); + StaticGraphStatus initIsFragments(); // Calculate ROI in dimensions of pipe downscaler input. StaticGraphStatus getDownscalerInputRoi(const RegionOfInterest& userRoi, ResolutionRoi& pipeInputRoi); @@ -201,7 +215,7 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphStatus updateRunKernelUpScaler(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, StaticGraphKernelResCrop& cropperKernelCrop, uint32_t outputWidth, uint32_t outputHeight); StaticGraphStatus updateRunKernelCropper(StaticGraphRunKernel* runKernel, ResolutionRoi& roi, uint32_t inputWidth, uint32_t inputHeight, uint32_t outputWidth, uint32_t outputHeight, StaticGraphKernelResCrop& downscalerCropHist); - StaticGraphStatus updateRunKernelSmurf(StaticGraphRunKernel* smurfRunKernel, StaticGraphRunKernel* deviceRunKernel); + StaticGraphStatus updateRunKernelSmurf(SmurfKernelInfo* smurfInfo); StaticGraphStatus SanityCheck(); StaticGraphStatus SanityCheckCrop(StaticGraphKernelResCrop* crop); @@ -220,9 +234,10 @@ class Ipu8GraphResolutionConfigurator : public GraphResolutionConfigurator StaticGraphRunKernel* _outputRunKernel; std::vector _kernelsForUpdateAfterCropper; std::vector _kernelsForUpdateAfterUpscaler; - std::vector> _smurfKernels; + std::vector _smurfKernels; // For striping OuterNode* _node = nullptr; Ipu8FragmentsConfigurator* _fragmentsConfigurator = nullptr; + bool _isFragments = false; }; diff --git a/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.cpp b/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.cpp index 74f98db..bab73bd 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.cpp +++ b/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.cpp @@ -118,3 +118,8 @@ uint32_t GraphResolutionConfiguratorHelper::getRunKernelIoBufferSystemApiUuid() return 50058; } +uint32_t GraphResolutionConfiguratorHelper::getRunKernelDownscalerSystemApiUuid() +{ + return 0; +} + diff --git a/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.h b/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.h index cd7316c..f1384ba 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.h +++ b/modules/ipu_desc/ipu7x/Ipu7xGraphResolutionConfiguratorAutogen.h @@ -38,5 +38,6 @@ class GraphResolutionConfiguratorHelper static uint32_t getRunKernelUuidOfOutput(HwSink hwSink, int32_t graphId, GraphLink** links); static StaticGraphStatus getRunKernelUuidForResHistoryUpdate(std::vector& kernelUuids); static uint32_t getRunKernelIoBufferSystemApiUuid(); + static uint32_t getRunKernelDownscalerSystemApiUuid(); static GraphResolutionConfiguratorKernelRole getKernelRole(uint32_t kernelUuid); }; diff --git a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphAutogen.cpp b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphAutogen.cpp index 92b86f1..0528949 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphAutogen.cpp +++ b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphAutogen.cpp @@ -310,7 +310,6 @@ void IsysOuterNode::Init(IsysOuterNodeConfiguration** selectedGraphConfiguration uint16_t kernelsUuids[1] = {11470 /*is_odr_a*/}; uint64_t kernelsRcbBitmap = 0x1; // { is_odr_a[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{is_odr_a}[0] } - uint8_t systemApisSizes[1] = {0 /*is_odr_a*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -331,7 +330,6 @@ void LbffBayerOuterNode::Init(LbffBayerOuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[31] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -358,7 +356,6 @@ void BbpsNoTnrOuterNode::Init(BbpsNoTnrOuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[7] = {44984 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 22660 /*cas_1_0*/, 7175 /*ofs_mp_bodr_regs_1_1*/, 6800 /*outputscaler_2_0_a*/, 51856 /*outputscaler_2_0_b*/, 30277 /*ofs_dp_bodr_regs_1_1*/, 31882 /*ofs_pp_bodr_regs_1_1*/}; uint64_t kernelsRcbBitmap = 0x7C; // { ofs_mp_bodr_regs_1_1[2], outputscaler_2_0_a[3], outputscaler_2_0_b[4], ofs_dp_bodr_regs_1_1[5], ofs_pp_bodr_regs_1_1[6] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x60; // {{slim_tnr_spatial_bifd_yuvn_regs_1_1, cas_1_0, ofs_mp_bodr_regs_1_1, outputscaler_2_0_a, outputscaler_2_0_b}[0], {ofs_dp_bodr_regs_1_1}[1], {ofs_pp_bodr_regs_1_1}[2] } - uint8_t systemApisSizes[7] = {156 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 0 /*cas_1_0*/, 156 /*ofs_mp_bodr_regs_1_1*/, 0 /*outputscaler_2_0_a*/, 0 /*outputscaler_2_0_b*/, 156 /*ofs_dp_bodr_regs_1_1*/, 156 /*ofs_pp_bodr_regs_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -379,7 +376,6 @@ void LbffBayerWithGmvOuterNode::Init(LbffBayerWithGmvOuterNodeConfiguration** se uint16_t kernelsUuids[35] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 41864 /*ifd_gmv_1_1*/, 61146 /*gmv_statistics_1_0*/, 13820 /*odr_gmv_match_1_1*/, 8985 /*odr_gmv_feature_1_1*/}; uint64_t kernelsRcbBitmap = 0x113FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28], gmv_statistics_1_0[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7FEE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12], {ifd_gmv_1_1}[13], {gmv_statistics_1_0}[14], {odr_gmv_match_1_1}[15], {odr_gmv_feature_1_1}[16] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 156 /*ifd_gmv_1_1*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_1*/, 156 /*odr_gmv_feature_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -406,7 +402,6 @@ void BbpsWithTnrOuterNode::Init(BbpsWithTnrOuterNodeConfiguration** selectedGrap uint16_t kernelsUuids[20] = {11500 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_1*/, 33179 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_1*/, 6326 /*tnr_sp_bc_bifd_yuv4n_regs_1_1*/, 48987 /*tnr7_ims_1_1*/, 54840 /*tnr7_bc_1_1*/, 48743 /*tnr_sp_bc_bodr_rs4n_regs_1_1*/, 44984 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 3133 /*tnr7_spatial_1_0*/, 27830 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_1*/, 44199 /*tnr_fp_blend_bifd_rs4n_regs_1_1*/, 32696 /*tnr7_blend_1_0*/, 39844 /*tnr_fp_bodr_yuvn_regs_1_1*/, 22660 /*cas_1_0*/, 60056 /*tnr_scale_fp*/, 7175 /*ofs_mp_bodr_regs_1_1*/, 6800 /*outputscaler_2_0_a*/, 51856 /*outputscaler_2_0_b*/, 30277 /*ofs_dp_bodr_regs_1_1*/, 31882 /*ofs_pp_bodr_regs_1_1*/, 57148 /*tnr_scale_fp_bodr_yuv4n_regs_1_1*/}; uint64_t kernelsRcbBitmap = 0x7E000; // { tnr_scale_fp[13], ofs_mp_bodr_regs_1_1[14], outputscaler_2_0_a[15], outputscaler_2_0_b[16], ofs_dp_bodr_regs_1_1[17], ofs_pp_bodr_regs_1_1[18] } uint64_t kernelsResolutionHistoryGroupBitmap = 0xE074E; // {{slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_1}[0], {slim_tnr_sp_bc_bifd_rs4nm1_regs_1_1}[1], {tnr_sp_bc_bifd_yuv4n_regs_1_1}[2], {tnr7_ims_1_1, tnr7_bc_1_1, tnr_sp_bc_bodr_rs4n_regs_1_1}[3], {slim_tnr_spatial_bifd_yuvn_regs_1_1, tnr7_spatial_1_0}[4], {slim_tnr_fp_blend_bifd_yuvnm1_regs_1_1}[5], {tnr_fp_blend_bifd_rs4n_regs_1_1}[6], {tnr7_blend_1_0, tnr_fp_bodr_yuvn_regs_1_1, cas_1_0, tnr_scale_fp, ofs_mp_bodr_regs_1_1, outputscaler_2_0_a, outputscaler_2_0_b}[7], {ofs_dp_bodr_regs_1_1}[8], {ofs_pp_bodr_regs_1_1}[9], {tnr_scale_fp_bodr_yuv4n_regs_1_1}[10] } - uint8_t systemApisSizes[20] = {156 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_1*/, 156 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_1*/, 156 /*tnr_sp_bc_bifd_yuv4n_regs_1_1*/, 0 /*tnr7_ims_1_1*/, 0 /*tnr7_bc_1_1*/, 156 /*tnr_sp_bc_bodr_rs4n_regs_1_1*/, 156 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 0 /*tnr7_spatial_1_0*/, 156 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_1*/, 156 /*tnr_fp_blend_bifd_rs4n_regs_1_1*/, 6 /*tnr7_blend_1_0*/, 156 /*tnr_fp_bodr_yuvn_regs_1_1*/, 0 /*cas_1_0*/, 0 /*tnr_scale_fp*/, 156 /*ofs_mp_bodr_regs_1_1*/, 0 /*outputscaler_2_0_a*/, 0 /*outputscaler_2_0_b*/, 156 /*ofs_dp_bodr_regs_1_1*/, 156 /*ofs_pp_bodr_regs_1_1*/, 156 /*tnr_scale_fp_bodr_yuv4n_regs_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -427,7 +422,6 @@ void SwGdcOuterNode::Init(SwGdcOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {5637 /*gdc7_1*/}; uint64_t kernelsRcbBitmap = 0x1; // { gdc7_1[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{gdc7_1}[0] } - uint8_t systemApisSizes[1] = {0 /*gdc7_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -448,7 +442,6 @@ void SwScalerOuterNode::Init(SwScalerOuterNodeConfiguration** selectedGraphConfi uint16_t kernelsUuids[1] = {19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x1; // { sw_scaler[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{sw_scaler}[0] } - uint8_t systemApisSizes[1] = {5 /*sw_scaler*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -469,7 +462,6 @@ void SwNntmOuterNode::Init(SwNntmOuterNodeConfiguration** selectedGraphConfigura uint16_t kernelsUuids[1] = {46539 /*nntm_1_0*/}; uint64_t kernelsRcbBitmap = 0x0; // { } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{nntm_1_0}[0] } - uint8_t systemApisSizes[1] = {5 /*nntm_1_0*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -490,7 +482,6 @@ void LbffRgbIrOuterNode::Init(LbffRgbIrOuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[34] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33714 /*gd_dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 3371 /*odr_ir_1_1*/, 20731 /*odr_awb_std_1_1*/, 2452 /*odr_awb_sve_1_1*/, 54176 /*odr_awb_sat_1_1*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/}; uint64_t kernelsRcbBitmap = 0xFF800071; // { ifd_pipe_1_1[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_1[6], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_0_1[25], upscaler_1_0[26], lbff_crop_espa_1_1[27], tnr_scale_lb[28], odr_output_ps_1_1[29], odr_output_me_1_1[30], aestatistics_2_1[31] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3DC000FC2; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0, gd_dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_1}[2], {odr_awb_std_1_1}[3], {odr_awb_sve_1_1}[4], {odr_awb_sat_1_1}[5], {ifd_lsc_1_1}[6], {lsc_1_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[7], {upscaler_1_0}[8], {lbff_crop_espa_1_1}[9], {tnr_scale_lb, odr_output_ps_1_1}[10], {odr_output_me_1_1}[11], {aestatistics_2_1}[12], {odr_ae_1_1}[13], {odr_af_std_1_1}[14] } - uint8_t systemApisSizes[34] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 0 /*gd_dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 156 /*odr_ir_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sve_1_1*/, 156 /*odr_awb_sat_1_1*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -517,7 +508,6 @@ void LbffIrNoGmvIrStreamOuterNode::Init(LbffIrNoGmvIrStreamOuterNodeConfiguratio uint16_t kernelsUuids[31] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -544,7 +534,6 @@ void BbpsIrWithTnrOuterNode::Init(BbpsIrWithTnrOuterNodeConfiguration** selected uint16_t kernelsUuids[20] = {11500 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_1*/, 33179 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_1*/, 6326 /*tnr_sp_bc_bifd_yuv4n_regs_1_1*/, 48987 /*tnr7_ims_1_1*/, 54840 /*tnr7_bc_1_1*/, 48743 /*tnr_sp_bc_bodr_rs4n_regs_1_1*/, 44984 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 3133 /*tnr7_spatial_1_0*/, 27830 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_1*/, 44199 /*tnr_fp_blend_bifd_rs4n_regs_1_1*/, 32696 /*tnr7_blend_1_0*/, 39844 /*tnr_fp_bodr_yuvn_regs_1_1*/, 22660 /*cas_1_0*/, 60056 /*tnr_scale_fp*/, 7175 /*ofs_mp_bodr_regs_1_1*/, 6800 /*outputscaler_2_0_a*/, 51856 /*outputscaler_2_0_b*/, 30277 /*ofs_dp_bodr_regs_1_1*/, 31882 /*ofs_pp_bodr_regs_1_1*/, 57148 /*tnr_scale_fp_bodr_yuv4n_regs_1_1*/}; uint64_t kernelsRcbBitmap = 0x7E000; // { tnr_scale_fp[13], ofs_mp_bodr_regs_1_1[14], outputscaler_2_0_a[15], outputscaler_2_0_b[16], ofs_dp_bodr_regs_1_1[17], ofs_pp_bodr_regs_1_1[18] } uint64_t kernelsResolutionHistoryGroupBitmap = 0xE074E; // {{slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_1}[0], {slim_tnr_sp_bc_bifd_rs4nm1_regs_1_1}[1], {tnr_sp_bc_bifd_yuv4n_regs_1_1}[2], {tnr7_ims_1_1, tnr7_bc_1_1, tnr_sp_bc_bodr_rs4n_regs_1_1}[3], {slim_tnr_spatial_bifd_yuvn_regs_1_1, tnr7_spatial_1_0}[4], {slim_tnr_fp_blend_bifd_yuvnm1_regs_1_1}[5], {tnr_fp_blend_bifd_rs4n_regs_1_1}[6], {tnr7_blend_1_0, tnr_fp_bodr_yuvn_regs_1_1, cas_1_0, tnr_scale_fp, ofs_mp_bodr_regs_1_1, outputscaler_2_0_a, outputscaler_2_0_b}[7], {ofs_dp_bodr_regs_1_1}[8], {ofs_pp_bodr_regs_1_1}[9], {tnr_scale_fp_bodr_yuv4n_regs_1_1}[10] } - uint8_t systemApisSizes[20] = {156 /*slim_tnr_sp_bc_bifd_yuv4nm1_regs_1_1*/, 156 /*slim_tnr_sp_bc_bifd_rs4nm1_regs_1_1*/, 156 /*tnr_sp_bc_bifd_yuv4n_regs_1_1*/, 0 /*tnr7_ims_1_1*/, 0 /*tnr7_bc_1_1*/, 156 /*tnr_sp_bc_bodr_rs4n_regs_1_1*/, 156 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 0 /*tnr7_spatial_1_0*/, 156 /*slim_tnr_fp_blend_bifd_yuvnm1_regs_1_1*/, 156 /*tnr_fp_blend_bifd_rs4n_regs_1_1*/, 6 /*tnr7_blend_1_0*/, 156 /*tnr_fp_bodr_yuvn_regs_1_1*/, 0 /*cas_1_0*/, 0 /*tnr_scale_fp*/, 156 /*ofs_mp_bodr_regs_1_1*/, 0 /*outputscaler_2_0_a*/, 0 /*outputscaler_2_0_b*/, 156 /*ofs_dp_bodr_regs_1_1*/, 156 /*ofs_pp_bodr_regs_1_1*/, 156 /*tnr_scale_fp_bodr_yuv4n_regs_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -565,7 +554,6 @@ void LbffBayerBurstOutNo3AOuterNode::Init(LbffBayerBurstOutNo3AOuterNodeConfigur uint16_t kernelsUuids[31] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 57981 /*odr_burst_isp_1_1*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 3971 /*ifd_pdaf_1_1*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 31724 /*odr_pdaf_1_1*/, 41864 /*ifd_gmv_1_1*/, 61146 /*gmv_statistics_1_0*/, 13820 /*odr_gmv_match_1_1*/, 8985 /*odr_gmv_feature_1_1*/}; uint64_t kernelsRcbBitmap = 0x137F0001; // { ifd_pipe_1_1[0], odr_burst_isp_1_1[16], b2i_ds_1_0_1[17], upscaler_1_0[18], lbff_crop_espa_1_1[19], tnr_scale_lb[20], odr_output_ps_1_1[21], odr_output_me_1_1[22], pext_1_0[24], pafstatistics_1_2[25], gmv_statistics_1_0[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EDC0002; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0, lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, odr_burst_isp_1_1, b2i_ds_1_0_1}[1], {upscaler_1_0}[2], {lbff_crop_espa_1_1}[3], {tnr_scale_lb, odr_output_ps_1_1}[4], {odr_output_me_1_1}[5], {ifd_pdaf_1_1, pext_1_0}[6], {pafstatistics_1_2}[7], {odr_pdaf_1_1}[8], {ifd_gmv_1_1}[9], {gmv_statistics_1_0}[10], {odr_gmv_match_1_1}[11], {odr_gmv_feature_1_1}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 156 /*odr_burst_isp_1_1*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*ifd_pdaf_1_1*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_1*/, 156 /*ifd_gmv_1_1*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_1*/, 156 /*odr_gmv_feature_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -592,7 +580,6 @@ void BbpsIrNoTnrOuterNode::Init(BbpsIrNoTnrOuterNodeConfiguration** selectedGrap uint16_t kernelsUuids[7] = {44984 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 22660 /*cas_1_0*/, 7175 /*ofs_mp_bodr_regs_1_1*/, 6800 /*outputscaler_2_0_a*/, 51856 /*outputscaler_2_0_b*/, 30277 /*ofs_dp_bodr_regs_1_1*/, 31882 /*ofs_pp_bodr_regs_1_1*/}; uint64_t kernelsRcbBitmap = 0x7C; // { ofs_mp_bodr_regs_1_1[2], outputscaler_2_0_a[3], outputscaler_2_0_b[4], ofs_dp_bodr_regs_1_1[5], ofs_pp_bodr_regs_1_1[6] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x60; // {{slim_tnr_spatial_bifd_yuvn_regs_1_1, cas_1_0, ofs_mp_bodr_regs_1_1, outputscaler_2_0_a, outputscaler_2_0_b}[0], {ofs_dp_bodr_regs_1_1}[1], {ofs_pp_bodr_regs_1_1}[2] } - uint8_t systemApisSizes[7] = {156 /*slim_tnr_spatial_bifd_yuvn_regs_1_1*/, 0 /*cas_1_0*/, 156 /*ofs_mp_bodr_regs_1_1*/, 0 /*outputscaler_2_0_a*/, 0 /*outputscaler_2_0_b*/, 156 /*ofs_dp_bodr_regs_1_1*/, 156 /*ofs_pp_bodr_regs_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -613,7 +600,6 @@ void LbffIrNo2ANoGmvOuterNode::Init(LbffIrNo2ANoGmvOuterNodeConfiguration** sele uint16_t kernelsUuids[26] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/}; uint64_t kernelsRcbBitmap = 0xFE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], b2i_ds_1_0_1[18], upscaler_1_0[19], lbff_crop_espa_1_1[20], tnr_scale_lb[21], odr_output_ps_1_1[22], odr_output_me_1_1[23] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3B8001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9] } - uint8_t systemApisSizes[26] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -634,7 +620,6 @@ void LbffIrNoGmvOuterNode::Init(LbffIrNoGmvOuterNodeConfiguration** selectedGrap uint16_t kernelsUuids[31] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -655,7 +640,6 @@ void IsysPdaf2OuterNode::Init(IsysPdaf2OuterNodeConfiguration** selectedGraphCon uint16_t kernelsUuids[2] = {11470 /*is_odr_a*/, 55449 /*is_odr_b*/}; uint64_t kernelsRcbBitmap = 0x3; // { is_odr_a[0], is_odr_b[1] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{is_odr_a}[0], {is_odr_b}[1] } - uint8_t systemApisSizes[2] = {0 /*is_odr_a*/, 0 /*is_odr_b*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -676,7 +660,6 @@ void LbffBayerPdaf2OuterNode::Init(LbffBayerPdaf2OuterNodeConfiguration** select uint16_t kernelsUuids[35] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 3971 /*ifd_pdaf_1_1*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 31724 /*odr_pdaf_1_1*/}; uint64_t kernelsRcbBitmap = 0x313FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28], pext_1_0[32], pafstatistics_1_2[33] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x6FEE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12], {ifd_pdaf_1_1, pext_1_0}[13], {pafstatistics_1_2}[14], {odr_pdaf_1_1}[15] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 156 /*ifd_pdaf_1_1*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -703,7 +686,6 @@ void LbffBayerPdaf3OuterNode::Init(LbffBayerPdaf3OuterNodeConfiguration** select uint16_t kernelsUuids[34] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 43213 /*pext_1_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 44308 /*pafstatistics_1_2*/, 31724 /*odr_pdaf_1_1*/}; uint64_t kernelsRcbBitmap = 0x127FE0001; // { ifd_pipe_1_1[0], pext_1_0[17], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_0_1[21], upscaler_1_0[22], lbff_crop_espa_1_1[23], tnr_scale_lb[24], odr_output_ps_1_1[25], odr_output_me_1_1[26], aestatistics_2_1[29], pafstatistics_1_2[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FDC0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, pext_1_0, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_1}[14] } - uint8_t systemApisSizes[34] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*pext_1_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -730,7 +712,6 @@ void IsysDolOuterNode::Init(IsysDolOuterNodeConfiguration** selectedGraphConfigu uint16_t kernelsUuids[2] = {11470 /*is_odr_a*/, 50407 /*is_odr_c*/}; uint64_t kernelsRcbBitmap = 0x3; // { is_odr_a[0], is_odr_c[1] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x2; // {{is_odr_a}[0], {is_odr_c}[1] } - uint8_t systemApisSizes[2] = {0 /*is_odr_a*/, 0 /*is_odr_c*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -751,7 +732,6 @@ void SwDolOuterNode::Init(SwDolOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {3700 /*dol_lite_1_0*/}; uint64_t kernelsRcbBitmap = 0x0; // { } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{dol_lite_1_0}[0] } - uint8_t systemApisSizes[1] = {0 /*dol_lite_1_0*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -772,7 +752,6 @@ void LbffDolOuterNode::Init(LbffDolOuterNodeConfiguration** selectedGraphConfigu uint16_t kernelsUuids[31] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/}; uint64_t kernelsRcbBitmap = 0x13FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12] } - uint8_t systemApisSizes[31] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -799,7 +778,6 @@ void SwGtmOuterNode::Init(SwGtmOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {37003 /*tm_app*/}; uint64_t kernelsRcbBitmap = 0x0; // { } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{tm_app}[0] } - uint8_t systemApisSizes[1] = {0 /*tm_app*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -820,7 +798,6 @@ void LbffBayerPdaf2WithGmvOuterNode::Init(LbffBayerPdaf2WithGmvOuterNodeConfigur uint16_t kernelsUuids[39] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 3971 /*ifd_pdaf_1_1*/, 43213 /*pext_1_0*/, 44308 /*pafstatistics_1_2*/, 31724 /*odr_pdaf_1_1*/, 41864 /*ifd_gmv_1_1*/, 61146 /*gmv_statistics_1_0*/, 13820 /*odr_gmv_match_1_1*/, 8985 /*odr_gmv_feature_1_1*/}; uint64_t kernelsRcbBitmap = 0x1313FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28], pext_1_0[32], pafstatistics_1_2[33], gmv_statistics_1_0[36] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7EFEE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12], {ifd_pdaf_1_1, pext_1_0}[13], {pafstatistics_1_2}[14], {odr_pdaf_1_1}[15], {ifd_gmv_1_1}[16], {gmv_statistics_1_0}[17], {odr_gmv_match_1_1}[18], {odr_gmv_feature_1_1}[19] } - uint8_t systemApisSizes[39] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 156 /*ifd_pdaf_1_1*/, 24 /*pext_1_0*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_1*/, 156 /*ifd_gmv_1_1*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_1*/, 156 /*odr_gmv_feature_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -847,7 +824,6 @@ void LbffBayerPdaf3WithGmvOuterNode::Init(LbffBayerPdaf3WithGmvOuterNodeConfigur uint16_t kernelsUuids[38] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 43213 /*pext_1_0*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 44308 /*pafstatistics_1_2*/, 31724 /*odr_pdaf_1_1*/, 41864 /*ifd_gmv_1_1*/, 61146 /*gmv_statistics_1_0*/, 13820 /*odr_gmv_match_1_1*/, 8985 /*odr_gmv_feature_1_1*/}; uint64_t kernelsRcbBitmap = 0x927FE0001; // { ifd_pipe_1_1[0], pext_1_0[17], rgbs_grid_1_1[18], ccm_3a_2_0[19], fr_grid_1_0[20], b2i_ds_1_0_1[21], upscaler_1_0[22], lbff_crop_espa_1_1[23], tnr_scale_lb[24], odr_output_ps_1_1[25], odr_output_me_1_1[26], aestatistics_2_1[29], pafstatistics_1_2[32], gmv_statistics_1_0[35] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FFDC0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, pext_1_0, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12], {pafstatistics_1_2}[13], {odr_pdaf_1_1}[14], {ifd_gmv_1_1}[15], {gmv_statistics_1_0}[16], {odr_gmv_match_1_1}[17], {odr_gmv_feature_1_1}[18] } - uint8_t systemApisSizes[38] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*pext_1_0*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 8 /*pafstatistics_1_2*/, 156 /*odr_pdaf_1_1*/, 156 /*ifd_gmv_1_1*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_1*/, 156 /*odr_gmv_feature_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -874,7 +850,6 @@ void LbffRgbIrWithGmvOuterNode::Init(LbffRgbIrWithGmvOuterNodeConfiguration** se uint16_t kernelsUuids[38] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 33714 /*gd_dpc_2_2*/, 15021 /*rgbs_grid_1_1*/, 14488 /*rgb_ir_2_0*/, 3371 /*odr_ir_1_1*/, 20731 /*odr_awb_std_1_1*/, 2452 /*odr_awb_sve_1_1*/, 54176 /*odr_awb_sat_1_1*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 41864 /*ifd_gmv_1_1*/, 61146 /*gmv_statistics_1_0*/, 13820 /*odr_gmv_match_1_1*/, 8985 /*odr_gmv_feature_1_1*/}; uint64_t kernelsRcbBitmap = 0x8FF800071; // { ifd_pipe_1_1[0], rgbs_grid_1_1[4], rgb_ir_2_0[5], odr_ir_1_1[6], ccm_3a_2_0[23], fr_grid_1_0[24], b2i_ds_1_0_1[25], upscaler_1_0[26], lbff_crop_espa_1_1[27], tnr_scale_lb[28], odr_output_ps_1_1[29], odr_output_me_1_1[30], aestatistics_2_1[31], gmv_statistics_1_0[35] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x3FDC000FC2; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0, gd_dpc_2_2, rgbs_grid_1_1, rgb_ir_2_0}[1], {odr_ir_1_1}[2], {odr_awb_std_1_1}[3], {odr_awb_sve_1_1}[4], {odr_awb_sat_1_1}[5], {ifd_lsc_1_1}[6], {lsc_1_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[7], {upscaler_1_0}[8], {lbff_crop_espa_1_1}[9], {tnr_scale_lb, odr_output_ps_1_1}[10], {odr_output_me_1_1}[11], {aestatistics_2_1}[12], {odr_ae_1_1}[13], {odr_af_std_1_1}[14], {ifd_gmv_1_1}[15], {gmv_statistics_1_0}[16], {odr_gmv_match_1_1}[17], {odr_gmv_feature_1_1}[18] } - uint8_t systemApisSizes[38] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 0 /*gd_dpc_2_2*/, 24 /*rgbs_grid_1_1*/, 0 /*rgb_ir_2_0*/, 156 /*odr_ir_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sve_1_1*/, 156 /*odr_awb_sat_1_1*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 156 /*ifd_gmv_1_1*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_1*/, 156 /*odr_gmv_feature_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -901,7 +876,6 @@ void LbffIrWithGmvIrStreamOuterNode::Init(LbffIrWithGmvIrStreamOuterNodeConfigur uint16_t kernelsUuids[35] = {52164 /*ifd_pipe_1_1*/, 11700 /*bxt_blc*/, 10326 /*linearization2_0*/, 6070 /*ifd_lsc_1_1*/, 2144 /*lsc_1_2*/, 33714 /*gd_dpc_2_2*/, 5144 /*wb_1_1*/, 21777 /*bnlm_3_3*/, 48695 /*bxt_demosaic*/, 13708 /*vcsc_2_0_b*/, 54721 /*gltm_2_0*/, 58858 /*xnr_5_2*/, 36035 /*vcr_3_1*/, 36029 /*glim_2_0*/, 13026 /*acm_1_1*/, 57496 /*gammatm_v3*/, 31704 /*bxt_csc*/, 15021 /*rgbs_grid_1_1*/, 62344 /*ccm_3a_2_0*/, 26958 /*fr_grid_1_0*/, 20739 /*b2i_ds_1_0_1*/, 25569 /*upscaler_1_0*/, 36213 /*lbff_crop_espa_1_1*/, 33723 /*tnr_scale_lb*/, 40915 /*odr_output_ps_1_1*/, 55391 /*odr_output_me_1_1*/, 20731 /*odr_awb_std_1_1*/, 54176 /*odr_awb_sat_1_1*/, 55073 /*aestatistics_2_1*/, 50677 /*odr_ae_1_1*/, 6500 /*odr_af_std_1_1*/, 41864 /*ifd_gmv_1_1*/, 61146 /*gmv_statistics_1_0*/, 13820 /*odr_gmv_match_1_1*/, 8985 /*odr_gmv_feature_1_1*/}; uint64_t kernelsRcbBitmap = 0x113FE0001; // { ifd_pipe_1_1[0], rgbs_grid_1_1[17], ccm_3a_2_0[18], fr_grid_1_0[19], b2i_ds_1_0_1[20], upscaler_1_0[21], lbff_crop_espa_1_1[22], tnr_scale_lb[23], odr_output_ps_1_1[24], odr_output_me_1_1[25], aestatistics_2_1[28], gmv_statistics_1_0[32] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x7FEE0001A; // {{ifd_pipe_1_1}[0], {bxt_blc, linearization2_0}[1], {ifd_lsc_1_1}[2], {lsc_1_2, gd_dpc_2_2, wb_1_1, bnlm_3_3, bxt_demosaic, vcsc_2_0_b, gltm_2_0, xnr_5_2, vcr_3_1, glim_2_0, acm_1_1, gammatm_v3, bxt_csc, rgbs_grid_1_1, ccm_3a_2_0, fr_grid_1_0, b2i_ds_1_0_1}[3], {upscaler_1_0}[4], {lbff_crop_espa_1_1}[5], {tnr_scale_lb, odr_output_ps_1_1}[6], {odr_output_me_1_1}[7], {odr_awb_std_1_1}[8], {odr_awb_sat_1_1}[9], {aestatistics_2_1}[10], {odr_ae_1_1}[11], {odr_af_std_1_1}[12], {ifd_gmv_1_1}[13], {gmv_statistics_1_0}[14], {odr_gmv_match_1_1}[15], {odr_gmv_feature_1_1}[16] } - uint8_t systemApisSizes[35] = {156 /*ifd_pipe_1_1*/, 5 /*bxt_blc*/, 5 /*linearization2_0*/, 156 /*ifd_lsc_1_1*/, 40 /*lsc_1_2*/, 0 /*gd_dpc_2_2*/, 0 /*wb_1_1*/, 5 /*bnlm_3_3*/, 0 /*bxt_demosaic*/, 0 /*vcsc_2_0_b*/, 0 /*gltm_2_0*/, 0 /*xnr_5_2*/, 0 /*vcr_3_1*/, 0 /*glim_2_0*/, 0 /*acm_1_1*/, 5 /*gammatm_v3*/, 0 /*bxt_csc*/, 24 /*rgbs_grid_1_1*/, 5 /*ccm_3a_2_0*/, 20 /*fr_grid_1_0*/, 0 /*b2i_ds_1_0_1*/, 0 /*upscaler_1_0*/, 156 /*lbff_crop_espa_1_1*/, 0 /*tnr_scale_lb*/, 156 /*odr_output_ps_1_1*/, 156 /*odr_output_me_1_1*/, 156 /*odr_awb_std_1_1*/, 156 /*odr_awb_sat_1_1*/, 24 /*aestatistics_2_1*/, 156 /*odr_ae_1_1*/, 156 /*odr_af_std_1_1*/, 156 /*ifd_gmv_1_1*/, 0 /*gmv_statistics_1_0*/, 156 /*odr_gmv_match_1_1*/, 156 /*odr_gmv_feature_1_1*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -928,7 +902,6 @@ void SwVaiOuterNode::Init(SwVaiOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x1; // { sw_scaler[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{sw_scaler}[0] } - uint8_t systemApisSizes[1] = {5 /*sw_scaler*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) @@ -949,7 +922,6 @@ void SwImvOuterNode::Init(SwImvOuterNodeConfiguration** selectedGraphConfigurati uint16_t kernelsUuids[1] = {19706 /*sw_scaler*/}; uint64_t kernelsRcbBitmap = 0x1; // { sw_scaler[0] } uint64_t kernelsResolutionHistoryGroupBitmap = 0x0; // {{sw_scaler}[0] } - uint8_t systemApisSizes[1] = {5 /*sw_scaler*/}; for (uint32_t i = 0; i < kernelConfigurationsOptionsCount; ++i) diff --git a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h index d0ab551..f0731d5 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h +++ b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphBinaryAutogen.h @@ -83,6 +83,7 @@ struct GraphConfigurationKey { }; struct GraphConfigurationHeader { + uint32_t additonalFeaturesBit = 0; GraphConfigurationKey settingsKey; uint16_t settingId = 0; int32_t graphId = 0; diff --git a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphDataPreloadAutogen.h b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphDataPreloadAutogen.h index e2db909..d5914c8 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphDataPreloadAutogen.h +++ b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphDataPreloadAutogen.h @@ -99,7 +99,7 @@ typedef struct DataRange static int distinctGraphsCount = 28; static GraphHashCode hashCodeLookup[] = { - {0, 0xCBD6F5}, + {0, 0xB38204DB}, {100000, 0xF9CD2BC5}, {100001, 0xFB0AC21B}, {100002, 0x8C9CA2B5}, diff --git a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphReaderAutogen.h b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphReaderAutogen.h index 3d88e46..0c0109d 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphReaderAutogen.h +++ b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphReaderAutogen.h @@ -82,7 +82,7 @@ class StaticGraphReader StaticGraphStatus Init(StaticReaderBinaryData& binaryGraphSettings); StaticGraphStatus GetStaticGraphConfig(GraphConfigurationKey& settingsKey, IStaticGraphConfig** graph); std::pair GetGraphConfigurationHeaders() const; - static const uint32_t staticGraphCommonHashCode = 13358837; // autogenerated + static const uint32_t staticGraphCommonHashCode = 3011642587; // autogenerated private: void GetSinkMappingConfiguration(GraphConfigurationHeader* baseGraphConfigurationHeader, VirtualSinkMapping* baseSinkMappingConfiguration, GraphConfigurationHeader* selectedGraphConfigurationHeader, VirtualSinkMapping* selectedSinkMappingConfiguration); diff --git a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphTypesAutogen.h b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphTypesAutogen.h index 8449861..79ef325 100644 --- a/modules/ipu_desc/ipu7x/Ipu7xStaticGraphTypesAutogen.h +++ b/modules/ipu_desc/ipu7x/Ipu7xStaticGraphTypesAutogen.h @@ -149,6 +149,11 @@ struct StaticGraphKernelSystemApiIoBuffer1_4 { uint32_t plane_start_address_per_stripe[12]; }; +// ia_pal_system_api_b2i_ds_1_1_t; +struct StaticGraphKernelSystemApiB2iDs1_1 { + uint8_t is_striping; +}; + #endif struct StaticGraphKernelBppConfiguration { uint8_t input_bpp = 0; diff --git a/src/core/BufferInterface.h b/src/core/BufferInterface.h index bb458db..7f6b7a0 100644 --- a/src/core/BufferInterface.h +++ b/src/core/BufferInterface.h @@ -24,18 +24,7 @@ */ namespace icamera { -class BufferProducer; - -/** - * BufferConsumer listens on the onBufferAvailable event from the producer by - * calling setBufferProducer - */ -class BufferConsumer { - public: - virtual ~BufferConsumer() {} - virtual int onBufferAvailable(uuid port, const std::shared_ptr& camBuffer) = 0; - virtual void setBufferProducer(BufferProducer* producer) = 0; -}; +class BufferConsumer; /** * BufferProcuder get the buffers from consumer by "qbuf". @@ -56,4 +45,24 @@ class BufferProducer : public EventSource { int mMemType; }; +/** + * BufferConsumer listens on the onBufferAvailable event from the producer by + * calling setBufferProducer + */ +class BufferConsumer { + public: + explicit BufferConsumer() : mBufferProducer(nullptr) {} + virtual ~BufferConsumer() {} + virtual int onBufferAvailable(uuid port, const std::shared_ptr& camBuffer) = 0; + virtual void setBufferProducer(BufferProducer* producer) { + mBufferProducer = producer; + if (mBufferProducer != nullptr) { + mBufferProducer->addFrameAvailableListener(this); + } + } + + protected: + BufferProducer* mBufferProducer; +}; + } // namespace icamera diff --git a/src/core/BufferQueue.cpp b/src/core/BufferQueue.cpp index 888a97c..40b20dc 100644 --- a/src/core/BufferQueue.cpp +++ b/src/core/BufferQueue.cpp @@ -28,8 +28,7 @@ BufferProducer::BufferProducer(int memType) : mMemType(memType) { } BufferQueue::BufferQueue() - : mBufferProducer(nullptr), - mThreadWaiting(true) { + : mThreadWaiting(true) { LOG1("@%s BufferQueue %p created", __func__, this); } @@ -63,13 +62,7 @@ void BufferQueue::setBufferProducer(BufferProducer* producer) { LOG1("%s producer %p", __func__, producer); AutoMutex l(mBufferQueueLock); - mBufferProducer = producer; - - if (producer == nullptr) { - return; - } - - mBufferProducer->addFrameAvailableListener(this); + BufferConsumer::setBufferProducer(producer); } void BufferQueue::addFrameAvailableListener(BufferConsumer* listener) { diff --git a/src/core/BufferQueue.h b/src/core/BufferQueue.h index 2e11a7b..dd79ef2 100644 --- a/src/core/BufferQueue.h +++ b/src/core/BufferQueue.h @@ -131,7 +131,6 @@ class BufferQueue : public BufferConsumer, public BufferProducer, public EventLi */ void setThreadWaiting(bool waiting); - BufferProducer* mBufferProducer; std::vector mBufferConsumerList; std::map mInputFrameInfo; diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index acd6d9e..ab1dc21 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -70,7 +70,6 @@ set(CORE_SRCS set(CORE_SRCS ${CORE_SRCS} ${CORE_DIR}/ProcessingUnit.cpp - ${CORE_DIR}/processingUnit/IPipeManagerFactory.cpp CACHE INTERNAL "core sources" ) diff --git a/src/core/CameraStream.cpp b/src/core/CameraStream.cpp index a886c4f..99e2fb4 100644 --- a/src/core/CameraStream.cpp +++ b/src/core/CameraStream.cpp @@ -32,7 +32,6 @@ CameraStream::CameraStream(int cameraId, int streamId, const stream_t& stream) : mCameraId(cameraId), mStreamId(streamId), mPort(USER_DEFAULT_PORT_UID), - mBufferProducer(nullptr), mBufferInProcessing(0) { LOG2("@%s: streamid:%d automation checkpoint: %dx%d, format: %s", mCameraId, __func__, streamId, stream.width, CameraUtils::getInterlaceHeight(stream.field, stream.height), @@ -145,15 +144,6 @@ int CameraStream::qbuf(camera_buffer_t* ubuffer, int64_t sequence, bool addExtra return ret; } -// This function is called in stop status, no lock -void CameraStream::setBufferProducer(BufferProducer* producer) { - mBufferProducer = producer; - - if (producer != nullptr) { - producer->addFrameAvailableListener(this); - } -} - int CameraStream::onBufferAvailable(uuid port, const shared_ptr& camBuffer) { // Ignore if the buffer is not for this stream. if (mPort != port) { diff --git a/src/core/CameraStream.h b/src/core/CameraStream.h index a7da642..ac2d129 100644 --- a/src/core/CameraStream.h +++ b/src/core/CameraStream.h @@ -69,11 +69,6 @@ class CameraStream : public BufferConsumer, public EventSource { */ int allocateMemory(camera_buffer_t* ubuffer); - /** - * \brief Register the mBufferProducer - */ - virtual void setBufferProducer(BufferProducer* producer); - /** * \brief The notify when polled or processed one frame buffer */ @@ -86,7 +81,6 @@ class CameraStream : public BufferConsumer, public EventSource { int mCameraId; int mStreamId; uuid mPort; - BufferProducer* mBufferProducer; // Guard for member mInputBuffersPool and mBufferInProcessing Mutex mBufferPoolLock; diff --git a/src/core/ProcessingUnit.cpp b/src/core/ProcessingUnit.cpp index c6ff31a..5b29d8c 100644 --- a/src/core/ProcessingUnit.cpp +++ b/src/core/ProcessingUnit.cpp @@ -27,7 +27,7 @@ #include "iutils/CameraLog.h" #include "iutils/Utils.h" #include "CameraContext.h" -#include "src/core/processingUnit/IPipeManagerFactory.h" +#include "PipeManager.h" #include "StageDescriptor.h" #define EXTREME_STRENGTH_LEVEL4 (-120) @@ -97,8 +97,7 @@ int ProcessingUnit::configure(const std::map& inputInfo, CheckAndLogError(ret != OK, ret, "%s: can't get config for mode %d", __func__, mConfigMode); LOG1("%s, Create PipeManager for ConfigMode %d", __func__, mConfigMode); - mPipeManager = unique_ptr - (IPipeManagerFactory::createIPipeManager(mCameraId, this, mScheduler)); + mPipeManager = unique_ptr(new PipeManager(mCameraId, this, mScheduler)); ret = mPipeManager->configure(inputInfo, outputFrameInfo, tuningConfig.configMode, tuningConfig.tuningMode, &mYuvInputInfo); diff --git a/src/core/SofSource.cpp b/src/core/SofSource.cpp index 8e1bd6f..4dc892d 100644 --- a/src/core/SofSource.cpp +++ b/src/core/SofSource.cpp @@ -17,6 +17,7 @@ #include "SofSource.h" +#include #include #include "PlatformData.h" @@ -33,6 +34,22 @@ SofSource::SofSource(int cameraId) mExitPending(false) { LOG1("%s: SofSource is constructed", __func__); + mFlushFd[0] = -1; + mFlushFd[1] = -1; + + int ret = pipe(mFlushFd); + if (ret >= 0) { + ret = fcntl(mFlushFd[0], F_SETFL, O_NONBLOCK); + if (ret < 0) { + LOG1("failed to set flush pipe flag: %s", strerror(errno)); + close(mFlushFd[0]); + close(mFlushFd[1]); + mFlushFd[0] = -1; + mFlushFd[1] = -1; + } + LOG1("%s, mFlushFd [%d-%d]", __func__, mFlushFd[0], mFlushFd[1]); + } + mSofDisabled = !PlatformData::isIsysEnabled(cameraId); // FILE_SOURCE_S mSofDisabled = mSofDisabled || PlatformData::isFileSourceEnabled(); @@ -41,6 +58,12 @@ SofSource::SofSource(int cameraId) SofSource::~SofSource() { LOG1("%s: SofSource is distructed.", __func__); + if (mFlushFd[0] != -1) { + close(mFlushFd[0]); + } + if (mFlushFd[1] != -1) { + close(mFlushFd[1]); + } } int SofSource::init() { @@ -122,6 +145,13 @@ int SofSource::start() { return OK; } + if (mFlushFd[0] != -1) { + // read pipe just in case there is data in pipe. + char readBuf; + int readSize = read(mFlushFd[0], reinterpret_cast(&readBuf), sizeof(char)); + LOG1("%s, readSize %d", __func__, readSize); + } + mExitPending = false; mPollThread->start(); @@ -134,6 +164,12 @@ int SofSource::stop() { return OK; } + if (mFlushFd[1] != -1) { + char buf = 0xf; // random value to write to flush fd. + const int size = write(mFlushFd[1], &buf, sizeof(char)); + LOG1("%s, write size %d", __func__, size); + } + mPollThread->exit(); mExitPending = true; mPollThread->wait(); @@ -148,20 +184,19 @@ int SofSource::poll() { std::vector pollDevs; pollDevs.push_back(mIsysReceiverSubDev); - V4L2DevicePoller poller{pollDevs, -1}; + V4L2DevicePoller poller{pollDevs, mFlushFd[0]}; std::vector readyDevices; int timeOutCount = pollTimeoutCount; while (((timeOutCount--) != 0) && (ret == 0)) { - ret = poller.Poll(pollTimeout, POLLPRI | POLLIN | POLLOUT | POLLERR, &readyDevices); - - if ((ret == 0) && mExitPending) { - // timed out - LOGI("Time out or thread is not running, ret = %d", ret); - return BAD_VALUE; + if (mExitPending) { + LOG2("%s: mExitPending is true, exit", __func__); + return -1; } + + ret = poller.Poll(pollTimeout, POLLPRI | POLLIN | POLLOUT | POLLERR, &readyDevices); } if (mExitPending) { diff --git a/src/core/SofSource.h b/src/core/SofSource.h index 62150ef..1c84380 100644 --- a/src/core/SofSource.h +++ b/src/core/SofSource.h @@ -41,6 +41,8 @@ class SofSource : public EventSource { int deinitDev(); PollThread* mPollThread; + int32_t mFlushFd[2]; // Flush file descriptor + int mCameraId; V4L2Subdevice* mIsysReceiverSubDev; bool mExitPending; diff --git a/src/core/processingUnit/FaceStage.cpp b/src/core/processingUnit/FaceStage.cpp old mode 100755 new mode 100644 diff --git a/src/core/processingUnit/PipeLine.cpp b/src/core/processingUnit/PipeLine.cpp index 4f54aa2..afd82f7 100644 --- a/src/core/processingUnit/PipeLine.cpp +++ b/src/core/processingUnit/PipeLine.cpp @@ -572,8 +572,8 @@ std::vector PipeLine::findStageConsumer(const PipeStageUnit& psU std::map PipeLine::getConsumerPortMap(const PipeStageUnit* psUnitConsumer) { std::map portMap; - std::vector intputTerminals = psUnitConsumer->inputTerminals; - for (auto& sinkTerminal : intputTerminals) { + std::vector inputTerminals = psUnitConsumer->inputTerminals; + for (auto& sinkTerminal : inputTerminals) { if (mSinkMapSource.find(sinkTerminal) == mSinkMapSource.end()) { continue; } diff --git a/src/meson.build b/src/meson.build index c6bf941..16498dd 100644 --- a/src/meson.build +++ b/src/meson.build @@ -42,7 +42,6 @@ libcamera_sources += files([ 'core/PSysDevice.cpp', 'core/SofSource.cpp', 'core/processingUnit/PipeManager.cpp', - 'core/processingUnit/IPipeManagerFactory.cpp', 'core/processingUnit/PipeLine.cpp', 'core/processingUnit/CBStage.cpp', # FILE_SOURCE_S