Android多媒体系统:集成的细微差异
出处:互联网 发布于:2015-04-01 10:14:00
● 内存分配协商对于系统集成设计商来说是一个关键的领域,它可以决定系统图形缓冲区的内存分配位置和方式。分配内存时需要考虑到访问内存的底层硬件具备的多项限制。有多个重要问题有待解决,例如,所有组件是否都带有系统 MMU(内存管理单元)?如果不是,那么执行某些分配时需要将部分内存分配为连续的物理内存,以确保所有组件均可以读取该内存。适用于所有目标组件的理想内存对齐方式是指什么?例如,不同的硬件对于它想要如何在内存中对齐该内存的像素有不同的限制。如果缺乏对系统中每个组件的这种了解,在处理图形缓冲区时则可能会出现部分内存访问非常低效。基础物理地址宽度是另一个问题,即系统集成设计商可能拥有传统的 32 位内部显示管线,不能处理较大的内存块(例如,可以通过 ARMv8 64 位架构处理的内存块)。
是否存在某些组件无法访问的特定内存区域?或者它们必须访问的特定区域?Gralloc 模块由 Android 的编译引擎用来分配和管理适用于 2D 和 3D 图形用途的内存。ARM 提供的 Gralloc 库可以理解 ARM 多媒体处理器的所有系统限制,并且能够与 Android 内核的 ION 分配程序(一个统一的共享内存系统)配合运行,确保可以针对系统中的每个处理器执行合适且高效的内存分配。软件驱动程序由 ARM 多媒体处理器用于实施标准 Linux DMA 缓冲区内存共享功能。如果所有驱动程序使用同一接口,则同一分配可以由一个处理器写入并由另一个处理器读取,从而为平台上的所有图形和视频内容提供零拷贝路径,确保仍能够维持尽可能低的内存带宽开销。
● 像素格式协商是需要在系统集成期间关注的第二个领域。务必确保多媒体 IP 解决方案中的每个组件(不论是视频、GPU 还是显示)实际上均能够理解来自其他组件的图形输出格式,以及确保每个组件生成的内容均能够以某种格式被其他组件读取。例如,尽管视频处理器可能能够以五种不同的 YUV 格式写出视频帧,如果显示处理器不支持其中的任何格式,则只能使用 GPU 功能在显示器上合成视频。或者,如果显示处理器不理解带有预乘 Alpha 值(大多数 Android 用户界面所使用的)的像素格式,则显示处理器将成为美化过的帧缓冲区控制器。,即便组件能够完全理解 32 位 RGBA 像素格式,出于某些未知的原因,显示的应用程序仍将出现反转的颜色。这会导致在开发过程中浪费大量时间,因为不仅需要追踪哪个组件在排序方面(比如 32 位像素格式的红色和蓝色组分)与其他一切不一致,而且还需要研究如何对它们进行反转。
● 同步是第三个领域,此处旨在尽可能异步运行以减少排队和延迟。主要问题在于,当系统中存在零拷贝路径、并且两个或多个设备正在直接使用同一个内存时,这些组件之间的同步将变得极为重要。例如,如果显示处理器在 GPU 或视频处理器完成写入之前便开始从缓冲区中进行读取,则会导致屏幕出现奇怪的伪像。在较早的 Android 版本(Jellybean 之前)中,渲染流水线中的每个组件通过执行以下一系列步骤处理和控制 Android 用户空间的同步:处理软件驱动程序中的命令;在硬件中执行其任务;等待任务在驱动程序中完成;以及将责任传递给管线的下一阶段。尽管这会使组件之间的同步方法变得简单容易,但也会造成管线出现暂停间隙,从而使流畅视觉内容之间出现差异并且中断终用户体验。但是,一种全新同步化方法 Android Fences 已添加至平台;只要软件驱动程序支持它们,则允许在管线的每个阶段针对其组件执行 CPU 端处理和排队工作,即便前一阶段尚未在硬件中完成。这将大幅缩短一个硬件完成与下一个硬件开始之间的间隔。然而,要充分利用 Android Fences 的优势,还需要渲染管线中的每个组件均支持它们。如果所有组件均支持 Android Fences,但其中一个组件出现漏洞,则会出现问题。如果三个或更多个不同供应商提供的软件驱动程序均支持 Android Fences,但其中一个出现漏洞,则很难进行追踪、并且需要与多个供应商一起执行三项单独的调查。同时还有可能出现此种情况:只有当某个供应商的组件使用标准接口与其他供应商的组件进行通信时,该漏洞才会显现出来。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 一文读懂TTL电路的基本结构、工作原理和特性2020/9/8 11:29:48
- 如何通过R10电位器线性改变VRF的电压值2020/7/15 15:09:26
- 一种集成电路开短路测试方案详解2023/6/21 15:50:05
- FPGA基本知识介绍2018/4/21 14:34:50
- 一文解析FPGA的片上资源使用情况(组合逻辑及时序逻辑)2018/4/18 15:36:03