网站没有经过我司审核通过白名单,定制版软件,php网站本地调试,软件工程师年薪多少drawLayers是做client合成#xff0c;合成完以后的buffer会放在RenderSurface里
FrameBufferSurface里的buffer是通过setClientTarget给到HWC的#xff08;HWC应该给client合成的buffer留了一个slot)
Output.cpp这个文件非常关键#xff0c;代表着具体一个Display的操作 d…drawLayers是做client合成合成完以后的buffer会放在RenderSurface里
FrameBufferSurface里的buffer是通过setClientTarget给到HWC的HWC应该给client合成的buffer留了一个slot)
Output.cpp这个文件非常关键代表着具体一个Display的操作 drawLayers第三个参数是个 renderengine::ExternalTexture是 dequeueRenderBuffer的时候从 mRenderSurface-dequeueBuffer中获取到的drawLayers就是把最终的东西放到这个buffer里 具体代码都在Output.cpp里 而 setClientTarget就是被 FramebufferSurface::advanceFrame调用的 以下函数是重头戏
void Output::present(const compositionengine::CompositionRefreshArgs refreshArgs) {ATRACE_FORMAT(%s for %s, __func__, mNamePlusId.c_str());ALOGV(__FUNCTION__);updateColorProfile(refreshArgs);updateCompositionState(refreshArgs);planComposition();writeCompositionState(refreshArgs);setColorTransform(refreshArgs);beginFrame();GpuCompositionResult result;const bool predictCompositionStrategy canPredictCompositionStrategy(refreshArgs);if (predictCompositionStrategy) {result prepareFrameAsync();} else {prepareFrame();}devOptRepaintFlash(refreshArgs);finishFrame(std::move(result));postFramebuffer();renderCachedSets(refreshArgs);
}