fb.modes(5) Linux frame buffer utils fb.modes(5)

fb.modes - فایل حالت‌های ویدئویی فریم‌بافر

/etc/fb.modes حاوی تعداد نامحدودی از توضیحات حالت‌های ویدئویی است. ساختار کلی یک حالت ویدئویی به این صورت است:

mode

geometry <xres> <yres> <vxres> <vyres> <depth>
timings <pixclock> <left> <right> <upper> <lower> <hslen> <vslen>
options <value>
endmode

گزینه‌های هندسه (geometry):

وضوح افقی قابل مشاهده (بر حسب پیکسل)
وضوح عمودی قابل مشاهده (بر حسب پیکسل)
وضوح افقی مجازی (بر حسب پیکسل)
وضوح عمودی مجازی (بر حسب پیکسل)
عمق رنگ نمایشگر (بر حسب بیت بر پیکسل)

گزینه‌های زمان‌بندی (timings):

طول مدت یک پیکسل (بر حسب پیکوثانیه)
حاشیه چپ (بر حسب پیکسل)
حاشیه راست (بر حسب پیکسل)
حاشیه بالا (بر حسب خطوط پیکسلی)
حاشیه پایین (بر حسب خطوط پیکسلی)
طول همگام‌سازی افقی (بر حسب پیکسل)
طول همگام‌سازی عمودی (بر حسب خطوط پیکسلی)

سایر گزینه‌ها:

مقدار اول در این گزینه‌ها، مقدار پیش‌فرض است:
قطبیت سیگنال همگام‌سازی افقی
قطبیت سیگنال همگام‌سازی عمودی
قطبیت سیگنال همگام‌سازی ترکیبی (composite sync)
فعال یا غیرفعال کردن همگام‌سازی مجدد خارجی. در صورت فعال بودن، زمان‌بندی‌های همگام‌سازی توسط دستگاه فریم‌بافر تولید نمی‌شوند و در عوض باید از خارج تأمین گردند. توجه داشته باشید که ممکن است این گزینه توسط تمام دستگاه‌های فریم‌بافر پشتیبانی نشود.
فعال یا غیرفعال کردن حالت درهم‌بافته (interlace). در صورت فعال بودن، تصویر نمایشگر به دو فریم تقسیم می‌شود که هر فریم به ترتیب فقط شامل خطوط زوج یا فرد است. این دو فریم به صورت متناوب نمایش داده می‌شوند؛ بدین ترتیب تعداد خطوط قابل نمایش دو برابر شده و فرکانس عمودی مانیتور ثابت می‌ماند، اما فرکانس عمودی قابل مشاهده نصف می‌شود.
فعال یا غیرفعال کردن اسکن دوگانه (doublescan). در صورت فعال بودن، هر خط دو بار نمایش داده می‌شود و از این طریق فرکانس افقی به آسانی دو برابر می‌گردد، به طوری که می‌توان همان وضوح را روی مانیتورهای مختلف نمایش داد، حتی اگر مشخصات فرکانس افقی آن‌ها متفاوت باشد. توجه داشته باشید که ممکن است این گزینه توسط تمام دستگاه‌های فریم‌بافر پشتیبانی نشود.

به طور کلی ساختار یک نمایشگر فریم‌بافر به صورت زیر سازمان‌دهی می‌شود:

+---+---------------+---+---+
|   |       ^       |   |   |
|   |       | 5     |   |   |
|   |       v       |   |   |
+---#################---+---+
|   #       ^       #   |   |
|   #       |       #   |   |
|   #       |       #   |   |
| 1 # | 2 # 3 | 4 |
|<->#<------+------>#<->|<->|
|   #       |       #   |   |
|   #       | 6     #   |   |
|   #       |       #   |   |
|   #       v       #   |   |
+---#################---+---+
|   |       ^       |   |   |
|   |       | 7     |   |   |
|   |       v       |   |   |
+---+---------------+---+---+
|   |       ^       |   |   |
|   |       | 8     |   |   |
|   |       v       |   |   |
+---+---------------+---+---+

1 حاشیه چپ (left margin)
2 وضوح افقی (xres)
3 حاشیه راست (right margin)
4 طول همگام‌سازی افقی (hslen)
5 حاشیه بالا (upper margin)
6 وضوح عمودی (yres)
7 حاشیه پایین (lower margin)
8 طول همگام‌سازی عمودی (vslen)

ناحیه‌ای که با علامت «#» مرزبندی شده است، ناحیه قابل مشاهده نمایشگر است. اکنون می‌توان فرکانس‌های افقی و عمودی را به آسانی محاسبه کرد؛ برای این منظور مجموع مقادیر افقی یا عمودی حائز اهمیت هستند:

htotal = left + xres + right + hslen
vtotal = upper + yres + lower + vslen

طول یک خط را می‌توان با استفاده از pixclock محاسبه کرد:

line = pixclock * htotal

و از این طریق فرکانس افقی به دست می‌آید:

hfreq = 1E12 / line = 1E12 / (pixclock * htotal)

برای به دست آوردن فرکانس عمودی، ممکن است در نهایت نیاز به تنظیم vtotal باشد. اگر نمایشگر از نوع درهم‌بافته (laced) باشد، vtotal باید نصف شود و اگر نمایشگر دارای اسکن دوگانه (doublescan) باشد، vtotal باید دو برابر گردد. اکنون می‌توانیم طول یک فریم را محاسبه کنیم:

if (lace)   vtotal /= 2
if (double) vtotal *= 2

frame = vtotal * line

و همچنین فرکانس عمودی حاصل می‌شود:

vfreq = 1E12 / frame = hfreq / vtotal

fbset(8), fbdev(4)

Aug 1996 local