|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
如果应用程序需要知道Framebuffer设备的相关参数,必须通过ioctl()系统调用来完成。
- K( Y, M7 K; S: a% j: P6 j+ R; D: Q8 G$ l Z" e8 A
在头文件<Linux/fb.h>中定义了所有的ioctl命令字,不过,最常用的ioctl命令字是下面这两个:FBIOGET_FSCREENINFO和FBIOGET_VSCREENINFO。- f: L5 t) {- S
8 M- i. D! {# Q+ ~" e" T% e7 q$ _前者返回与Framebuffer有关的固定的信息,比如图形硬件上实际的帧缓存空间的大小、能否硬件加速等信息。4 r. e$ n; A, D8 x
0 \( Y2 ]1 w4 B7 O而后者返回的是与Framebuffer有关的可变信息。
; M2 X" W C4 G3 b5 \6 V- ` w, j9 N e
之所以可变,是因为对同样的图形硬件,可以工作在不同的模式下。9 p* m. r, |8 ]; x; R
/ u; ?' Z4 @8 ^1 ~% M3 D2 H
简单来讲,一个支持1024x768x24图形模式的硬件通常也能工作在800x600x16的图形模式下。7 B1 J8 G; j& a
3 w8 N, P3 k3 S! @可变的信息就是指Framebuffer的长度、宽度以及颜色深度等信息。
/ [% S( d1 L- d8 b9 y
1 O) i$ q% L& V0 x
/ O$ R2 z7 r# z: c( X6 o, i9 {4 t, G! O1 I+ W$ h
这两个命令字相关的结构体有两个:struct fb_fix_screeninfo和struct fb_var_screeninfo。3 _! X- Z: `5 {: Z
7 |8 Q& U# J, s7 d
这两个结构体都比较大,前者用于保存Framebuffer设备的固定信息,后者用于保存Framebuffer设备的可变信息。 i* a' Z, w& c! C# ~( v
* o {% b \$ P: ]7 c2 c6 Z& S在调用ioctl()的时候,要用到这两个结构体。7 H# A- X% `. `1 h& J2 E
, s/ g3 X8 J% }应用程序中通常要用到struct fb_var_screeninfo的下面这几个字段:
! e) I' C5 t3 m8 M* |" q4 P7 j+ W k/ @2 Z. d: b# l
, a/ `3 w \, p7 T& z8 E1 ?! g+ k5 L- a+ f7 J& v& j
|
|