fb0 스캔 라인 길이를 얻는 방법은 무엇입니까?

fb0 스캔 라인 길이를 얻는 방법은 무엇입니까?

저는 HP Envy Touchsmart 노트북을 사용하여 콘솔 모드인 Debian 10에서 작업하고 있으며, fwrite 표준 C 기능을 사용하여 /dev/fb0(화면의 프레임 버퍼)에 액세스하고 있습니다.

나는 이 페이지를 읽었습니다: https://techoverflow.net/2015/06/21/querying-framebuffer-solution-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 로 나누어야 합니다 .보폭픽셀 단위입니다.

관련 정보