Camera KMD ISP学习笔记(5)-DRQ
仅用于个人学习,侵联删
DRQ:DRQ负责调度管理pipeline里的node处理逻辑(通过node之间的dependency依赖机制)
利用多线程并行处理pipeline中并行的node,加快处理速度
存在将来一些推迟的request队列
后面一个node依赖前面node的一些内容,比如buffer,一些metadata
DRQ工作内容:
![0](https://img2024.cnblogs.com/blog/3261801/202404/3261801-20240406014019858-287972776.png)
metadata:比如3a信息,iq参数
DRQ利用依赖来调度各个node运行
第一步:填依赖,fill dependency,所有node填写依赖,processSequenceID = 0。比如B依赖A的metadata,输入buffer。这样机会存到一个hashmap里面
第二步:A的输出buffer和fence绑定的,满足了fence callback调到DRQ表示fence满足了,表示buffer满足了,那么DRQ相应的hashmap的key会删掉,A处理完了也会写metadata到metadata的metadata pool,就可以通过一个update的接口通知到DRQ,DRQ发现B的依赖都满足了,就会扔一个任务给到线程池,线程池就可以调度到B,B开始调用。dependency就会变成1。调用到processrequest开始执行B的线程
DRQ相关:
一个session里面所有的pipeline共用一个DRQ
DRQ何时调用node填写dependency:每个node deq id 0基本都是填写自己的dependency