
显示
qwaszx523
努力成长的小菜鸟
展开
-
Bit block位块
在计算机图像处理中,由若干像素组成的一个矩形,可视为一个单位,用来描述像素显示特性(如颜色、亮度等)。原创 2017-06-12 10:33:05 · 527 阅读 · 0 评论 -
fb.h注释
struct fb_info { int node; int flags; struct mutex lock; /* Lock for open/release/ioctl funcs 用于open/release/ioctl函数的锁 */ struct mutex mm_lock; /* Lock for fb_mmap and smem_转载 2017-06-12 11:07:23 · 1853 阅读 · 0 评论 -
FB_ROTATE_xxx宏定义
#define FB_ROTATE_UR 0 //正常显示#define FB_ROTATE_CW 1 //顺时针转90度#define FB_ROTATE_UD 2 //上下倒置#define FB_ROTATE_CCW 3 //逆时针转90度原创 2017-06-13 09:52:31 · 1417 阅读 · 0 评论 -
qcom 显示驱动注册流程
以8909为例,高通显示驱动主要涉及mdp、msmfb、dsi、lcd四个驱动,其中msmfb、lcd在dts中是挂载在mdp下面的,在kernel解析设备节点生成platform_device时是不会展开的。显示驱动注册流程如下图: 备注:dsi驱动探测在mdp驱动探测完成标志m原创 2017-11-09 17:16:34 · 744 阅读 · 0 评论 -
Android Sync Framework
定义“Synchronization between consumers and producers who are from different hardware components to use a buffer atomically” 应用背景在复杂的DMA管线如图形管线(多媒体,摄像头,GPU以及显示设备),一个buffer的消费者需要知道生产者什么时候完成生产(即创建一转载 2017-06-14 09:28:55 · 1194 阅读 · 0 评论 -
fbmem.c分析
int fb_get_color_depth(struct fb_var_screeninfo *var,struct fb_fix_screeninfo *fix){ int depth = 0; if (fix->visual == FB_VISUAL_MONO01 || fix->visual == FB_VISUAL_MONO10)转载 2017-06-12 10:23:41 · 1888 阅读 · 0 评论 -
linux_logo结构体
结构linux_logo 描述了一个linux logo的全部信息 struct linux_logo { int type; /* one of LINUX_LOGO_*, logo的类型 */ unsigned int width; /* logo的宽度*/ unsigned int height;原创 2017-06-12 10:09:08 · 561 阅读 · 0 评论 -
fb_var_screeninfo 和fb_fix_screeninfo
struct fb_var_screeninfo { //struct fb_info的成员(可变参数),其记录用户可修改的显示控制器的参数,包括分 //辨率和每个像素点的比特数,其成员需要在驱动程序中初始化和设置 /********可见解析度(实际屏幕)********/ __u32 xres;/* visible re原创 2017-06-09 10:35:09 · 10675 阅读 · 4 评论 -
struct fb_bitfield
struct fb_bitfield { /*fb缓存的RGB位域,该结构描述每一个像素显示缓冲区的组织方式,假如为RGB565模式,R占5位=bit[11:15] G占6位=bit[10:5] B占5位=bit[4:0] */ __u32 offset; /* beginning of bitf原创 2017-06-09 10:24:00 · 2524 阅读 · 0 评论 -
VISUALS USED BY THE FRAME BUFFER DEVICE API
Monochrome (FB_VISUAL_MONO01 and FB_VISUAL_MONO10)-------------------------------------------------Each pixel is either black or white.FB_VISUAL_MONO01 /* Monochr. 1=Black 0=White */FB_VISUAL_MON转载 2017-06-09 10:04:27 · 275 阅读 · 0 评论 -
Video Mode Timings
A monitor draws an image on the screen by using an electron beam (3 electronbeams for color models, 1 electron beam for monochrome monitors). The front ofthe screen is covered by a pattern of colore转载 2017-06-09 09:46:52 · 474 阅读 · 0 评论 -
Continuous Splash Screen
cont_splash_done fieldAdd support for "Continuous Splash Screen" feature.The image displayed on the screen by the android bootloaderdriver should continue till the android animation shows up.Del转载 2017-06-19 14:26:41 · 1177 阅读 · 0 评论 -
sync fence 软件接口-------------sw_sync_timeline和sw_sync_pt
Android在提供sync框架的同时,也提供了软件使用sync的接口,如果硬件没有提供sync的功能,可以使用软件sync接口。软件sync接口在sync框架的基础上进行了封装,主要的两个数据结构如下:struct sw_sync_timeline { struct sync_timeline obj; u32 value; }; struc原创 2017-06-15 14:55:46 · 2651 阅读 · 0 评论 -
acquireFence、releaseFence、retireFence
每一个layer都有一个acquire 和release fence,每一个系列layes都有一个retirefence,注意这边的是layers!多个layer。 acquireFence: 禁止显示一个buffer的内容直到该fence被触发,而它是在H/W 被set up 前被发送的。releaseFence: 这个意味着属于这个layer的buffer已经不在被读取了原创 2017-06-15 16:03:45 · 3261 阅读 · 0 评论 -
surfaceflinger和Vsync
android44中的实现整体流程HWComposer对象的建立EventControlThread闸刀的建立DispSync和DispSyncThreadDispSyncSource和EventThread完整走一遍android 4.1一个很大的更新是Project转载 2018-01-10 10:30:18 · 1054 阅读 · 0 评论 -
vsync event处理过程总结
1、对vsync event感兴趣的对象有两个,一个是SF,另外一个是APP。2、kitkat对vsync进行虚拟化,引入dispsync模型,输出两个带有相位偏移的vsync分别供SF和APP使用。3、hwc将HW vsync event传递给SF,SF交给dispsync模型进行处理。 dispsync模型通过eventlistener的回调函数(onDispSyncEvent)将处原创 2018-01-09 16:50:23 · 842 阅读 · 0 评论 -
BufferQueue
1.BufferQueue内部原理BufferQueue是IGraphicBufferProducer服务器端的实现;所以BufferQueue会重载IGraphicBufferProducer接口中的各个虚函数queueBuffer,requesBuffer,dequeueBuffer等,该类内部还有一个mSlots[NUM_BUFFER_SLOTS];1.1 mSl转载 2018-01-09 15:00:30 · 852 阅读 · 0 评论 -
VSync信号的虚拟化
Android 4.1(Jelly Bean)引入了Vsync(Vertical Syncronization)用于渲染同步,使得App UI和SurfaceFlinger可以按硬件产生的VSync节奏来进行工作。 图1 VSync模型原创 2018-01-08 16:06:53 · 1068 阅读 · 0 评论 -
SurfaceFlinger服务的入口
SurfaceFlinger服务是一个可执行程序,其入口函数在main_surfaceflinger.cpp的main函数中,如下:int main(int, char**) { signal(SIGPIPE, SIG_IGN); // When SF is launched in its own process, limit the number of // binde原创 2018-01-03 10:19:42 · 495 阅读 · 0 评论 -
AndroidN Surfaceflinger
GOP:Graphic Output PatheFXSurfaceNormal:createNormalLayereFXSurfaceDim:createDimLayer相关Path:frameworks/base/core/jniframeworks/base/core/jni/Android/graphicsframeworks/base/core/jni/andro转载 2018-01-03 09:45:07 · 371 阅读 · 0 评论 -
像素与毫米的转换
(1)DPI(每英寸多像素点数)(2)一英寸等于25.4mm(3)象素数 / DPI = 英寸数(4)英寸数 * 25.4 = 毫米数毫米换算成像素的公式为 水平方向的换算:x = w * dpix /25.4垂直方向的换算:y = h * dpiy /25.4像素换算为毫米的公式为水平方向的换算:w = x * 25.4 / dpix垂直方向的换算:h = y * 25.原创 2017-12-12 10:52:46 · 6924 阅读 · 0 评论 -
FBIOPAN_DISPLAY和MSMFB_DISPLAY_COMMIT刷屏流程
Android FBIOPAN_DISPLAY刷屏ioctl(fbmem.c)----> fb_ioctl----> FBIOPAN_DISPLAY----> fb_pan_display----> msm_fb_pan_display----> msm_fb_pan_display_ex----> schedule_work(&mfd->commit_wo原创 2017-11-16 16:35:41 · 3613 阅读 · 1 评论 -
mdp ioctl 调用流程
原创 2017-11-15 11:16:32 · 339 阅读 · 0 评论 -
FB显示驱动框架
FB显示驱动框架从上到下分为5层,如图1所示。FB设备驱动是一个抽象的显示驱动模型,抽象出了显示驱动公有的操作,为上层提供系统调用,为底层驱动提供接口。源码主要在Fb.h (kernel\include\linux)和Fbmem.c (kernel\drivers\video)两个文件中。FB驱动之下是各个厂商自己的FB驱动,各个厂商实现FB框架制定的操作集,然原创 2017-11-09 16:03:36 · 1871 阅读 · 0 评论 -
稀疏矩阵存储格式
稀疏矩阵是指矩阵中的元素大部分是0的矩阵,事实上,实际问题中大规模矩阵基本上都是稀疏矩阵,很多稀疏度在90%甚至99%以上。因此我们需要有高效的稀疏矩阵存储格式。本文总结几种典型的格式:COO,CSR,DIA,ELL,HYB。(1)Coordinate(COO) 这是最简单的一种格式,每一个元素转载 2017-06-19 14:09:39 · 546 阅读 · 0 评论 -
FB_VISUAL_XXXXX-------色彩模式宏
在linux系统中,支持以下几种色彩模式 #define FB_VISUAL_MONO01 0 /* Monochr. 0=White 1=Black */ #define FB_VISUAL_MONO10 1 /* Monochr. 1=White 0=Black */ #define FB_VISUAL_TRUECOLOR原创 2017-06-12 10:05:40 · 1006 阅读 · 0 评论 -
LCDC的作用
1、LCDC的基本概念 LCDC如同显卡在计算机中的作用,主要负责从内存中或者FIFO通道中获取图像/视频数据,以一定的方式叠加、混合,将最终的图像送给外部液晶显示器显示,同时产生必须的LCD控制信号。显示的过程如下: 2、和LCD驱动器的区别LCDC是AP侧原创 2016-07-22 17:13:51 · 3098 阅读 · 0 评论 -
adf和FB
ADF(Atomic Display Framework)是Google新推出的一个关于Display驱动的框架。linux 标准的显示框架是基于framebuffer的。原创 2016-10-13 17:37:29 · 1352 阅读 · 0 评论 -
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
转自http://blog.youkuaiyun.com/luoshengyang/article/details/7747932 前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了转载 2016-09-19 20:48:00 · 559 阅读 · 0 评论 -
BufferQueue
BufferQueue把提供图形数据buffer的生产者与接受图形数据并显示或进一步处理的消费者连接起来,生产者与消费者可以存在与不同的进程。生产者请求一个空的buffer(dequeueBuffer()),然后给此buffer定义一些特性,如宽,高,像素格式以及使用标志。生产者然后对此buffer植入内容,并把它归还到队列(queueBuffer())。过后,消费者从队列获取buffer原创 2016-09-19 18:16:59 · 485 阅读 · 0 评论 -
fb_post
Post就是将需要显示的内容由user space 传递给 kernel space,然后等待一个特殊的信号过来后,送给显示屏显示(Display Conctrler)。等待的这个信号其实就是屏幕刷新信号(vblank、vsync……)。原创 2016-09-19 17:10:32 · 761 阅读 · 0 评论 -
显示技术介绍(3)_CRT技术
转自http://www.wowotech.net/display/crt_intro.html1. 前言CRT(Cathode Rays Tube,阴极射线管)是最原始的电子显示技术,在上世纪被广泛运用于模拟电视(Analog television)系统中。本文将以模拟电视系统为背景,介绍CRT显示技术的原理、特性以及一些关键术语。众所周知,CRT显示已经逐步被数字显示取转载 2016-08-25 22:27:29 · 7232 阅读 · 1 评论 -
显示技术介绍(2)_电子显示的前世今生
转自http://www.wowotech.net/display/display_tech_intro.html作者:wowo 发布于:2015-11-30 22:19 分类:显示1. 前言从1907年证实CRT(Cathode Ray Tube)技术可用于电视显示至今,电子显示技术经历了近100年的发展。100年的时间,说长不长,说短也不短;显示技术的发展,说快不快,说慢也转载 2016-08-25 22:26:25 · 921 阅读 · 0 评论 -
显示技术介绍(1)_概述
转自:http://www.wowotech.net/display/display_tech_overview.html作者:wowo 发布于:2015-11-22 21:44 分类:显示1. 前言本文是显示子系统的第一篇文章,介绍嵌入式系统显示有关的硬件组成,进而拆分为相对独立的模块,以便在后续的文章中一一介绍。2. 显示的本质人类和外界进行信息交互的方法有如下几种转载 2016-08-25 22:20:43 · 671 阅读 · 0 评论 -
vsync与hsync
转自http://zqwt.012.blog.163.com/blog/static/1204468420127202210301/VSYNC: vertical synchronization,指与显示器的帧数同步。 简单来说就是启用了VSYNC的渲染过程,帧数不会超过显示器的帧数,一个同步会被执行。 同步的地方就是显示器扫描线结束最后一行扫描,并且准备开始第一行扫描的地方。HS转载 2016-07-20 21:28:18 · 6421 阅读 · 0 评论 -
行场消隐信号
行场消隐信号,是针对老式显像管的成像扫描电路而言的。电子枪所发出的电子束从屏幕的左上角开始向右扫描(行正程),一行扫完需将电子束从右边移回到左边以便扫描第二行(行逆程),电子束在不断的走‘之’字形,最终扫描完一帧图像的所有行(场正程)。电子束在逆程回扫时出现的回扫线将对正程所传送的图像起干扰作用,在此期间就必须有一个信号加到电路上,使得电子束不能发出,这个阻止回扫线产生的信号就叫作行消隐信号。,而原创 2016-07-20 20:33:16 · 6997 阅读 · 0 评论 -
Pitch
转自http://blog.sina.com.cn/s/blog_6d6c111501018nby.html在写ARM的显示驱动时,往往能碰到”Frame Buffer Pitch"这个词。在“http://www.x.org”的《How Video Cards Work》中给出了解释:Buffers in video ram generally have a stride转载 2016-07-15 14:01:27 · 1110 阅读 · 0 评论 -
Frame Buffer Pitch
在写ARM的显示驱动时,往往能碰到”Frame Buffer Pitch"这个词。其实最难理解的还是这个“Pitch”,词典的解释是:n. 音高, 声音相对的高低; 焦油, 沥青; 投执; 程度, 倾向; 贸易场所; 一英寸内的字符数 (计算机用语)完全看不出跟“Frame Buffer"有什么关系。Baidu一下好像没什么人关注这个东西,不知道是大家都理解还是转载 2016-07-15 13:57:43 · 832 阅读 · 1 评论 -
Linux ADF显示框架理解
转自http://blog.youkuaiyun.com/lost_qwe/article/details/43113301关于ADF(Atomic Display Framework)是Google新推出的一个关于Display驱动的框架。首先上一张自己画的ADF的结构图接下来就简单说一下这些文件的作用。Driver:即使用ADF框架的custom编写的程序转载 2016-07-14 09:20:09 · 4303 阅读 · 0 评论 -
chroma subsampling
chroma subsampling是指在视频采样中对于luma部分采用教高分辨率采样,而对chroma部分采用较低分辨率采样。因为人眼本身对于luma部分的敏感度高于chroma部分的敏感度,所以保留luma部分的采样率的同时适度降低chroma部分的采样率,有利于在有限的信息损失的条件下,节约宝贵的存储空间。原创 2016-10-25 10:11:03 · 2401 阅读 · 0 评论