From f46f3335431ab02a5c4ac253052ad89d178a2ea2 Mon Sep 17 00:00:00 2001 From: Hao Yao Date: Tue, 4 Nov 2025 18:08:13 +0800 Subject: [PATCH] PTL PV release candidate 3 on 2025-11-04 Signed-off-by: Hao Yao --- .../ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin | Bin 351636 -> 351932 bytes .../ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin | Bin 360428 -> 360836 bytes .../linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin | Bin 411516 -> 411884 bytes .../ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin | Bin 206244 -> 206436 bytes .../ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin | Bin 508700 -> 509156 bytes .../ipu7x/gcss/OV05C10_BBG501N3.IPU7X.bin | Bin 868232 -> 868908 bytes .../ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin | Bin 2482776 -> 2484884 bytes .../linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin | Bin 2276240 -> 2278900 bytes .../ipu7x/gcss/S5K3J1_GRBG_NONPDAF.IPU7X.bin | Bin 920696 -> 921548 bytes .../ipu75xa/FragmentsConfigurator.cpp | 207 +++++++++++++++--- .../ipu_desc/ipu75xa/FragmentsConfigurator.h | 14 +- .../ipu75xa/GraphResolutionConfigurator.cpp | 105 ++++++--- .../ipu75xa/GraphResolutionConfigurator.h | 19 +- ...75xaGraphResolutionConfiguratorAutogen.cpp | 5 + ...pu75xaGraphResolutionConfiguratorAutogen.h | 1 + .../ipu75xa/Ipu75xaStaticGraphAutogen.cpp | 33 --- .../ipu75xa/Ipu75xaStaticGraphBinaryAutogen.h | 1 + .../Ipu75xaStaticGraphDataPreloadAutogen.h | 2 +- .../ipu75xa/Ipu75xaStaticGraphReaderAutogen.h | 2 +- .../ipu75xa/Ipu75xaStaticGraphTypesAutogen.h | 5 + .../ipu_desc/ipu7x/FragmentsConfigurator.cpp | 207 +++++++++++++++--- .../ipu_desc/ipu7x/FragmentsConfigurator.h | 14 +- .../ipu7x/GraphResolutionConfigurator.cpp | 105 ++++++--- .../ipu7x/GraphResolutionConfigurator.h | 19 +- ...pu7xGraphResolutionConfiguratorAutogen.cpp | 5 + .../Ipu7xGraphResolutionConfiguratorAutogen.h | 1 + .../ipu7x/Ipu7xStaticGraphAutogen.cpp | 28 --- .../ipu7x/Ipu7xStaticGraphBinaryAutogen.h | 1 + .../Ipu7xStaticGraphDataPreloadAutogen.h | 2 +- .../ipu7x/Ipu7xStaticGraphReaderAutogen.h | 2 +- .../ipu7x/Ipu7xStaticGraphTypesAutogen.h | 5 + src/core/BufferInterface.h | 33 ++- src/core/BufferQueue.cpp | 11 +- src/core/BufferQueue.h | 1 - src/core/CMakeLists.txt | 1 - src/core/CameraStream.cpp | 10 - src/core/CameraStream.h | 6 - src/core/ProcessingUnit.cpp | 5 +- src/core/SofSource.cpp | 49 ++++- src/core/SofSource.h | 2 + src/core/processingUnit/FaceStage.cpp | 0 src/core/processingUnit/PipeLine.cpp | 4 +- src/meson.build | 1 - 43 files changed, 663 insertions(+), 243 deletions(-) mode change 100755 => 100644 src/core/processingUnit/FaceStage.cpp diff --git a/config/linux/ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin b/config/linux/ipu75xa/gcss/OV08X40_KAFE799.IPU75XA.bin index 4b785e461ff31e3d781c0e079639376043d2e5f2..db3f3c8978d58b0512273e554d60899ab206b37e 100644 GIT binary patch delta 1093 zcmY*Wze^)Q6n2wYXVpZr*@?H_X)Xqf97&N*k5fplu{p$Ei-3)V#R`Ir2LTIhgpem_ zaYZZy!Dg*2R7i832PrH>Eb<2&hv`yy;Eua5^JZb-eLv>S_ud}gWNz;=)==>MyZrL~ z%6c&1(bzF1k%coh-;B+{MNCA5ZN3w39En~?91e&oe|Pi;M9(O~>yZT&wiq>$Oy?JC zer4bjvII*j9CD_zmEi6VhX!GaC*3E5L4AWYhpBI=&%vY2$ft0$he2a-!U}WrUPCgGTtX5 z<6;u^UZA&=kv=_+bd@{M8eb=`r6wq z1sKj6$>TYw$q~8(bjAdn$Cu$$U?(|CTcBI^EoUfdX(%;GwYr90G*tVboMC#`#W!tJ zK-I;(@=f1GcQ4T7tbNTbGe1t@{VESVijh-#A61WFW(}==qFP%+=*I}g}f1*Sa9OO LVb_Jcx%KT0QDW>u delta 691 zcmX|8ziZo25U%8>NU~!`v7Zt-aa6_jP-q7yOG2Z;&_XB_>QUe~Wb9JV*d-;n;ZD zp^4J_UQuDxVOu5cVgHGXzLOgC$$4Oe$($}B#f^*ib4Ky*SIu$}xU+(NR~Kwy)bYT) z9Eo#+tQJ_~>G)4`ENj;-U z5qb^Hj~b%jxf#T8$aVTJ7iOTqG?XXaa2n_@Gl-?kpvxukKQAy^o~iCcI?wST8Y%_H z+x9N9CN0pUCFu{|G-u4Sl_3t=5q_>@^a}lwaf{({Rbq~`rOz-XAFOHqc#Td-U8?a= zX%1qE^@*O|)-V5I{2(EmXl{@&r0bd5>||Z*lD44vk`G_{omYOxBD2X#WbCuwan5%B E0r2_b>i_@% diff --git a/config/linux/ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin b/config/linux/ipu75xa/gcss/OV13B10_09B13.IPU75XA.bin index f0960bc15b29af76b10ef16a64192d59679fad1c..bdb73646dcbd4f7becd81648b1221d573c21cc29 100644 GIT binary patch delta 1620 zcmY+DJ#11@6vyr3<2^oFp${llTESuqLJkzyCSs{?ECW%YX6r2MOZ_`~Cfz ze>^f`nh%3@sQ9Z;*Rs&oVqPTB)od;ubE)NtaT3+tcPt;?JuJo}(SPay^9em44slJe>N z#exp@HMH}Fp{a`C{JRdj0kv*tPt#$npaP^H7*Gz%q$+#~)`a7#qo+b;B7PIB(7qB~ zg!bLV7sIsp3QHP>De0I+=|zev{usRVG~xFmEiQos{3=Npoz9Xp1^TjX z$;e%Ia+PLAgY{Ka$9-Q39i66cOP!4)B4)Rrl9Idb(-gHv+tX`0u6wXXI{F{4$$B>A zIz>3dk%*$YYrA!aYLTGPi69-GBMFXXrK#hb>nCZo2R@L)43S2_Jx3Be2VK9sOF1K+ zBMCdFzd^@jf^Lf^8&rVC&}uF#3A^SjRiH7{2a3*L?menNW0=zx1iLz~caw6^80NGD z!MmGn(mCi1_1YFyu=|6HEz;44vyL3;c!9&5synO5la3eI%S+wt-=_fY&lVBd$JV(5 zl_GIogCJ-ha|VJq&%P)-@}(512Ua*M*p`I-fw$EP)F(n`t`4lyN2|2JK8<}I_IZC; IC13aXe>Bxl&Hw-a delta 817 zcmYL{!Al!a5XNh=+l?m1MBkcMP2$ER8Z|ZBUc3YvX+cUYMCf75ZoxmGhbi>XLoI?r zJt#=NgO?UOc<3R86k6JYh5P{uIriYeOQ8n~Ip!d=^L7(l_;~x~&G*~4GqbxhdG*hX z+~Vic*LU~7L_`QDQGsTxidra!w;`ct)hRZ_6F<@o32aZB$b{XYELM#bju!AMEYJ;8 zKR3A;dWlErw^q6SkW75TSl0f6CCIY>24`&k+G~w{7_=FFp#F-ett!WK4)8Qx~ zF-h2EU8E%vDF-i8icWYY3C*m;rF2leLuj#TLZUk5aK|KCQ#Uk^BZ?#uOFNupVk_-3 zkxcsML@2`!0q(c$}z<{U1ui5K(A zO|VPE9*NVE1GzxhU!cY!;Wg_I%UdFJSZWNPmtB87=e2y7+rnz=CKi@m>@5?nSyb^` WveT=)?^T9aAy$~BeeYHD{f+;)f)0BC diff --git a/config/linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin b/config/linux/ipu7x/gcss/IMX471_AAJH5-D.IPU7X.bin index 6045a3fc37b55ab130d3dd8872a906a0546ce22b..768f1c696c4ebe462efbdbd29876a860d16a3ba2 100644 GIT binary patch delta 1242 zcmZXTze@sP7{^mjQ`5Rb54+6Nva(cgXbBq}T7sejTY`ccg5IFPvB5zqXo)bNf51OM zXoxn~w%c1=0|y6}prLzsAK!bugcsh=^ZkB&?+5q$VvJsm@SOAeQtsbg!xIJf(DXC7 z@+Dmu%5dQqNsCu3g~3^XrUDS>#Z$Moq#nzb%JiX?p*t*B5rX)uII_D{J2C32PE;AZL)$H<*B~iXj<& zW7bg9k}(A|_S0na(sW&&41>p2syoolxO-^1Ky^#uw?1B@T06@?0H#Kkj%a5+&M+rA z0?>)%$!X@v8EgFB?R9dj4d;`Z0;WIfJD>(r*uYj$K!N%B}V`{AG_q_O5~^&21=Rw2yGdD2_DqSlUngP S%kQj!vlM3q-_=U!cI6M@Q2&tt delta 439 zcmYk#IZne+00hu@jRPU8v)I}9&GrR2M6Qv7BTQk5f(|L;b5L^#dd}d25;_VdNSJ(S z^k%;F^*_$R_jBNtbiUr-N@wqr2C~!uO<{tTus~bbpd%d66)sp7WzZ8IjB(a9qAac) zi*}#o75{3TZmw7Uzi$8Dyc8|27I)PnYp3jV=U>P#;J4L$*7bEAY={Qf6iu)tT3}nW zL0|Y_M|8lh=z=}b1N)*61|k4M5rP9T0Ec1-j>HHYi!nG66L2b~;7rWGxtN0su>hB1 z39iHnT#Gfh5gTwTw%|_ez`fXm2XO!+5rMIY!32+K@{}fqVk(wmE6!`0xDVkEBh{TV diff --git a/config/linux/ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin b/config/linux/ipu7x/gcss/OV02C10_MSHW0550.IPU7X.bin index 41773f7ef9390de8988de967de326c1b881b15ba..3863cbdd27ba8c4e267ee2df62e6dee836432e83 100644 GIT binary patch delta 627 zcmZ9Ju};G<6h%pskc2waG^X`{_<|1kfP6#{D?#+3HjHLsZIYJ8_Nu2ib7L?B1 zcCOpb#O-tp*t%9H_o$QlfM-5+QlBDU<5TQ*pp8r%1)={))by7z&sUNn{D&^N@Dn#cqsMk}IN@WC<-Hi~fRY6{6d! kiEd3!|F?4FBeI@GfU8!}{S>_)w~>WhN@pp1Z_?ewe^O(J8vp wVy0sRf3E15?MP>TxTPk?Mb1`%M8TLLQ6f>It3p@Ro>hHOwSdfrsx2A)0Fmm0HUIzs diff --git a/config/linux/ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin b/config/linux/ipu7x/gcss/OV02E10_CBG202N3.IPU7X.bin index ab8e8c821db8ae90e7bc74340798b690cf8a8e18..8909ae99044bfdd3955429b191b05026fa5cca4e 100644 GIT binary patch delta 1490 zcmZ9MJ#5oJ7>03^Gzm$mLu^98N=+zLT2gRZNHb)J1S3PFbg9J90V#*X5F{3)4BSHzNmk-;lc2YmST-PMs!^7DT0W1k$IXK&ViAFt)kg}-0v zm!Ci79%yL}lL98=0{T3CR1_(rMbXIc*VCaF zg#kTW!DzTLQsRRPYRL!H=&5#(f_9FaRR?XESoD1rH|v!c-PaZHROpn%1e^3VgBB$g z{XyL_qxnTtqR9a@%Luw<#qrCE;~ELaG7&f?9J|8ExP+9$M1^8SOwjjI2F)vYhF)bf zzKlvVIiS-x(5s5$RuyM>CE@%*Fuf`ila8%E9a(4w7L(wm_;e7xoWM#ry_(_(;Lh_J zoJ9?eT`}pg-KVY%$G4e;XbQ)-6OL0?90A-pti$o@aOUgbk-3gO2YX$CnFRFRjqu3a zK!t<8p}>iRxSus?v(cY6(3&)uxOV@~u%k)itU#v1xK%%lyCNFaTCt4 z8J?aPqA8qVGvWB#iX(tKf4AWr-Gb9|!ozYKeGZ-q9Y;*i53Fck^BqjOyWxR}flq(# z;2GWBgyZfhjsWib*n{KTfn&GA!*UmW4igoMEis8d9M@U{O7F)X4o>4Ubh;lYuk`j? Yy{(07DO{;=rNfm8*Ya1roh`om2VWyYL;wH) delta 532 zcmX}iyDmgg6oBD5b3GViFz(E88OGhXJBdP~^#K1PXs17gL_$Ql6P3~nsI+>$oCoj< zdOwAoeEGB1+FuXJ^IZ}beBYlRh1d8h3Pf4RMbV0q6=f?bR#dI1SrJJjLN8>{_vB sMbC6wuxeCZ(sT2V@{#YwiJh33qiYFjYML9eN2ZkF={04^(4w^7DYN93# zOq0aIA{V%2M0|s`hDDccQ1z|UvkgyeSX*W!rMOj z8()0TFYV!fU;X!9ElUeNzW|Uc7;O0(Y?!w%82qeoQU>Y07UcX4Hk@nA7TGtyJ2xw_ zSgvHS?gHLhq-*<#qE{i5su+B90ez9amx!VT5Q+f?t1h4~(v|&0QL7OO)eIJ0KwqRU zYKWrLHdKmda|D)sW1tukWNKCGxh&OUX{naMlLJ^1AlDICupwWEzSkez^ZO8X%tq{(10nbkHsC`eYGxyYLfD4wDR%TGPv=dOt?|y%VHP%?2kAWPusXR;tcb_;xXS?6X<4~W24)vFtRcQixyw_ze$=h#5mLDu!AdED zl~RN+$}v;~Xi);IHWZ`i7o&Vpj-w(#?Iy5jL!sOD10hJo42briR_JD+#O%)Y6yMWQ z%+m>@C&~!=$_NAhIVa`&Kw--U zSwmme_-}=VzJT<30viaqQA^K_@*j&)OAy!Qn0viG=6><^K=wisu8(_@wOxsRVW*=z zU*0`Xek+0OkHgdibwrw-nEH>WO?o}iUL|P^{!Gp|O+g7*nQ~iJqNcpb;*Ml9Menhh zO2CVYv>_7Zk~euylAfpKPd*7sfjESxT@hn*ntVFflrQfx#SIpA#QOOP35wNmkgiaB zJJzqz``Tu1W|t`X^CXVJyBYeC-_0c8w(i!%JOSlh$*o!ZU&_qlzguROukTeSGZD5a44ATUc!%KmrL6Hj`k&O)!h0LZastf;19HP^6k$n1^s< zQP9#M#I1P(%Cr=z;CSvh%(ZlMboA-Brn&78bD#ds#(n(${QB9~i8rEX$}TR~?6+t- z?VtP~HYrwG3MOB5e>IRzK5SB~bTF8Ft@x{;jhNB$%jpfm5v8fR-LG38!uz~dwj-f$GZIt+KEBCFlYjUc4N>U z44TBCy%@9)gZ5*PFz5gV9mJqR7<3qej$qIf1|7wqV;FQCgHB-3Ner6Cpi>xh8iUSY z&{+&Rhe78tsDeRN47z|p7cuA(2F+m5WemE4L02(o7K7$6=o$uH$Dnx(TEL(i7<3bZ zZeh?O2HnP>I~a5qgYIF_eGIB$&;txw!b|Hsf=*Pi?N_li%k@IJpv=Qy+pdi-+|_$q zw_H%>QLyDzZLLm3WouUan5PTVJPz0GeD}6{YkF&zE=;o;u6b5k)$b7>yyn+DU6|%c zxc1Vve{kB!$E;jX=4r6yRc*cAD)GI~{FtW;(>xE?JS*8NGcS7o+kJB`DAO!#?_Kkw bYevuyB^ZD~7=kjyFbpFw`qeeZ-faE@Da^@Q diff --git a/config/linux/ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin b/config/linux/ipu7x/gcss/OV08X40_BBG802N3_LNL.IPU7X.bin index d20bf1ab8b53069ba3039a142181eb3e3bfe4b67..5f81ac820a77c3ec9f8585ddd6424e38a9a5b865 100644 GIT binary patch delta 7402 zcmZ{o4|vpd9mm_6G+~2Nj(@VrkAMe>kw?r_*u!(;9$Pl$a?2#)@s=1rV&s`K(59WV zlxW0t-w{NMPMsk!;)p*IO}l83*|gI}YK%N`X6DQ@mzhoL^WpdYe81nj4W8%wJm2^G z{rY^kyM4aD-~I0S?rjBaC$<$7e}Mj-EZT5je{ogeIV>(zr=6uLQaD+47W&~d6pmMk zIW^>#SgvqR(MX(eg=-&?Gp=yHQ6u#;?lV_-udmhSwq-t7SgbNv1kb!k69JAFTRn4F zlStp@v$D!W0%y-XTVrLSdv{z(FKec19Bp8~+B~Mta)il@$z@jIZy@>dlH9yb8Aq6O zsm{IkMV1UNDNtT091y9xMRRp!?M?~z^q1ns&iHbGil@u2q}OD2lbQ0Q0l zCex>BUEnpc&|))G!$OBEmTxctdivc?<38WH|s0Iv@_R%;51XqSB4UmomQjBl>%3F zjesmSabUW1IPG{njpJQyyq@HGMXBleFT$B2E$jkvy@JRtN2Ny9sCF@uGcXL2_+|l3 z&Ty3$lD0~kn3Y=>pKZ$YJ~G!;%@V|Bqar%Tav8~9gxc6_OGM|$|3FCQBNn0schVv< z7d&@KSAb_ki{N}Z>hq9<=YbDhY`Ki2KB^H*gf0fpNHSm{T5u;Vg7d+L=ea8JG4PCN z;k%TMl`aESHg3rA92_Tmqhv=*KNY3+|+a?^5uA1+I!*2A&ZuGF7e`KoY+k zcy^&N6%*lwUTyqxvsc-Lz?leD8AA3%n1K3tIQIxH#%p0hi{uhIE|R1d%be3xdpD}k zl3J5990;OKdhr=y?$V|}GhE;-u?k2GF9>^wCbQTdP(Py+v2TDZjnD_Y) ziQ&5*HIhU=i#p%+bjn0XIshYnLta^UnN_AmwA=gm`y|aSL!Bg{8&Q{CMn_GAq&;F} zZp^C-uCVH~h#dDm{w_(=D^Mp%;3m|iSI~(QA!(-=shjfZoCd2-i)4eV+9gRgpoZPH z&x2>-yBQ*Jv#VN-0MBmAN`u62!9I2i-F1ur&Ti8eEF>!;y2@3JtB^!jfoFH6t6e%( zA|k6@wR|;_$ZGKH)_+mEbT1MSUPE`CHAup1z_VN3s9icmB0_6jRkapLXf1elE5D>& zy8Vbqo%F_~;#Q==TTvrPBBB#IJt8D6yA5gJw!FI7m#sQ2lBc|JDY+e~b35uJi8kqk zPLT*nhs5yRkyjV_id82fzK-rn2;%F!3ikTfc`)z8>rt3p@2Wl{(4XDjJ1r!17ewYR zSM?YHp55-RT1c=NBHc{)DkH$Nd+=@x3ETsby2n+WMu2Cx<7*b;L?Mz%Xa8Iw~Tf~vWZ2xygv}2Y{ z&s~b1yW$4)oQ=brB9+US*XCE{Tj{wgCue7Un_a=qV4h=o%%x|VDmAdxRCtd2-F&Bi zm=oS+G4e}8rRp2mzG3??I(k?o6ijzHV*Pyd+U{Lm(2cN7$>pubYJk8Dp) z45PydyRUBGd%%zt^jyD4wdOcaJz&2>&RZVLtB5~j8>LehspcH#v4`vyoHupkS7bYI z9-|M_-S%NEaAetC`6KPp-Bv_o7hOVjA&KmgO9;93k7$=JAtJ)N=@POVNqDzhLddQD zv3BVaA|kYhE+Ko6g!afKgxtzb?b0PgL~yUGD)u4??gh{8%%5nN?y@2R`{)^OACka6 z@a+1N+NFm*5zc=4Zn__dvmZRWML*Rp-Bm^S4!CN_2=MF<9`N}1A^J*s(Ci2F-h(;s zKZM@d!*n-2Y>7T2(3_FoM}cIH&==4nmgq48JR{vd1Cl;UPku)&(Pad9Mh^ZQNUDpz zaCTXu(+Kd4bUX$m`8Yl9J#LA1BfvA#_6s116n)W5S)$bl@Qk$l5=iWr8$V|Ds@VwO zM5v};0f~0gUDOth-8uo!$jV>CjU1=Zx5e_~Iswl}{cqrgpP3$wa`UM*O7c9|b1b9Xc{s~CxB#r(_OLQ6mo{^3|AjwlS`ll?>ZUlHn z+WrhA@gj}>i_t7apB6QP>^0wnqpjlL}!U(yM9MppL2jl4{w zZ;RzG>jXR_^?!vMeuYNg7PYVF1Uw_ve}fx(l}6tdRj=vmh3k8hM&A}gMu2Bz@J)}8zeS_} zPqQD;dk^Nk|1I>+4$|lkTB6Sg^k$^@UqCW%)9Al#i5?@sGt&KUAnA8#^xv^Wml5C@ zIrtwSsds7g-?c=i5#Sl=_%D#;5RLwjCEASu&q&*QKoalM=)Z4?RwKYO((*qK*%~Ww z+X~EnYqJp^&cyvq1qHMUX?>7Z5v_A*jiU7-TE(=^r8Sz?7+NK?N@^MM2RtXEYm4Sj!}u#1b7#iY2jo zz%fNcMBK!bYnmEk*SLlh8;E8nk@TY2f{D6n-gC>Dd!AvR=e^(m{oj9XnYlanE?ZYE zYIrn|F*;?yTx5F$Ln+ulM$k}?hZ5TRR566X}v$niCJziVhnellS1$+Xqh{xZ(YTcya+(|6*v)yyl{@3&F1{C6 zac@`Oi>tV|oA1R{Pe+?AOO7E0fQR$+F@s*3HUi(X1>R_#o@{%4cS; zB;)$JIM1#)TazBIE6ZwobDsO;GqX>Ym1eVUc0P+{XIbq-tlKxAnSHaYG>3I_;;b({ z-kdC}&1K!Zd}iilS!q7&=I66$ewNktW8MDw%=^Mg&W*(`qWQarrOYo z8e8T@rs|LH4Rg4L#+La;<5XkId^4HqKJns-s)%<43& zo_+x@D3#U8UON*z7~0BhVVYX5a{|}7CO!MuncMR&3Y_Unv+UI@yOQ`#ZLlw}mG1<0 zFtP4^ zr|+c|`}>h!>#Nd_ea}~=pZK1yN3-^qMcyvz4|RlM8xd{w+B>2YoM zxIM>D#-C?Z%~z#+lOCVxz1d!hzsRZqUls53`@1jOOX>css`;w)fbaRL^q}wgs`L;~ zxQF4qdK?Ayqo5~H(63O?S`_qa6!aSu^jj44I~4RJ3VI3! zJ&l5%K|#-=pmiu{Jqmgb1#Lh<&!eChP|)vD&;Samp`bsYpg*FZ7g5kg6!a$)^k)?G z7ZmhY6!bR~^mi2W4;1uI6!b3?^ludO5(;`51#Ln>ub`k;QP68B=yeqI1`7HQ3fhc< z-b6wFMM3{VL2sd;w^7hLC}6~@B0 pFb>*aJWPOzFbTGU?O`(P06RiEbifpt3Om8hFzqgl*k$3y{{v&%$%X&` diff --git a/config/linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin b/config/linux/ipu7x/gcss/OV13B10_09B13.IPU7X.bin index f1345b4316f7a977924ad101cdb4fc91738d5de7..cf657ed46cfc83888b16e05b53a565ff61764c2e 100644 GIT binary patch delta 10435 zcmZ{p4RjRM6~~#7#SI1+U>6byvLI9Jb^WTK(QYZ# zAZUkukVh(%rG6BSp{{}mG}3MS0z_O?DiJA5sS1L+D%D`4?VWk|?Y^1W%{lL!z4!nB zy^o!_@6As1?;ev*EnO=0?g4)X3m0u_EuiE2_Vkj}G}rP`N}-V^`gAXuGv#u~6)$i1 zxQyIc%li+c@?ObJV$)rQ2!g{*l!82NLvh;M^4dXh+I@xjdIyEsWAnV^_8ZNalhqD; ze4fixL2=sUUiRL(9Tca1SzbFR4tvy{r*jaPIoaeT4?W0c-Xyw}VFhlIYI2z>C{BC2 zNa);R2gPZh-#ecj6sJ9PWRG zio>1gm(LA~=_dY-UUFz7n|O_kcCv4phs^08Adqp|;{C0*2B)QBfYlNpka5~#1MN1* zFq_`tC6%wTd6juQQV+VkTN+G5C*e+rb+}9o@=mkv&25G}t75Xe!;|T{co5GTOP=Hn zkZeZuMF!h_kZ}&)JvjH^kZ0y(Clu$0Y+2z_vCmfD{P@MKXdF`M$?f&8UdI!a6Z_jH7#kA8%f#fAu z{=g=$jKJ=V%{p{9!j9w51x43arW%K*un1(uDr&nioB%{EB% zoP1+|l5585m%64d%VIn9cndIjJKL#`yQXOx7hi1BV=+7TXuon2pMKfpAYkU`~sYxUL_hQ zRpI=srs4~&CfKzv%-LIHf@rLqkh8aLi)m6-fIx=LEm3XU%M)>K;cB5bx~p0$W*X#k z*-z%NLq3;1baC$9A)m|sQ676HPp3?hror>;D5BPgJ=aZ=E`fAOHl20u$?eRfvrhk| zIs43{v(EP1PDtaS4wF%cKDiqAyCD!)P#-OH6OUivXZEUTG}Zx+-nt(j&=dY9^J^gq zzeb*(!oDLj@J$th)jWt#MStpn5;AkDN=l}oEk0Ev@?{tpYRzRgv#w*8*%A+hT9ly!Ol>9|}UQ&KbfVgi)TWp>dy#+rr5wDPb ziw)`GHb6-FmjYATfJ~$T8Rc^?DQXOmV-0AFG(Z(;7%&x?aHEYm&?qp;TLtFyt;mFK zYhs%cozfew>GAmivhy}HhHleHVm|JSTt`m5-N9|WUEtz(Sh&tRkn`Wk=19Y5LuKp= z2gv$65%b@vkyw}oTt-T{%TBGjOQ7_-MQYpKNcrwT3eH;(iQj`ap6?#0rF)S;DVWI+ z`96_~-6v4tU)d?1iQbP;{9+hNzn?+T`!y0;fD9_ZOopTvh)`r<7E&LuLp(!L4=@Nm zXymmAna>RTO+wJlgJcu>jZM1#;Q*t;ky0rl^=8tGhtbr40t!0C(TZ>$Lt%ECx37ovn!cAO8C}i^ckcg&md*)p7OJJJ4Bv=YI+t4l!BQI3IAE3 zqU!}Hx!w-(3<+&O$lN~D8;}ZZ&`8a5NTC$WWQh8lNTr?=sCb*5;u&~*$SC-rkx_qP zJ~N1kLD}=DD9@um*;zu`<0@H|RiK>WXk#iqKKNd+G0iVzdV^!>MS*F15gBiR*JEXlNK%p%nv}6lj+4L5qjQ1X7;no0|^)gcF zE%21L6)BXFN^P}Mwc7;Bzg?snw_PB9+_@M-%=(!u&N)>f4b@wA-mM zuLzWH2aaWSTDJqK_zt9u-@s&I0*N$5R3+l#z-h?3DZOSt{BgLggI@=^a?W z@M^Y!-1{m5dIyx#t600HH2*b}BCmUEKr{RT?mH`v68|3nGtep4j}vI-nd zZ=#K`-ure*o3=52Vujp_)EG z3T32HAK0nd0|Mpm6sg8eq>`PCBFRqpz4RdhMxY!Nf;Ju`4&o^0rc!qZj;D{%mpBN= z(;*xMWgI1b$WE2~Q=sI-A~o?aQnAB)MaHgDegw{@6jHInTJ#7)=B8491R?#19qK|O z0f?mkB~qnFk%}Be%B+85sAETQsK`+`p8k!LDHnZ=RQO{%b>L%xN`4|zr$0d|^eIy2 zu5tVr{B-&hsnDlTQpb=&87cL+o!WX_pyHp2ROe?%`A;wkDjv?JlL#0=Obp6CM@9LZ z`OVtg_5~DFR)K>0g4s~TF??UznC34ty}{X(7MKlbWaO`KHD=|uehp{SR|v^pK{b8N z0#>=LUo$HDjUCdy5ung15n6Hzhf1G9id7~IHS0e}rB6XMeT$SSFZ>p%)VFr3_B(;{ zcZpPE7gEVCq|DN+{~mreokl9z1ts-8QYa&p_})&9`L96vx<#t48>x6Vqe#44BP)JD zzzF0Ygp$HcD z<+86YpDnx*DWPrsB$YOcszxLIxS3n<;>fa-T_AHa^sLcve;%6b>i&3Pq4M#%Lb-UT zJ^;TY$ZIq-kV9Myin)OnG~y9a)$2sFxs;cqP&ghM9>gyV2pVl4%vr7mgEPY>Z{5H#u=Y6(|oLO77bo8Mo?hXg^R@-U8>H$SLBAr~8FVU@E) zwq>{j&8GC>oHXxlpO2FuK&ARP%GIEdi;S?a@<&Cc0#m_ccR*O?lsX66tVDswI%0E45jd`XRnS%-@kzSK+vdKWeN9W!c-N<;Oq0! z#tAUn+6%cERH)VoJmeM}GC9G?R$s);Cab`v&ZcX!_0@d3uyC9%e1bxq$bDw$gH0o| zN{z10gwP9O@JXX9F5x~ilxr;EG6?Y>ar@wZbH;xVse6(=ceTyZa;e>M32hQ{V`oi|Dc3!WEhBMRRIO?p_|9Jyn8M z0IesqLTD~%y`Y@|%?+&xT5o7)LMw*W2U=ff{h-Ov`a>H4Z6GucG%vJ4&;~;*fmRA_ c2(+Ql%AgH{b{4eZ(0tHFygYmA$f||^2T$Y6Pyhe` delta 3902 zcmZ{nXLOTg0EJ0Q2PMz~0a{wxQp#)#1L!LVPZx$!89n^W5jYH}99`aPp)5ZQ;Vm;uU8^qV4#%eCdnrF34!tF0ti^ zj9627U6bOG(!}nMWyYFX_YD+Dp0*B}Be6gkp(TSQGqhx~v|qObtyw(Qo+&G3;(fDI zj@-!RMoxIjVaiQTxjfV%<;X)FxRDp0@|Ze?r;bd~lqn~e9c>7jqs*Ps=T6L>)9232 z`RQ{$a{+U(U{)+>E#M<|NuKzGU3k4~Xz9w*EwprFiNz!H*1Sg{PsLcehnDUvJ=&h~ zogOSbLrYJV!sJtYmZG-Ti#YX4o_M|&w~IqdF-u8kDPif|wv_W!ZmTFO|; zlM6q&52w}NsGzkE$BL9A?^(h9zTv4aQ)PInWa<}BG|lBJxNN{SL32Nb{>eK7c&GkM z1KRG)4m7aszykw$bx`twL41RK-*so~oH@QYOAnHGH3Hn1`g#LzsuA z&qJAO)8|^|Va#j33&Z$`!;>dI;c#9b5n4vD)PYQ*}U;s-gqqYxb%4(^Z4|6JoAL~c|weD$jbW2)L`+f%Ak27NBn<~`-wr1f0$o^oySdakk0ODw3*o0?c$n3)?~ycsqdmdYu$ywU0#1vf;vF{L(WnGz2)H6FBpHo~BdF{mDcreV-@4B7;PW?;}v3~Ioj zO)+RQ4B8xnw!ok*F=#6c+8Tql!Jut1Xgds=g+aog?J;Nv4B8QccEX^YF=!VI+7*L# z!=T+UXb%k96NC1`puI6@9}Lj;*D&aH40;2D z-o&7{Fz9UzT8csMU{DJNy^BHbVbJ>+^Z^Eah(RA=(8n0`2?l+NL7!pJ=NR+_27QS^ zUt!SK81xMWeTzZgVbJ#&v#e=ukz2K|dctMID$5`ITs(h`X$6d_t1%5ZZi)6JpwZVqL+Ih5_@P>!2J zxo!@1aC0cn&7qEN4n^G@>g487XE%rP-5e@#bEu1(LtWh*>gMK9%*~F)0&=oUNkKdI!C96&x_Wbs}eUCRpch3o2-3(?RnAv&e0kFdwt!xI*~Oq zviaH{-I%Od4eQoZ8yg~!0h!PqvLG9BAQw779(05#bb`*14+YQ#xD)E7{_trG)|qgS89{AP0}Nn;x?vSlQg7BNG`Y`F>X=^yQC&09KocoB7+A8 zkUB(w1V}+L_c0Wy5|&^r(p5#GLk15F3>j`Y6*O3hTcx)23jvaKah3XaU zV0{vr#2Etpcp)H!nu15i72!Ljr^Aj*oD6(*ViK;NP#NLSeTe#%#KHO`G>9`~C&@PK zoV46qcLL0F$T(>R+IhLJR;8qj z`gy__LyEC82N9(+lF0C`dr_vi@Tl0jfR*hFm>1X8X%yivRbkM431fa0PpoQ$m`6si z8UyztVg9{{j5RFx#qaC!ND+P=#+WtCpfQ3%+~(sEWD27p=HVz|oJ)lH{Sq?f7&79{ z+%Y^cbBs65%b52oC1n`nglUWurgk~R1cp8#_r~wcnLtLL;7v0r_tmPDl%Y)#rancO z>MJ2e8uql0*wYODoc2RvZq2CqKF-0L!Sx#*yklm0$C$XRH^Vz-7KLBM^J>n9n1xpf zV`d3+D~pVqMW!B4LV2zT<5w`|W_j1lq42B7H0DA~`ZdDn^MuLGBjd~?Q|nH`hGlu;-WrdcG6QwlMG zVO~eZyw3k--o%&?bt?K+uwtxW-dJIfxDmMgFNTV)GFJ35=Jhgz=v#ryJB5n>q|jC| zudOopdlmCSRNp4z2?~47kK1d!L)QF&m|N>=zK?V8)^TlboxifZgUbm~u!z``qG@5i zY4KOKcQGP_xk1FP6z&G*#WPv1@XmM-W9|m;j0y_BDm$YRV$$yuM&Be%Zc}!~CNj<@ ze|5Ww5g|0D#HTy#^Bor9;}9Qhd_?(Z=i@LR9el+2=;Y%FA8|gqe%@i-Prm;jMS-4- delta 1238 zcmY+>IZqT}0EcmAxfWOi1jQ3C@Y+G~UQg8Z!281c8gB$Yz*Eo|3u`kb*cdG=x3TgI zSeR&Sr3qicWE&G7mND6v<#1L^y&a{4hEOlO<>>Q>THzh;A#wASu=vd;x8$p?4AO4|BT+I+8Qx1z&}f-Tg( zPjB|z&f1f*l`N=Vv%yNb=I-7^@yzd`s5Py0jn&V%JD8Pl#y#`5#hLhJlus++j2DKt z;f#C#Kl$(5obL^1+!x-4GhUQEIsNs`*9I$I9NYyf?w`Lar`>+;YyU`E?f2JP;;$!` zTCvQEPD+a9?vSPgz8?4x9#U?8@&vhbAivGuo**W$c zXXjzh!=A+!E4ErOV#PKqwp+2oik(*MvSPOtd#or~vDb=yR_wRpfE5R=IAq1B6^E@j zV#QG_%2ph+;2IY{eBT#;v$&#WgFg zTXDmRn^xSi;k>u) 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