Android图形显示架构概览

图形显示系统作为Android系统核心的子系统,掌握它对于理解Android系统很有帮助,下面从整体上简单介绍图形显示系统的架构,如下图所示。

这个框架只包含了用户空间的图形组件,不涉及底层的显示驱动。框架主要包括以下4个图形组件。

1、图形流生产者

图形流生产者一般指的是各个应用,应用通过不同的方式生产出要显示的图形流。可以通过Skia、OpenGL ES等图形库绘制得到,也可以通过Camera拍摄得到,还可以通过Media Player解码得到。

图形流使用缓冲数据表示,图形流生产者通过Surface可以把缓冲数据直接传递到图形流消费者。

2、窗口位置管理

窗口位置管理由WindowManagerServiceWMS)完成。现代操作系统一般是多任务的系统,支持多个应用同时运行。当每个应用都需要显示界面时,如果没有窗口位置管理,就无法知道该显示哪个应用的界面。

窗口位置管理维护所有窗口的位置信息,包括窗口在屏幕中的位置、宽高、前后顺序、显示状态,这些信息称为窗口元数据(window metadata)。每当一个窗口的元数据发生了变化,会通知图形流消费者。

3、图形流消费者

图形流消费者负责处理图形缓冲,由SurfaceFlinger完成。对于图形显示而言,消费过程是将各个应用生产的图形数据进行汇总,根据窗口管理提供的窗口元数据将多个图形数据合成到帧缓冲(frame buffer)的过程。

帧缓冲保存的内容正是即将在屏幕中显示的图形数据,它通过硬件抽象层传递到显示屏幕。

4、硬件抽象层

硬件抽象层负责与底层驱动交互。硬件抽象层封装了与底层驱动交互的细节,对外提供简单的接口,有了硬件抽象层,图形消费者只需调用相关的接口即可与底层驱动进行交互,无须关心具体的交互细节。

在硬件抽象层有两个与图形显示系统相关的组件,分别是Gralloc和Hardware Composer,前者负责图形缓冲的分配,后者负责将图形缓冲的内容传递到底层驱动显示。

参考:

李先儒,《Android图形显示系统》,清华大学出版社。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网通如何去除广告,内网通免广告生成器

公司使用内网通内部传输确实方便!但是会有广告弹窗推送!这个很烦恼!那么如何去除广告呢! 下载: 链接:https://pan.baidu.com/s/1CVVdWexliF3tBaFgN1W9aw?pwdhk7m 提取码:hk7m ID:…

mysql dll文件的缺失和Can‘t connect to MySQL server on ‘localhost‘ (10061)

个人笔记(整理不易,有帮助,收藏点赞评论,爱你们!!!你的支持是我写作的动力) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔…

InternlM2

第一次作业 基础作业 进阶作业 1. hugging face下载 2. 部署 首先,从github上git clone仓库 https://github.com/InternLM/InternLM-XComposer.git然后里面的指引安装环境

【自研网关系列】请求服务模块和客户端模块实现

🌈Yu-Gateway::基于 Netty 构建的自研 API 网关,采用 Java 原生实现,整合 Nacos 作为注册配置中心。其设计目标是为微服务架构提供高性能、可扩展的统一入口和基础设施,承载请求路由、安全控制、流量治理等…

【机器学习】数学基础详解

线性代数:构建数据的骨架 数学对象 标量(Scalar) 标量是最基本的数学对象,代表了单个的数值,无论是整数还是实数。在机器学习中,标量可以用来表示一个模型的单个参数,如偏差(bias&…

如何更好地理解 Vue 3 watch 侦听器的用法

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现RIME-LSSVM霜冰算法优化最小二乘支持向量机数…

【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1.哈希概念2.哈希冲突…

java项目实战之图书管理系统(1)

✅作者简介:大家好,我是再无B~U~G,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1.背景 图书管理系统是一种用于管理图书…

基于springboot的网上订餐管理系统

前言 本次毕业设计的题目就是基于Java的网上订餐管理系统。本论文就毕业设计的容,系统地阐述了整个基于Java的网上订餐管理系统的功能与实现。实现了从菜品管理,菜品分类和查询,到订餐车实现,用户订单处理,再到系统管…

ERROR 1052 (23000): Column ‘deptno‘ in field list is ambiguous

错误原因: 这个错误通常是在多表查询中,因为你的SQL查询中包含了多个表,并且这些表中都有一个名为deptno的列。这会导致数据库无法确定你要引用哪个表中的 deptno列,从而产生歧义。 解决方法: 为了解决这个问…

JVM虚拟机(三)垃圾回收简介、垃圾回收算法、分代回收、垃圾回收器种类、G1垃圾回收器

目录 一、什么是垃圾回收?1.1 什么是垃圾回收?1.2 什么对象能被垃圾回收?1)引用计数法2)可达性分析算法 二、JVM 垃圾回收算法2.1 标记清除算法2.2 标记整理算法(标记压缩算法)2.3 复制算法2.4 …

python基于opencv实现数籽粒

千粒重是一个重要的农艺性状,通过对其的测量和研究,我们可以更好地理解作物的生长状况,优化农业生产,提高作物产量和品质。但数籽粒数目是一个很繁琐和痛苦的过程,我们现在用一个简单的python程序来数水稻籽粒。代码的…

鸿蒙语言TypeScript学习第16天:【类】

1、TypeScript 类 TypeScript 是面向对象的 JavaScript。 类描述了所创建的对象共同的属性和方法。 TypeScript 支持面向对象的所有特性,比如 类、接口等。 TypeScript 类定义方式如下: class class_name { // 类作用域 }定义类的关键字为 class&am…

专业照片编辑软件ON1 Photo RAW 2024 mac/win

ON1 Photo RAW 2024 for Mac是一款集专业性与易用性于一体的照片编辑软件。它拥有简洁直观的用户界面,即便对于摄影新手,也能快速上手。软件支持RAW格式照片处理,能够完整保留照片原始信息,让后期调整更加灵活。 在功能方面&#…

boost之bimaps

Boost.Bimap 是 Boost 库中的一个容器,它支持双向映射,即允许通过键查找值,也允许通过值查找键。 Boost.Bimap 的主要功能介绍如下: 双向查找:与 STL 中的 map 和 multimap 不同,这两者只能进行单向映射&a…

基于LabVIEW的CAN通信系统开发案例

基于LabVIEW的CAN通信系统开发案例 介绍了基于LabVIEW开发的CAN通信系统,该系统主要用于汽车行业的数据监控与分析。通过对CAN通信协议的有效应用,实现了车辆控制系统的高效信息交换与实时数据处理,从而提升了车辆性能的检测与优化能力。 项…

点击按钮(文字)调起elementUI大图预览

时隔一年,我又回来了 ~ 最近在做后台,遇到一个需求,就是点击“查看详情”按钮,调起elementUI的大图预览功能,预览多张图片,如下图: 首先想到的是使用element-ui的el-image组件,但它是…

Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! Elasticsearch是一个强大的搜索引擎,它提供了丰富的功能来满足复杂的搜索需求。其中,父子索引类型的join功…

蓝桥杯之注意事项

1.特殊求解的地方 2.一些数学公式 比如二叉树求全深度数值那道题 3.掌握有关库函数 #include<algorithm> 包含sort&#xff08;&#xff09;函数【排列函数】C sort()排序详解-CSDN博客&#xff0c;next_permutation()函数【求解全排列问题】求解数组大小sizeof(arr…