HAL/SurfaceFlinger专题之HWC和GPU合成部分更新通知

Android14 SurfaceFlinger-BLASTBufferQueue的创建 分为两步。 阅读详情

背景

hi,粉丝朋友们:
hal/surfaceflinger/perfetto专题,马哥经过若干天的努力,终于把sf最重要合成部分搞定,上传平台审核完成。
在这里插入图片描述

课程部分的截图花絮:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

目前完整课表list

1-start-intruduct.mkv  课程介绍
hal/hal-1-s.mp4 -hal发展总体介绍1
hal/hal-2.mkv  -hal发展总体介绍2
hal/hal-3.mkv  --经典hal深入讲解1
hal/hal-4-1-cut.mkv --经典hal深入实战讲解2
hal/hal-5.mp4 --经典hal深入实战讲解3
hal/hal-6.mkv --经典hal深入讲解4
hal/hidl-1.mkv --hidl深入背景讲解1
hal/hidl-2.mp4 --hidl深入讲解2
hal/hidl-3-cut.mp4 --hidl深入讲解3
hal/hidl-4-genarates.mkv  --hidl深入讲解-genarates原理
hal/hidl-5.mkv  --hidl实战部分1
hal/hidl-6.mp4  --hidl实战部分2
hal/hidl-passthrough-mapper-1.mkv  --hidl的passthrough案例分析1
hal/hidl-passthrough-mapper-2.mkv  --hidl的passthrough案例分析2
hal/vndk-1.mp4 --vndk介绍部分
hal/vndk-2.mkv --vndk讲解1
hal/vndk-3.mp4 --vndk讲解2
hal/aidl-1.mp4 --aidl深入讲解1
hal/aidl-2.mkv --aidl深入讲解2
hal/aidl-3.mp4 --aidl深入实战讲解2
hal/aidl-4.mp4 --aidl深入实战讲解2
hal/aidl-5-call-java.mp4 --aidl实战之java端调用
hal/aidl-6-update.mp4 -aidl的更新部分
hal/aidl-7-update-vinf.mp4 ----vinf相关介绍
perfetto/systrace-perfetto-1.mkv --perfetto的背景及抓取方式
perfetto/systrace-perfetto-2-base-knowlege-cut.mp4 --perfetto的查看基础知识讲解
perfetto/systrace-perfetto-3.mp4 --perfetto使用技巧及自定义tag加入方式
perfetto/systrace-perfetto-4-two-tips-small.mp4 ---perfetto使用小技巧分享
 2-surfacecontrol-Layer-1.mp4 --sf之surfacecontrol讲解1
 2-surfacecontrol-Layer-2.mkv --sf之surfacecontrol讲解2
 3-transaction-2.mkv --sf之transaction讲解1
 3-transaction.mkv --sf之transaction讲解2
vsync/1-vsync-1.mp4 --sf之vsync基础知识讲解1
vsync/2-vsync-2-workduration.mp4 --sf之vsync基础知识讲解2
vsync/3-vsync-source-1.mp4 --sf之vsync源码分析1
vsync/4-vsync-source-2-cut.mp4 --sf之vsync源码分析2
vsync/5-vsync-source-3.mp4 --sf之vsync源码分析3
vsync/6-vsync-source-4.mp4 --sf之vsync源码分析4
vsync/7-hw_adapter_sw_vsync.mp4 --sf之vsync硬件校准部分深入讲解
vsync/8-vsync-end-1-cut.mp4 --sf之vsync总结部分1
vsync/9-vsync-end-2.mp4 --sf之vsync总结部分2
vsync/10-perfetto-look-vsync-1-cut.mp4 --sf之vsync与perfetto结合分析巩固1
vsync/11-perfetto--look-vsync-2.mp4  --sf之vsync与perfetto结合分析巩固2
vsync/12-vsync-3-perfeto-apptimecallback.mp4  --sf之vsync与perfetto结合分析巩固3
vsync/13-vsync-4-perfetto-app-sf-start-end.mp4  --sf之vsync与perfetto结合分析巩固4
 commit-1-setTransaction.mp4 --sf之transaction讲解1 --sf之setTransaction部分深入讲解
 commit-2-flushTransation.mp4 --sf之flushTransation部分深入讲解
 commit-3.mkv --sf之commit部分
 cmomit-4-end-systrace.mp4  --sf之commit部分与systrace分析巩固
 
 -----------------------blastbufferqueue部分-----------------------------

blastbufferqueue-1.mkv  ---经典bufferqueue模型简单demo讲解1
blastbufferqueue-2.mp4  ---经典bufferqueue模型简单demo深入讲解2
balstbufferqueue-3.mkv  ---经典bufferqueue模型部分3
blastbufferqueue-4.mp4 ---经典bufferqueue模型部分4
blastbufferqueue-5.mp4 ---经典bufferqueue模型部分5
blastbufferqueue-6.mkv ---经典bufferqueue模型releaseBuffer
only-blast-1.mkv ---BLASTBufferQueue新特性发起和服务端分析1
only-blast-2.mp4 ---BLASTBufferQueue新特性发起和服务端分析2
only-blast-app-3.mp4 ---BLASTBufferQueue新特性app端分析1
only-blast-app-4.mp4 ---BLASTBufferQueue新特性app端分析2
o-blast-all-end-5.mp4 ---BLASTBufferQueue新特性总结部分
output-blast-func.mp4 ---BLASTBufferQueue新特性主要方法补充

 -----------------------composer部分-----------------------------
hwc-1.mp4  ----hwc合成部分深入源码分析1
hwc-2.mp4 ----hwc合成部分深入源码分析2
hwc-3-cut.mp4 ----hwc合成部分深入源码分析3
hwc-4.mp4 ----hwc合成部分深入源码分析4
hwc-5-cut.mp4 ----hwc合成部分深入源码分析5
hwc-hal.mp4 ----hwc合成的hal部分分析1
hwc-hal-2.mp4 ----hwc合成的hal部分分析2
hwc-6-perfetto.mp4 ----hwc合成部分结合trace分析
gpu-demo.mp4 ----gpu合成demo实现
gpu-source-1.mp4 ----gpu合成源码分析1
gpu-source-2.mp4 ----gpu合成源码分析2
gpu-source-3-systrace.mp4 ----gpu合成trace分析



目前已经到课74节课时

后续更新部分

1、surfaceflinger相关的实战小项目
2、补充一些selinux部分的基础
大家尽请期待

更多framework干货请关注“千里马学框架”

Android 12(S) 图形显示系统 - BufferQueue的工作流程(八) Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 题外话 最近总有一个感觉:在不断学习中,越发的感觉自己的无知,自己是不是要从“愚昧之巅”掉到“绝望之谷”了,哈哈哈🐶 邓宁-克鲁格效应 一、前言 前面的文章中已经讲解了如何去创建一个Surface,也讲了一些操作Surface的知识,接下来就是如何利用这个Surface 阅读详情

相关推荐

【Android图像:GPU与HardwareComposer Layer合成的区别 】

GPU 与 HWC 的合成图层差异, SurfaceView为何效率高于TextureView

zhjali123的专栏 3977

BufferQueue研究

了解BufferQueue,有助于分析应用卡顿问题。

lonely_fireworks的专栏 3675

Android P 图形显示系统(一)硬件合成HWC2

Android P 图形显示系统(一)硬件合成HWC2 SurfaceFlinger概述 HWC2 概述 HWC 常规准则 HWC2 框架 HWC2 数据结构 图层Layer 类型 属性 显示屏Display HWC设备 composerDevice 接口指针 句柄Handle HWC合成服务 Client和Server的通信 IComposerClient.hal 接口 ICompo...

夕月风 1万+

BLASTBufferQueue源码深入理解

updateActiveBuffer方法会对mPreviousReleaseCallbackId这个变量进行赋值,大家注意这里的为啥叫做前一帧的CallbackId,因为下面这个updateActiveBuffer就是赋值是先进行的mPreviousReleaseCallbackId赋值,然后才进行的新buffer的赋值,所以这个mPreviousReleaseCallbackId其实上一个的buffer的Id,不是当前这次的。这里的mPreviousReleaseCallbackId是哪里来的呢?

liaosongmao1的专栏 1833

HWC与GPU混合渲染概念详解

然后,SurfaceFlinger 通过调用 setClientTarget 将该缓冲区提供给屏幕,以便缓冲区可以在屏幕上显示,或者进一步与未标记为进行 SurfaceFlinger 合成的图层合成。该框架假设,在热插拔第一个内部屏幕之后,所有热插拔操作都是在外部屏幕上进行,因此如果添加了更多内部屏幕,它们将被错误地归类为 Display.TYPE_HDMI,而不是 Display.TYPE_BUILT_IN。在显示缓冲区之前,HWC 会检查同步栅栏是否已发出信号,如果有,则显示缓冲区。

kevin's cache的专栏 2278

Android图形系统之SurfaceFlinger/OpenGL/HWC/Gralloc/FrameBufer/ION/GPU等关系(十三)

本篇目的:理解SurfaceFlinger/OpenGL/HWC/Gralloc/FrameBufer/ION关系。

Android系统攻城狮 1561

Android 硬件混合渲染器 (HWC) HAL

硬件混合渲染器 (HWC) HAL 用于合成从 SurfaceFlinger 接收的图层,从而减少和 GPU 执行的合成量。HWC 可以抽象出叠加层和 2D 位块传送器等对象来合成 Surface,并与专门的窗口合成硬件进行通信以合成窗口。使用 HWC 来合成窗口,而不是让 SurfaceFlinger 与 GPU 进行合成。大多数 GPU 都未针对合成进行过优化,当 GPU 合成来自 SurfaceFlinger 的图层时,应用就无法使用 GPU 进行自我渲染。

华南烹鱼宴 900

【Android】硬件合成器 HWC

硬件合成器(Hardware Composer, HWC)是Android显示系统的核心组件,负责高效管理图形层的合成与显示。作为SurfaceFlinger的关键模块,HWC通过硬件加速实现图层合成,显著提升性能并降低功耗。

lijian2017的博客 1975

HWC的软硬件架构

HWC的软硬件架构是一个典型的分工协作、能力协商的范例硬件层(DPU)提供高效、低功耗的合成能力,但资源有限HAL层(厂商实现)是“大脑”,负责最优化地利用有限的硬件资源,其算法质量直接决定了设备的图形性能上限框架层(SurfaceFlinger)是“指挥官”,遵循HAL的决策,并准备好回退方案(GPU合成),保证系统的鲁棒性。

w2064004678的博客 1395

Android HWC硬件合成器实战:从SurfaceFlinger到显示优化的完整指南

本文深入解析Android HWC硬件合成器的工作原理与优化策略,涵盖从SurfaceFlinger到显示管道的完整流程。通过对比不同SoC平台的HWC实现差异,提供性能诊断工具链和典型场景优化方案,帮助开发者提升图形显示性能与能效表现。

weixin_29214691的博客 476

Android HWC硬件合成器深度解析:从SurfaceFlinger到DRM/KMS的显示优化指南

在Android显示系统中,硬件合成器(HWC)是连接应用层与显示驱动的关键枢纽。它通过将多个图层直接交由显示控制器硬件叠加,大幅降低GPU负载与内存带宽消耗,是提升系统流畅度与续航表现的核心技术。本文从显示链路的基本概念出发,阐述HWC在SurfaceFlinger合成决策中的作用,剖析其通过DRM/KMS接口驱动硬件Plane的原理,并结合视频播放、系统UI渲染等典型场景,讲解如何利用dumpsys与systrace验证合成路径,解决黑屏、掉帧、功耗偏高等工程问题。无论你是从事系统移植、性能优化,还是深

weixin_34326179的博客 379

深入HWC:Android帧合成从SurfaceFlinger到显示驱动的完整链路

在Android显示系统中,每一帧画面的呈现都依赖于一条完整的合成与传递链路。从应用绘制完成的Buffer,到SurfaceFlinger的图层管理,再到硬件合成器(HWC)的叠加输出,最终由显示驱动刷新到屏幕。合成机制经历了从纯GPU离屏渲染到硬件叠加的演进,HWC作为关键抽象层,协调VSYNC时序与fence同步,降低GPU负载与功耗。理解HWC的工作原理与validate/present双阶段流程,有助于开发者定位掉帧、撕裂等图形性能问题。以一次真实帧提交为线索,完整拆解SurfaceFlinger如

weixin_33968104的博客 456

深入解析Android硬件合成器HWC:从原理到实践

本文深入解析Android硬件合成器HWC的核心原理与工作流程。HWC作为硬件抽象层,将图形合成任务从CPU/GPU卸载至专用显示硬件,显著提升系统流畅度与能效。文章详细阐述了HWC2的架构演进、Fence同步机制,并通过代码实践展示了其加载与交互过程,为开发者优化图形性能提供指导。

weixin_28432777的博客 536

硬件混合渲染器 (HWC)

硬件混合渲染器 (HWC) HAL 用于合成从 SurfaceFlinger 接收的图层,从而减少ES (GLES) 和 GPU 执行的合成量。HWC 可以抽象出叠加层和 2D 位块传送器等对象来合成 Surface,并与专门的窗口合成硬件进行通信以合成窗口。使用 HWC 来合成窗口,而不是让 SurfaceFlinger 与 GPU 进行合成。大多数 GPU 都未针对合成进行过优化,当 GPU 合成来自 SurfaceFlinger 的图层时,应用就无法使用 GPU 进行自我渲染。

TyearLin的专栏 1582

别再为跨页读写发愁了!STM32F407模拟I2C驱动24C256/512的避坑指南

本文详细解析了STM32F407模拟I2C驱动24C256/512的跨页写入问题,揭示了24C系列存储器'写满一页不会自动翻页'的关键机制,并提供了经过验证的分页写入算法和优化方案。通过GPIO时序优化、地址计算和错误处理等技巧,帮助开发者解决数据错乱、覆盖等常见问题,实现稳定可靠的EEPROM读写操作。

weixin_42631411的博客 377

硬件-汽车电子-TBOX/TCAM核心器件选型与系统集成设计指南

本文深入解析汽车电子TBOX/TCAM硬件架构与系统集成设计,涵盖核心器件选型、电源管理、信号完整性优化等关键点。重点分享5G模组选型避坑经验、MCU隐性指标及热设计验证方案,为车载通信系统开发提供实用指南。

weixin_30352645的博客 531

Android HWC

引用:https://www.jianshu.com/p/944d2fb9cead HWC是Android中进行窗口layer合成和显示的HAL层模块。HWC通常由显示设备制造商(OEM)完成,为SF服务提供硬件支持。 重要笔记: 1.surfaceflinger向HWC提供所有layer的完整列表,让HWC根据其硬件能力,决定如何处理这些layer。 2.HWC会为每个layer标注合成方式,是通过GPU合成还是通过HWC合成。 3.SurfaceFlinger负责把所有标注GPU合成的lay.

justin410796769的博客 1223

P450酶催化循环的Amber-Gromacs混合模拟实战:从血红素加氧到产物释放

本文详细介绍了针对P450酶完整催化循环的Amber-Gromacs混合模拟实战策略。通过Amber为关键氧合血红素中间体(CPDI)构建精确力场,再利用Gromacs的高效GPU加速进行长时间尺度动力学模拟,完整覆盖从底物结合到产物释放的催化过程,为研究酶催化机制提供了强大的计算工具。

weixin_29201859的博客 315

Android图形系统之HWC与GPU混合渲染(九)

硬件混合渲染器 (HWC) HAL 用于确定通过可用硬件来合成缓冲区的最有效方法。作为 HAL,其实现是特定于设备的,而且通常由显示硬件原始设备制造商 (OEM) 完成。 当您考虑使用叠加平面时,很容易发现这种方法的好处,它会在显示硬件(而不是 GPU)中合成多个缓冲区。例如,假设有一部普通 Android 手机,其屏幕方向为纵向,状态栏在顶部,导航栏在底部,其他区域显示应用内容。每个层的内容都在单独的缓冲区中。您可以使用以下任一方法处理合成: 将应用内容渲染到暂存缓冲区中,然后在其上渲染状态栏,再在其

Android系统攻城狮 4733

HFSS/ADS仿真实操:手把手调优一个2.4GHz SAW滤波器的IDT结构

本文详细介绍了使用HFSS和ADS仿真工具优化2.4GHz表面声波滤波器(SAW)的IDT结构。从材料参数设置到IDT建模,再到参数化扫描与频率调谐,提供了实用的操作步骤和优化技巧,帮助工程师快速掌握SAW滤波器的设计方案与性能调优方法。

weixin_29197835的博客 531

TI C2000 , .cmd文件,.TI.ramfunc,将程序分配为在RAM中运行/Flash运行的配置方法和原理讲解,(如28375S ,280049,28335等等芯片)

1 基础知识讲解 1.1 在RAM中运行还是在flash中运行指的是什么? 1.1.1 背景:程序编译完之后生成的.bin文件,.bin文件中包含代码段,代码段中全是汇编指令,而汇编指令中包含多个函数,各函数头的地址不同,如存在A函数和B函数,假设RAM地址区间是0x0000-0x8000,flash的地址区间是0xA000-0xF000,A函数要调用B函数,则A函数调用B函数的那段汇编指令中包含的是B函数头的存储地址,A函数和B函数都在flash中有存储 1.1.2 情况1:B函数是配置为在RAM中运行,

weixin_43776284的博客 8068

Android开发者必看:HWC硬件合成器实战调试技巧与常见问题排查

本文为Android开发者提供了HWC硬件合成器的实战调试技巧与常见问题排查指南。通过解析HWC合成决策机制,详细介绍了使用dumpsys、logcat、systrace/Perfetto等核心工具分析图层合成类型、定位卡顿、撕裂及功耗问题的具体方法,并针对视频播放卡顿、屏幕撕裂等典型场景给出了系统性的排查步骤与解决思路。

cream的博客 964

Rocky Linux 9 离线环境Docker部署全攻略:从依赖打包到服务启动

本文详细介绍了在Rocky Linux 9纯离线环境中部署Docker的完整流程。从在联网环境精准下载Docker静态二进制包及所有系统依赖RPM包,到在隔离服务器上按顺序安装依赖、部署二进制文件、配置systemd服务并进行权限与网络调优,提供了从零到一的可复现实战指南。文章重点解决了离线部署的核心难题,并分享了搭建私有镜像仓库等进阶技巧,是运维人员在严格网络管控环境下部署容器服务的必备参考。

pytorchlight8的博客 138
上一篇: OutputLayer的析构方法解读
下一篇: skia实现动态差异录屏截图logo添加-千里马SurfaceFlinger专题实战项目背景介绍
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值