如何获得 fb0 扫描线长度?

如何获得 fb0 扫描线长度?

我正在控制台模式、Debian 10、使用 HP Envy Touchsmart 笔记本电脑、使用 fwrite 标准 C 函数访问 /dev/fb0(屏幕的帧缓冲区)。

我读了这一页: https://techoverflow.net/2015/06/21/querying-framebuffer-resolution-in-linux/

它指出“cat /sys/class/graphics/fb0/virtual_size”应该返回fb0的尺寸。

它返回 1366 x 768 像素。这是我的实际屏幕分辨率。到目前为止一切都很好。

但是当我写入 /dev/fb0 时,实际上需要在开始新行之前写入 1376 个像素。

请注意,像素是 32 位数据包,因此看起来不存在潜在的扫描线对齐问题。我们谈论的是 10 乘以 4 字节的差异,即 40 字节,这是很多。

这种差异从何而来?如何获得扫描线宽度信息而不必通过目视找出?

答案1

/sys/class/graphics/fb0/stride您可能可以找到其中的值行的长度(以字节为单位)根据来源。您需要除以bits_per_pixel8 才能得到跨步以像素为单位。

相关内容