当前位置: 首页 > news >正文

HWUI 和 Skia

📌 HWUI 和 Skia 的关系

  1. Skia 是 Android 的底层 2D 图形库,提供 CPU 和 GPU 渲染能力,支持 OpenGL、Vulkan、Metal 等后端。
  2. HWUI 是 Android UI 组件的 GPU 渲染引擎,主要用于 加速 View、动画、阴影等 UI 元素的绘制
  3. HWUI 依赖 Skia 进行实际的绘制,但它有自己的一套绘制管理逻辑,并优化了 Android UI 的绘制流程

📌 HWUI 如何使用 Skia

从 Android 10(API 级别 29)开始,HWUI 完全迁移到 Skia GPU 渲染,主要基于 Skia 的 OpenGL/Vulkan 后端 进行 GPU 计算。

🔹 主要架构

Android UI 绘制
  ├── 应用层:View (TextView, ImageView, etc.)
  ├── Framework:Canvas API (drawXXX)
  ├── **HWUI(渲染引擎)**
  │   ├── RenderThread
  │   ├── DisplayListRenderer
  │   ├── SkiaGL/VulkanPipeline  <--- 这里使用 Skia 进行 GPU 渲染
  │   └── OpenGL/Vulkan(GPU 计算)
  ├── SurfaceFlinger(合成)
  ├── 硬件层(GPU/DPU 显示)

🔹 关键点

  1. 应用调用 View.draw(Canvas)

    • Canvas.drawXXX() 其实是 HWUI 提供的 Skia Canvas,不是纯 Skia。
    • HWUI 维护了一套 DisplayList,用于存储绘制指令。
  2. HWUI 使用 Skia 进行 GPU 绘制

    • HWUI 通过 SkiaGLPipelineSkiaVulkanPipeline 将 DisplayList 转换成 Skia 绘制命令。
    • Skia 生成 OpenGL/Vulkan 渲染指令,交给 GPU 进行计算。
  3. 最终输出到 SurfaceFlinger

    • HWUI 处理完成后,将渲染结果写入 Surface,再由 SurfaceFlinger 进行合成。

📌 结论

HWUI 依赖 Skia 进行 GPU 渲染,但它有自己的一套绘制逻辑,并不是简单的 Skia 封装。
Skia 负责底层绘制,而 HWUI 负责 UI 组件的绘制管理(比如 DisplayList、动画、缓存)
Android 10 之后,HWUI 不再直接操作 OpenGL,而是完全基于 Skia GPU 渲染

使用 adb shell dumpsys gfxinfo 命令,查看 GPU 渲染状态:

adb shell dumpsys gfxinfo <应用包名>

相关文章:

  • python-leetcode-每日温度
  • 精选案例展 | 智己汽车—全栈可观测驱动智能化运营与成本优化
  • BUU41 [GYCTF2020]FlaskApp1【SSTI】
  • mac下载MAMP6.8.1
  • Java数据结构第十四期:走进二叉树的奇妙世界(三)
  • QILSTE H6-C111LB高亮蓝光LED灯珠 发光二极管LED
  • Feign 类型转换问题解析:如何正确处理 `ResponseEntity<byte[]>` 返回值
  • keil中出现Error_Handler错误的解决方法
  • 【学习笔记】计算机网络(四)
  • bug exposed beyond app through Intent.getData()
  • 从哪里下载WinPrefetchView最安全?
  • [Ubuntu] 记录系统崩掉进入initramfs模式后的解决方法
  • Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)
  • Mind 爱好者周刊 第13期 | 人类神经重放和尖波涟漪综述、饥饿对记忆巩固的影响、使用AI从大脑中解码语言、B族维生素与神经精神疾病的关系……
  • 【生成模型】【ComfyUI(三)】使用WebAPI批量调用ComfyUI
  • Linux发展史、发行版本、特性以及应用场景
  • Revisiting Reverse Distillation for Anomaly Detection
  • 在CentOS7上部署与关闭Flask接口
  • 视频孪生技术赋能文旅数字化转型:重构景区体验与管理新模式
  • 嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT
  • 宿州网站建设优化/域名检测查询
  • 陈塘庄做网站公司/域名服务器查询
  • 海口网站制作案例/烟台seo快速排名
  • 做商城网站在哪里注册营业执照/如何优化搜索引擎
  • 甘肃做网站找谁/域名注册官网
  • 重庆业务外包网站建设/市场营销案例分析