
一塊 GPU 渲染好的圖像,要送去顯示、要交給視頻編碼器錄屏、要被 AI 模型讀取分析——同一份數(shù)據(jù),多個設(shè)備、多個進(jìn)程都想用。這就是「BO 共享」要解決的問題。本節(jié)先做需求分析(為什么需要共享、共享難在哪里),再建立一整套核心概念(exporter/importer、handle 與 fd、dma_buf 抽象、引用計數(shù)、dma_resv同步),作為第五章后續(xù)各節(jié)(dma-buf 機制、prime、同步)的地圖與索引。1. 引言:為什么"共享"而非"拷貝"在現(xiàn)代 SoC、嵌入式與圖形/多媒體系統(tǒng)中,CPU、GPU、VPU(視頻處理單元)、ISP(圖像信號處理器)、NPU、DMA 控制器等多個加速單元需要協(xié)同處理同一批大塊數(shù)據(jù)——圖像幀、視頻流、AI 張量、3D 紋理。它們之間傳遞數(shù)據(jù),天然有兩條路:拷貝一份副本,或共享同一塊物理內(nèi)存??截惖拇鷥r在數(shù)據(jù)量面前迅速失控。以一路 4K@60fps 未壓縮視頻為例,僅 ISP→VPU、ISP→GPU 兩條拷貝就要吃掉 ~2 GB/s 內(nèi)存帶寬;再疊加多路、多消費者,帶寬、延遲、內(nèi)存占用、功耗全面惡化,CPU 還被拖去做無謂的搬運。因此:BO(Buffer Object)共享機制的核心目標(biāo)是零拷貝(zero-copy)——讓多個設(shè)備/進(jìn)程直接訪問同一塊后端存儲,而非各持副本。零拷貝在現(xiàn)代應(yīng)用里已不是「優(yōu)化項」,而是「必需項」。