| | |
| | | enum PipeMaterialBufferType |
| | | { |
| | | PMT__FIRST, |
| | | PMT_BYTES, // uint8_t[] |
| | | PMT_FRAME, // MB_Frame* |
| | | PMT_PM_LIST, |
| | | PMT_NONE, // buffer = nullptr, buffSize = 0 |
| | | PMT_BYTES, // buffer = uint8_t[N], buffSize = N |
| | | PMT_FRAME, // buffer = MB_Frame*, buffSize = 0 |
| | | PMT_PM_LIST, // buffer = PipeMaterial*[N], buffSize = N |
| | | PMT_FRAME_LIST, // buffer = MB_Frame*[N], buffSize = N |
| | | PMT__LAST |
| | | }; |
| | | |
| | | PipeMaterialBufferType type; // #todo MaterialBuffer merge into there |
| | | uint8_t* buffer;//#todo void* |
| | | PipeMaterialBufferType type; |
| | | void* buffer; |
| | | size_t buffSize; |
| | | PipeLineElem* former; |
| | | pm_deleter_func deleter; |
| | |
| | | // gain --> [pay --> pm.deleter --> gain -->] [pay --> pm.deleter --> gain -->] ... --> pay --> pm.deleter |
| | | class PipeLine |
| | | { |
| | | friend class PipeDebugger; |
| | | |
| | | public: |
| | | PipeLine(); |
| | | |
| | |
| | | PipeLineElem* push_elem(const std::string& type); |
| | | |
| | | // do pipe sync. returns the element who returns false, or the last one. |
| | | // if false return, the element should deal with pm, clean up. |
| | | PipeLineElem* pipe(PipeMaterial* pm = nullptr); |
| | | |
| | | // do pipe async |