在
Android
平台下,应用程序面对的显示部分的接口就是
HAL
,参考
copybit.c
,具体接口如下介绍:
open_copybit
初始化相关变量,并调用
open("/dev/graphics/fb0", O_RDWR, 0);
打开
fb
设备。
set_parameter_copybit
设置各种操作参数,如
rotate
、
alpha
、
dither
等。
stretch_copybit
Copy
一块数据(
Rectangle
)到显存,然后并命令
msm_fb
进行显示。
close_copybit
调用
close(ctx->mFD);
关闭
fb
设备。
Note
:另外,应用程序在使用上面接口之前,需要调用
mapFrameBuffer
接口(
EGLDisplaySurface.cpp
),其功能如下:
1、
初始化显示相关参数,并设置到底层。
2、
映射出显存的虚拟地址。
Kernel
部分显示的接口全部都在
fbmem.c
中,这里详细介绍一下:
fb_open
打开
Linux
下
fb
设备。
fb_read/fb_write
读写显存中的数据
fb_ioctl
对显示设备的命令操作。如
get
或
set
一些显示参数、通知底层进行刷屏等。
在典型应用中,画屏的一般步骤如下:
1
. 打开/dev/fb
设备文件。
2
. 用ioctrl
操作取得当前显示屏幕的参数,如屏幕分辨率,每个像素点的比特数。根据屏幕参数可计算屏幕缓冲区的大小。
3
. 将屏幕缓冲区映射到用户空间。
4
. 映射后就可以直接读写屏幕缓冲区,进行绘图和图片显示了。
典型程序段如下:
#include <linux/fb.h>
int main()
{
int fbfd = 0;
struct fb_var_screeninfo vinfo;
struct fb_fix_screeninfo finfo;
long int screensize = 0;
/*
打开设备文件*/
fbfd = open("/dev/fb0", O_RDWR);
/*
取得屏幕相关参数*/
ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo); ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo);
/*
计算屏幕缓冲区大小*/
screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
/*
映射屏幕缓冲区到用户地址空间*/
fbp=(char*)mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED, fbfd, 0);
/*
下面可通过fbp
指针读写缓冲区*/
...
}
在不同应用程序中,上层的调用会有所不同,比如Andriod
下会选择应用程序跳过Linux fb
操作层,直接操作显卡驱动层,称之为BLT accelerator
。
下面看一下Android
平台下画屏的操作流程。
1、
通过mapFrameBuffer
直接把用户空间的数据映射到显存中。
2、
调用HAL
中的stretch
函数直接命令MSM
设备提取显存数据然后送入MDP PPP
进行处理并经MDDI
接口送到外围LCD
组件。
具体的函数调用流程如下:
copybit_open
();
//
打开
BlitEngine
,同时也打开
fb
设备
mapFrameBuffer();//
设置显示参数,同时得到显存虚拟地址
copybit->stretch(copybit, &dst, &src, &sdrect, &sdrect, &it);//
通知底层去刷屏
接下的流程是:
stretch_copybit-> msm_copybit->
fb_ioctl()->msm_fb_ioctl(MSMFB_BLIT)->
msmfb_blit->
mdp_blit->
mdp_ppp_blit->
mdp_start_ppp->MDP&MDDI HW operation
相关推荐
高通7系列的硬件架构是Android Display架构的重要组成部分,主要包括以下几个部分: 1. **MDP (Mobile Display Processor)** - MDP是高通MSM7200A内部的一个模块,主要负责显示数据的转换和部分图像处理功能,例如...
### Android Display 框架分析 #### 一、硬件架构分析 ##### 高通7系列硬件架构概述 根据所提供的信息,我们重点分析高通7系列的Display硬件架构,特别是MSM7200A平台。 - **A、MDP (Mobile Digital Processor)*...
《Android显示框架详细分析》 Android显示框架是一个复杂的系统,涉及到硬件架构、软件架构和流程设计等多个方面。本文将深入探讨这些关键知识点,以便更好地理解Android设备如何呈现图像和视频内容。 首先,让...
本文将从架构图、代码分析和优化建议三个方面对Android WiFi Display功能进行深入分析和讨论。 一、架构图 Android WiFi Display功能的架构图分为两部分,一部分为控制部分,另一部分为数据部分。控制部分通过TCP...
### Android Wifi Display (Miracast) 核心分析 #### 一、概述 在深入探讨Android平台上关于**Wifi Display**(通常称为Miracast)的相关技术之前,我们需要明确几个概念。**Wifi Display**是一种无线显示标准,...
### Windriver针对Android多媒体架构分析 #### Android多媒体架构概述 Windriver在2009年第一次Android技术大会上针对Android系统的多媒体架构进行了深入的探讨与分析。Android作为一个开放且灵活的操作系统,其...
本文将详细探讨全志H5在Android/Linux环境下如何实现display驱动。 一、全志H5显示硬件架构 全志H5集成了GPU(图形处理器),如Mali400或Mali-G31,用于处理复杂的2D和3D图形任务。此外,它还包含LCD控制器,用于与...
### Android显示框架分析 #### 一、硬件架构分析:高通7系列 高通7系列的显示硬件架构主要包括以下几个关键组件: 1. **MDP (Mobile Display Processor)**:这是高通MSM7200A内部的一个核心模块,主要职责在于...
在深入探讨Android原生设置(Setting)的分析之前,我们需要先理解Android系统的基本结构。Android是一个基于Linux内核的操作系统,其应用程序主要由Java编写,使用Android SDK进行开发。原生设置应用(Settings)是...
[WiFiDisplay技术支撑架构](#) #### 二、WiFiDisplay的重要标准及标准 WiFi联盟制定了Miracast支持的视/音频格式标准,包括但不限于: - **显示格式**:如VGA、WXGA、720p、1080p等。 - **视频格式**:如H.264、...
#### 五、Android应用程序框架 **应用程序框架**包括了用于构建应用的各种核心类库和技术,例如: - **android.app**:提供高层次的应用模型和基本的运行环境。 - **android.content**:包含对各种设备上的数据...
GDI(Graphics Display Interface)是Android图形子系统的核心部分,负责管理和渲染图形内容。显示缓冲管理确保了图形内容的高效更新。 #### AndroidGDI之共享缓冲区机制 共享缓冲区机制使得多个应用程序能够安全...
在Android系统中,"Settings"模块是用户与设备设置交互的核心部分,而"Display settings"则是其中至关重要的一环,它涵盖了屏幕亮度、显示分辨率、屏幕方向等与视觉体验相关的选项。"0001-Android-Settings-display...
### Android核心分析——设计意图与方法论探讨 #### 一、设计意图的探索 在深入研究Android之前,首要任务是理解其背后的设计理念。对于一个跨平台开发者而言,熟悉并掌握Android的核心概念至关重要。Android引入...
- **GDI显示缓冲管理**:Graphics Display Interface(GDI)是Android图形系统的核心,负责屏幕显示效果的渲染。 - **共享缓冲区机制**:为了提高图像渲染效率,Android采用了共享缓冲区技术。 - **SurfaceFlinger**:...
### Android原生设置应用架构概览 - **存储位置**:Android自带的应用程序位于`packages/apps`目录下,其中包括资源文件(`res`)、源代码(`src`)和测试代码(`tests`),以及用于编译的`Android.mk`和应用程序...
通过对 Android Framework 的详细分析,我们可以更深刻地理解 Android 操作系统的架构设计和技术特点。从设计者的意图出发,通过抽象思考和逐步深入源代码,我们可以更好地把握 Android 的精髓所在。无论是对于初学...
《Android核心分析》系列文章深度剖析了Android操作系统的关键组成部分与设计思想,对于理解Android系统架构、工作机制以及开发原理具有重要价值。以下是对该系列文章各部分的详细知识点总结: ### 设计意图与方法...
- **GDI简介:** GDI(Graphics Display Interface)是Android图形显示的核心组件,负责图形渲染和显示管理。 - **总体框架:** 描述GDI的整体架构,包括SurfaceFlinger、Surface和Canvas等关键组成部分。 **显示...