Differences between current version and predecessor to the previous major change of HowToXFree86VideoTimingsHOWTO.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 4 | Last edited on Thursday, October 21, 2004 5:36:52 pm | by AristotlePagaltzis | |
Older page: | version 3 | Last edited on Friday, April 2, 2004 7:22:23 am | by JacobAnawalt | Revert |
@@ -1,2021 +1 @@
-XFree86 Video Timings HOWTO
-!!!XFree86 Video Timings HOWTO
-!Eric Steven Raymond Thyrsus Enterprises
-
- esr@thyrsus.com
-
-
-
-
-Copyright (c) 2000 by Eric S. Raymond
-
-
-
-$Date: 2002/02/04 18:01:47 $
-
-
-__Revision History__
-Revision 6.22002-02-03Revised by: esrMinor corrections about mode line autogeneration.
-Revision 6.12001-10-29Revised by: esrNote that VESA modes top out at 1920x1440.
-Revision 6.02001-08-09Revised by: esrClearer explanation of DDC and EDID. This HOWTO is now
-basically obsolete.
-Revision 5.02000-08-22Revised by: esrFirst !DocBook version.
-
-
-
-
-
-''This HOWTO is effectively obsolete.
-Current (4..1 and up) versions of XFree86 compute optimal modelines
-from the resolution you specify in the Modes section of your X
-configuration file.''
-
-
-
-How to compose a mode line for your card/monitor combination
-under XFree86. The
-XFree86 distribution now includes good facilities for configuring most
-standard combinations; this document is mainly useful if you are
-tuning a custom mode line for an ultra-high-performance monitor or very
-unusual hardware. It may also help you in using kvideogen to generate
-mode lines, or xvidtune to tweak a standard mode that is not quite
-right for your monitor.
-
-
-
-
-
-----; __Table of Contents__;
-# Disclaimer;
-# Why This HOWTO Is Obsolete;
-# Introduction;
-# Tools for Automatic Computation;
-# How Video Displays Work;
-# Basic Things to Know about your Display and Adapter: ;
-## The monitor sync frequencies;
-## The monitor's video bandwidth;
-## The card's dot clock;
-## What these basic statistics control;
-# Interpreting the Basic Specifications: ;
-## About Bandwidth;
-## Sync Frequencies and the Refresh Rate:;
-# Tradeoffs in Configuring your System;
-# Memory Requirements;
-# Computing Frame Sizes;
-# Black Magic and Sync Pulses: ;
-## Horizontal Sync:;
-## Vertical Sync:;
-# Putting it All Together;
-# Overdriving Your Monitor;
-# Using Interlaced Modes;
-# Questions and Answers;
-# Fixing Problems with the Image.: ;
-## The image is displaced to the left or right;
-## The image is displaced up or down;
-## The image is too large both horizontally and vertically;
-## The image is too wide (too narrow) horizontally;
-## The image is too deep (too shallow) vertically;
-# Plotting Monitor Capabilities;
-# Credits----
-!!!1. Disclaimer
-
- You use the material herein ''solely at your own
-risk''. It is possible to harm both your monitor and yourself
-when driving it outside the manufacturer's specs. Read Overdriving Your Monitor for detailed cautions. Any damage to
-you or your monitor caused by overdriving it is your problem.
-
-
-
-The most up-to-date version of this HOWTO can be found at the
-Linux Documentation
-Project web page.
-
-
-
-Please direct comments, criticism, and suggestions for
-improvement to `esr@snark.thyrsus.comb. Please do
-''not'' send email pleading for a magic solution to
-your special monitor problem, as doing so will only burn up my time
-and frustrate you -- everything I know about the subject is already in
-here.
-
-----
-!!!2. Why This HOWTO Is Obsolete
-
-For 4..0 and later versions of XFree86, you no longer have to
-generate modelines at all under most circumstances. Instead they are computed internally
-by the server at startup time, based on the resolution you specify
-in the Modes part of the Screen section part of your XFree86 configuration
-file and the monitor capabilities your X server gets via an EDID query
-to the monitor.
-
-
-
-To change your screen resolution and color depth, simply edit or
-create a Display section describing it. Here is a sample Screen
-description from the X configuration file of my laptop:
-
-
- Section "Screen"
- Identifier "Screen0"
- Device "ATI Rage Mobility"
- Monitor "Monitor0"
- !DefaultDepth 16
- Subsection "Display"
- Depth 16
- Modes "1024x768"
- !EndSubsection
- !EndSection
-
-All you will usually need to do is change the numbers in the
-Mode entry. X will do the rest. If you specify an impossible
-resolution, it will fall back to the closest approximation that the EDID
-data from the monitor says it can support.
-
-
-
-Therefore, the information in the remainder of this HOWTO is
-useful only if (a) you have an old, pre-EDID monitor, or (b) your
-graphics-card driver doesn't support querying the monitor, or (c) you
-are running an old version of XFree86 (in which case, you should
-fix your problem by upgrading), or (d) your monitor/card combination
-can support a resolution above 1920 x 1440 or below 640 x 480, which
-is the range over which XFree86 has canned modelines.
-
-----
-!!!3. Introduction
-
-The XFree86 server allows users to configure their video
-subsystem and thus encourages best use of existing hardware. This
-document is intended to help you learn how to generate your own timing
-numbers to make optimum use of your video card and monitor.
-
-
-
-We'll present a method for getting something that works, and
-then show you how you can experiment starting from that base to
-develop settings that optimize for your taste.
-
-
-
-If you already have a mode that almost works (in particular, if
-one of predefined VESA modes gives you a stable display but one that's
-displaced right or left, or too small, or too large) you can go
-straight to the section on Fixing Problems with
-the Image. This will enlighten you on ways to tweak the timing
-numbers to achieve particular effects.
-
-
-
-Don't assume that you need to get all the way into mode tuning
-just because your X comes up with a scrambled display first time after
-installation; it may be that most of the factory mode lines are OK and
-you just happened to default to one that doesn't fit your
-hardware. Instead, cycle through all your installed modes with
-CTRL-ALT-KP+. If some of the modes look OK, try
-commenting out all but a 640x480 and check that that mode works. If it
-does then uncomment a couple of other modes, e.g. an 800x600 and a
-1024x768 at a frequency that your monitor should be able to
-handle.
-
-----
-!!!4. Tools for Automatic Computation
-
-If your monitor was made after 1996, it probably supports the
-EDID
-specification. EDID-capable monitors (sometimes called "Plug'n'Play"
-monitors in Microsoft marketing literature) can report their
-capabilities to your computer.
-
-
-
-Many driver modules in XFree86 4.0 support DDC, the VESA Display
-Data Channel facility. A DDC-enabled graphics-card module
-will ask the monitor to hand it an EDID capability description and
-configure itself from that data. So with 4.0 and any recent monitor,
-you are likely not to have to do any configuration at all.
-
-
-
-If your graphics-card module happens not to be DDC-enabled but
-your monitor speaks EDID, you can still use the read-edid program to
-ask the monitor for its statistics and compute a mode line for you.
-See http://altern.org/vii/programs/linux/read-edid/.
-
-
-
-Starting with XFree86 3.2, XFree86 provided an
-__XF86Setup__ program that makes it easy to generate
-a working monitor mode interactively, without messing with video
-timing numbers directly. So you shouldn't actually need to calculate a
-base monitor mode in most cases. Unfortunately,
-__XF86Setup__ has some limitations; it only knows
-about standard video modes up to 1280x1024. If you have a very
-high-performance monitor capable of 1600x1200 or more you will still
-have to compute your base monitor mode yourself.
-
-
-
-There is a KDE tool called KVideoGen that
-computes modelines from basic monitor and card statistics. I've
-experimented with generating modelines from it, but haven't tried them
-in live use. Note that its horizontal and vertical `refresh rate'
-parameters are the same as the sync frequencies HSF and VSF we
-describe below. The `horizontal sync pulse' number seems to be a sync
-pulse width in microseconds, HSP (with the tool assuming fixed `front
-porch' HGT1 and `back porch' HGT2 values). If you don't know the
-`horizontal sync pulse' number it's safe to use the default.
-
-
-
-Another XFree86 modeline generator lives here. You can either download
-the Python script or use the CGI form provided.
-
-
-
-Recent versions of XFree86 provide a tool called
-__xvidtune__ which you will probably find quite useful
-for testing and tuning monitor modes. It begins with a gruesome
-warning about the possible consequences of mistakes with it. If you
-pay careful attention to this document and learn what is behind the
-pretty numbers in xvidtune's boxes, you will become able to use
-xvidtune effectively and with confidence.
-
-
-
-If you have __xvidtune__(1), you'll be able to
-test new modes on the fly, without modifying your X configuration
-files or even rebooting your X server. Otherwise, XFree86 allows you
-to hot-key between different modes defined in Xconfig (see XFree86.man
-for details). Use this capabilty to save yourself hassles! When you
-want to test a new mode, give it a unique mode label and add it to the
-''end'' of your hot-key list. Leave a known-good
-mode as the default to fall back on if the test mode doesn't work.
-
-
-
-Towards the end of this document, we include a `modeplot' script that
-you can use to produce an analog graph of available modes. This is
-not directly helpful for generating modelines, but it may help you
-better understand the relationships that define them.
-
-----
-!!!5. How Video Displays Work
-
-Knowing how the
-display works is
-essential to understanding what numbers to put in the various fields
-in the file Xconfig. Those values are used in the lowest levels of
-controlling the display by the XFree86 server.
-
-
-
-The display generates a picture from what you could consider to be a
-series of raster dots. The dots are arranged from left to right to form
-lines. The lines are arranged from top to bottom to form the picture.
-The dots emit light when they are struck by the electron beams inside
-the display, one for each primary color. To make the beams strike
-each dot for an equal amount of time, the beams are swept across the
-display in a constant pattern, called a raster.
-
-
-
-We say "what you could consider to be a series of dots" because
-these raster dots don't actually correspond to physical phosphor dots.
-The physical phosphor dots are much smaller than raster dots -- they
-have to be, otherwise the display would suffer from severe
-moir�-pattern effects. The raster dots are really samples of
-the analog driver signal, and display as a grid of dots only because
-the peaks and valleys in the signal are quite regularly and finely
-spaced.
-
-
-
-The pattern starts at the top left of the screen, goes across
-the screen to the right in a straight line, moving ever so slightly
-"downhill" (the downhill slope is too small to be perceptible). Then
-the beams are swept back to the left side of the display, starting at
-a new line. The new line is swept from left to right just as the
-first line was. This pattern is repeated until the bottom line on the
-display has been swept. Then the beams are moved from the bottom
-right corner of the display (sweeping back and forth a few times) to
-the top left corner, and the pattern is started over again.
-
-
-
-There is one variation of this scheme known as
-interlacing: here
-only every second line is swept during one half-frame and the others
-are filled in during a second half-frame.
-
-
-
-Starting the beams at the top left of the display is called the
-beginning of a frame. The frame ends when the beams reach the the top
-left corner again as they come from the bottom right corner of the
-display. A frame is made up of all of the lines the beams traced from
-the top of the display to the bottom.
-
-
-
-If the electron beams were on all of the time they were sweeping
-through the frame, all of the dots on the display would be
-illuminated. There would be no black border around the edges of the
-display. At the edges of the display the picture would become
-distorted because the beams are hard to control there. To reduce the
-distortion, the dots around the edges of the display are not
-illuminated by the beams (because they're turned off) even though the
-beams, if they were turned on, would be pointing at them. The
-viewable area of the display is reduced this way.
-
-
-
-Another important thing to understand is what becomes of the beams
-when no spot is being painted on the visible area. The time the beams
-would have been illuminating the side borders of the display is used
-for sweeping the beams back from the right edge to the left. The time
-the beams would have been illuminating the top and bottom borders of
-the display is used for moving the beams from the bottom-right corner
-of the display to the top-left corner.
-
-
-
-The adapter card generates the signals which cause the display to turn
-on the electron beams (according to the desired color) at each dot to
-generate a picture. The card also controls when the display moves the
-beams from the right side back to the left by generating a signal
-called the horizontal sync (for synchronization) pulse. One
-horizontal sync pulse occurs at the end of every line. The adapter
-also generates a vertical sync pulse which signals the display to move
-the beams to the top-left corner of the display. A vertical sync
-pulse is generated near the end of every frame.
-
-
-
-The display requires that there be short time periods both before and
-after the horizontal and vertical sync pulses so that the position of
-the electron beams can stabilize. If the beams can't stabilize, the
-picture will not be steady.
-
-
-
-For more information, see TV
-and Monitor Deflection Systems.
-
-
-
-In a later section, we'll come back to these basics with definitions,
-formulas and examples to help you use them.
-
-----
-!!!6. Basic Things to Know about your Display and Adapter
-
-There are some fundamental things you need to know before
-hacking an Xconfig entry. These are:
-
-
-
-
-
-
-****
-
-your monitor's horizontal and vertical sync frequency options
-
-
-****
-****
-
-your monitor's bandwidth
-
-
-****
-****
-
-your video adapter's driving clock frequencies, or "dot clocks"
-
-
-****----
-!!6.1. The monitor sync frequencies
-
-The horizontal sync frequency is just the number of times per second
-the monitor can write a horizontal scan line; it is the single most
-important statistic about your monitor. The vertical sync frequency
-is the number of times per second the monitor can traverse its beam
-vertically.
-
-
-
-Sync frequencies are usually listed on the specifications page
-of your monitor manual. The vertical sync
-frequency number is typically calibrated in Hz
-(cycles per second), the horizontal one in KHz (kilocycles per
-second). The usual ranges are between 50 and 150Hz vertical, and
-between 31 and 135KHz horizontal.
-
-
-
-If you have a multisync monitor, these frequencies will be given
-as ranges. Some monitors, especially lower-end ones, have multiple
-fixed frequencies. These can be configured too, but your options will
-be severely limited by the built-in monitor characteristics. Choose
-the highest frequency pair for best resolution. And be careful ---
-trying to clock a fixed-frequency monitor at a higher speed than it's
-designed for can easily damage it.
-
-
-
-Earlier versions of this guide were pretty cavalier about overdriving
-multisync monitors, pushing them past their nominal highest vertical
-sync frequency in order to get better performance. We have since had more
-reasons pointed out to us for caution on this score; we'll cover those under
-Overdriving Your Monitor below.
-
-----
-!!6.2. The monitor's video bandwidth
-
-Your monitor's video bandwidth should be included on the
-manual's spec page. If it's not, look at the monitor's higest rated
-resolution. As a rule of thumb, here's how to translate these into
-bandwidth estimates (and thus into rough upper bounds for the dot
-clock you can use):
-
-
- 640x480 25
- 800x600 36
- 1024x768 65
- 1024x768 interlaced 45
- 1280x1024 110
- 1600x1200 185
-
-BTW, there's nothing magic about this table; these numbers are just
-the lowest dot clocks per resolution in the standard XFree86 Modes
-database (except for the last, which I extrapolated). The bandwidth
-of your monitor may actually be higher than the minimum needed for its
-top resolution, so don't be afraid to try a dot clock a few MHz
-higher.
-
-
-
-Also note that bandwidth is seldom an issue for dot clocks under
-65MHz or so. With an SVGA card and most hi-res monitors, you can't
-get anywhere near the limit of your monitor's video bandwidth. The
-following are examples:
-
-
- Brand Video Bandwidth
- ---------- ---------------
- NEC 4D 75Mhz
- Nano 907a 50Mhz
- Nano 9080i 60Mhz
- Mitsubishi HL6615 110Mhz
- Mitsubishi Diamond Scan 100Mhz
- IDEK MF-5117 65Mhz
- IOCOMM Thinksync-17 CM-7126 136Mhz
- HP D1188A 100Mhz
- Philips SC-17AS 110Mhz
- Swan SW617 85Mhz
- Viewsonic 21PS 185Mhz
- !PanaSync/Pro P21 220Mhz
-
-Even low-end monitors usually aren't terribly
-bandwidth-constrained for their rated resolutions. The NEC Multisync
-II makes a good example --- it can't even display 800x600 per its
-spec. It can only display 800x560. For such low resolutions you
-don't need high dot clocks or a lot of bandwidth; probably the best
-you can do is 32Mhz or 36Mhz, both of them are still not too far from
-the monitor's rated video bandwidth of 30Mhz.
-
-
-
-At these two driving frequencies, your screen image may not be
-as sharp as it should be, but definitely of tolerable quality. Of
-course it would be nicer if NEC Multisync II had a video bandwidth
-higher than, say, 36Mhz. But this is not critical for common tasks
-like text editing, as long as the difference is not so significant as
-to cause severe image distortion (your eyes would tell you right away
-if this were so).
-
-----
-!!6.3. The card's dot clock
-
-Your video adapter manual's spec page will usually give you the card's
-maximum dot clock (that is, the total number of pixels per second
-it can write to the screen).
-
-
-
-If you don't have this information, the X server will get it for you.
-Recent versions of the X servers all support a --probeonly option that
-prints out this information and exits without actually starting up X
-or changing the video mode.
-
-
-
-If you don't have -probeonly, don't depair. Even if your X locks up
-your monitor, it will emit a line of clock and other info to standard
-error. If you redirect this to a file, it should be saved even if you
-have to reboot to get your console back.
-
-
-
-The probe result or startup message should look something like one of
-the following examples:
-
-
-
-If you're using XFree86:
-
-
- Xconfig: /usr/X11R6/lib/X11/Xconfig
- (**) stands for supplied, (--) stands for probed/default values
- (**) Mouse: type: !MouseMan, device: /dev/ttyS1, baudrate: 9600
- Warning: The directory "/usr/andrew/X11fonts" does not exist.
- Entry deleted from font path.
- (**) !FontPath set to "/usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/"
- (--) S3: card type: 386/486 localbus
- (--) S3: chipset: 924
- ---
- Chipset -- this is the exact chip type; an early mask of the 86C911
- (--) S3: chipset driver: s3_generic
- (--) S3: videoram: 1024k
- -----
- Size of on-board frame-buffer RAM
- (**) S3: clocks: 25.00 28.00 40.00 3.00 50.00 77.00 36.00 45.00
- (**) S3: clocks: .00 .00 79.00 31.00 94.00 65.00 75.00 71.00
- ------------------------------------------------------
- Possible driving frequencies in MHz
- (--) S3: Maximum allowed dot-clock: 110MHz
- ------
- Bandwidth
- (**) S3: Mode "1024x768": mode clock = 79.000, clock used = 79.000
- (--) S3: Virtual resolution set to 1024x768
- (--) S3: Using a banksize of 64k, line width of 1024
- (--) S3: Pixmap cache:
- (--) S3: Using 2 128-pixel 4 64-pixel and 8 32-pixel slots
- (--) S3: Using 8 pages of 768x255 for font caching
-
-If you're using SGCS or X/Inside X:
-
-
- WGA: 86C911 (mem: 1024k clocks: 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71)
- --- ------ ----- --------------------------------------------
- | | | Possible driving frequencies in MHz
- | | +-- Size of on-board frame-buffer RAM
- | +-- Chip type
- +-- Server type
-
-Note: do this with your machine unloaded (if at all possible).
-Because X is an application, its timing loops can collide with disk
-activity, rendering the numbers above inaccurate. Do it several times
-and watch for the numbers to stabilize; if they don't, start killing
-processes until they do. Your mouse daemon process, if you have one,
-is particularly likely to trip you up (that's gpm for Linux users,
-mousemgr for SVr4 users).
-
-
-
-In order to avoid the clock-probe inaccuracy, you should clip
-out the clock timings and put them in your Xconfig as the value of the
-Clocks property --- this suppresses the timing loop and gives X an
-exact list of the clock values it can try. Using the data from the
-example above:
-
-
-wga
- Clocks 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71
-
-On systems with a highly variable load, this may help you avoid
-mysterious X startup failures. It's possible for X to come up, get
-its timings wrong due to system load, and then not be able to find a
-matching dot clock in its config database --- or find the wrong
-one!
-
-----
-!!6.4. What these basic statistics control
-
-The sync frequency ranges of your monitor, together with
-your video adapter's dot clock, determine the ultimate resolution that
-you can use. But it's up to the driver to tap the potential of your
-hardware. A superior hardware combination without an equally
-competent device driver is a waste of money. On the other hand, with
-a versatile device driver but less capable hardware, you can push the
-hardware a little beyond its rated performance. This is the design
-philosophy of XFree86.
-
-
-
-You should match the dot clock you use to the monitor's video
-bandwidth. There's a lot of give here, though --- some monitors can
-run as much as 30% over their nominal bandwidth. The risks here have
-to do with exceeding the monitor's rated vertical-sync frequency;
-we'll discuss them in detail below.
-
-
-
-Knowing the bandwidth will enable you to make more intelligent choices
-between possible configurations. It may affect your display's visual
-quality (especially sharpness for fine details).
-
-----
-!!!7. Interpreting the Basic Specifications
-
-This section explains what the specifications above mean, and some
-other things you'll need to know. First, some definitions. Next to
-each in parentheses is the variable name we'll use for it when doing
-calculations
-
-
-
-
-
-; horizontal sync frequency (HSF):
-
-Horizontal scans per second (see above).
-
-; vertical sync frequency (VSF):
-
-Vertical scans per second (see above). Mainly
-important as the upper limit on your refresh rate.
-
-; dot clock (DCF):
-
-More formally, `driving clock frequency'; The
-frequency of the crystal or VCO on your adaptor --- the maximum
-dots-per-second it can emit.
-
-; video bandwidth (VB):
-
- The highest frequency you can feed into your monitor's video
-input and still expect to see anything discernible. If your adaptor
-produces an alternating on/off pattern (as in an interlaced
-mode), its lowest frequency is half the DCF, so in theory
-bandwidth starts making sense at DCF/2. For tolerately crisp
-display of fine details in the video image, however,
-you don't want it much below your highest DCF, and preferably
-higher.
-
-; frame length (HFL, VFL):
-
- Horizontal frame length (HFL) is the number of dot-clock ticks
-needed for your monitor's electron gun to scan one horizontal line,
-''including the inactive left and right borders''. Vertical
-frame length (VFL) is the number of scan lines in the
-''entire'' image, including the inactive top and bottom
-borders.
-
-; screen refresh rate (RR):
-
- The number of times per second your screen is repainted (this is
-also called "frame rate"). Higher frequencies are better, as they
-reduce flicker. 60Hz is good, VESA-standard 72Hz is better.
-Compute it as
-
-
- RR = DCF / (HFL * VFL)
-
-Note that the product in the denominator is ''not'' the same
-as the monitor's visible resolution, but typically somewhat larger.
-We'll get to the details of this below.
-
-
-
-The rates for which interlaced modes are usually specified (like 87Hz
-interlaced) are actually the half-frame rates: an entire screen seems
-to have about that flicker frequency for typical displays, but every
-single line is refreshed only half as often.
-
-
-
-For calculation purposes we reckon an interlaced display at its
-full-frame (refresh) rate, i.e. 43.5Hz. The quality of an interlaced
-mode is better than that of a non-interlaced mode with the same
-full-frame rate, but definitely worse than the non-interlaced one
-corresponding to the half-frame rate.
-
-----
-!!7.1. About Bandwidth
-
-Monitor makers like to advertise high bandwidth because it
-constrains the sharpness of intensity and color changes on the screen.
-A high bandwidth means smaller visible details.
-
-
-
-Your monitor uses electronic signals to present an image to your
-eyes. Such signals always come in in wave form once they are
-converted into analog form from digitized form. They can be
-considered as combinations of many simpler wave forms each one of
-which has a fixed frequency, many of them are in the Mhz range, eg,
-20Mhz, 40Mhz, or even 70Mhz. Your monitor video bandwidth is,
-effectively, the highest-frequency analog signal it can handle without
-distortion.
-
-
-
-For our purposes, video bandwidth is mainly important as an approximate
-cutoff point for the highest dot clock you can use.
-
-----
-!!7.2. Sync Frequencies and the Refresh Rate:
-
-Each horizontal scan line on the display is just the visible
-portion of a frame-length scan. At any instant there is actually only
-one dot active on the screen, but with a fast enough refresh rate your
-eye's persistence of vision enables you to "see" the whole
-image.
-
-
-
-Here are some pictures to help:
-
-
- _______________________
-| | The horizontal sync frequency
-|-b-b-b-b-b-b-b-b-b-b-b | is the number of times per
-| )| second that the monitor's
-|`-----`-----`-----`--- | electron beam can trace
-| | a pattern like this
-| |
-| |
-| |
-|_______________________|
-_______________________
-| ^ | The vertical sync frequency
-| ^ | | is the number of times per
-| | v | second that the monitor's
-| ^ | | electron beam can trace
-| | | | a pattern like this
-| ^ | |
-| | v |
-| ^ | |
-|_______|_v_____________|
-
-Remember that the actual raster scan is a very tight zigzag
-pattern; that is, the beam moves left-right and at the same time
-up-down.
-
-
-
-Now we can see how the dot clock and frame size relates to
-refresh rate. By definition, one hertz (hz) is one cycle per second.
-So, if your horizontal frame length is HFL and your vertical frame
-length is VFL, then to cover the entire screen takes (HFL * VFL)
-ticks. Since your card emits DCF ticks per second by definition, then
-obviously your monitor's electron gun(s) can sweep the screen from
-left to right and back and from bottom to top and back DCF / (HFL *
-VFL) times/sec. This is your screen's refresh rate, because it's how
-many times your screen can be updated (thus
-''refreshed'') per second!
-
-
-
-You need to understand this concept to design a configuration
-which trades off resolution against flicker in whatever way suits your
-needs.
-
-
-
-For those of you who handle visuals better than text, here is one:
-
-
- RR VB
-| min HSF max HSF |
-| | R1 R2 | |
-max VSF -+----|------------/----------/---|------+----- max VSF
-| |:::::::::::/::::::::::/:::::\ |
-| \::::::::::/::::::::::/:::::::\ |
-| |::::::::/::::::::::/:::::::::| |
-| |:::::::/::::::::::/::::::::::\ |
-| \::::::/::::::::::/::::::::::::\ |
-| \::::/::::::::::/::::::::::::::| |
-| |::/::::::::::/:::::::::::::::| |
-| \/::::::::::/:::::::::::::::::\|
-| /\:::::::::/:::::::::::::::::::|
-| / \:::::::/::::::::::::::::::::|\
-| / |:::::/:::::::::::::::::::::| |
-| / \::::/::::::::::::::::::::::| \
-min VSF -+----/-------\--/-----------------------|--\--- min VSF
-| / \/ | \
-+--/----------/\------------------------+----\- DCF
-R1 R2 \ | \
-min HSF | max HSF
-VB
-
-This is a generic monitor mode diagram. The x axis of the diagram
-shows the clock rate (DCF), the y axis represents the refresh rate
-(RR). The filled region of the diagram describes the monitor's
-capabilities: every point within this region is a possible video
-mode.
-
-
-
-The lines labeled `R1' and `R2' represent a fixed resolutions
-(such as 640x480); they are meant to illustrate how one resolution can
-be realized by many different combinations of dot clock and refresh
-rate. The R2 line would represent a higher resolution than R1.
-
-
-
-The top and bottom boundaries of the permitted region are simply
-horizontal lines representing the limiting values for the vertical sync
-frequency. The video bandwidth is an upper limit to the clock rate and
-hence is represented by a vertical line bounding the capability region on
-the right.
-
-
-
-Under Plotting Monitor
-Capabilities you'll find a program that will help you plot a
-diagram like this (but much nicer, with X graphics) for your
-individual monitor. That section also discusses the interesting part;
-the derivation of the boundaries resulting from the limits on the
-horizontal sync frequency.
-
-----
-!!!8. Tradeoffs in Configuring your System
-
-Another way to look at the formula we derived above is
-
-
- DCF = RR * HFL * VFL
-
-That is, your dot clock is fixed. You can use those dots per
-second to buy either refresh rate, horizontal resolution, or vertical
-resolution. If one of those increases, one or both of the others must
-decrease.
-
-
-
-Note, though, that your refresh rate cannot be greater than the maximum
-vertical sync frequency of your monitor. Thus, for any given monitor at a
-given dot clock, there is a minimum product of frame lengths below which you
-can't force it.
-
-
-
-In choosing your settings, remember: if you set RR too low, you will
-get mugged by screen flicker. Keep it above 60Hz. 72Hz is the VESA
-ergonomic standard. 120Hz is the flicker rate of fluorescent lights
-in the U.S. (100MHz is Europe and other places with 50-cycle current);
-if you're sensitive to those, you need to keep it above that.
-
-
-
-Flicker is very eye-fatiguing, though human eyes are adaptable
-and peoples' tolerance for it varies widely. If you face your monitor
-at a 90% viewing angle, are using a dark background and a good
-contrasting color for foreground, and stick with low to medium
-intensity, you *may* be comfortable at as little as 45Hz.
-
-
-
-The acid test is this: open a xterm with pure white back-ground
-and black foreground using __xterm -bg white -fg
-black__ and make it so large as to cover the entire viewable
-area. Now turn your monitor's intensity to 3/4 of its maximum
-setting, and turn your face away from the monitor. Try peeking at
-your monitor sideways (bringing the more sensitive peripheral-vision
-cells into play). If you don't sense any flicker or if you feel the
-flickering is tolerable, then that refresh rate is fine with you.
-Otherwise you better configure a higher refresh rate, because that
-semi-invisible flicker is going to fatigue your eyes like crazy and
-give you headaches, even if the screen looks OK to normal
-vision.
-
-
-
-For interlaced modes, the amount of flicker depends on more factors
-such as the current vertical resolution and the actual screen
-contents. So just experiment. You won't want to go much below about
-85Hz half frame rate, though.
-
-
-
-So let's say you've picked a minimum acceptable refresh rate.
-In choosing your HFL and VFL, you'll have some room for
-maneuver.
-
-----
-!!!9. Memory Requirements
-
-Available frame-buffer RAM may limit the resolution you can
-achieve on color or gray-scale displays. It probably isn't a factor
-on displays that have only two colors, white and black with no shades
-of gray in between.
-
-
-
-For 256-color displays, a byte of video memory is required for each
-visible dot to be shown. This byte contains the information that
-determines what mix of red, green, and blue is generated for its dot.
-To get the amount of memory required, multiply the number of visible
-dots per line by the number of visible lines. For a display with a
-resolution of 1024x768, this would be 1024 x 768 = 786432, which is
-the number of visible dots on the display. This is also, at one byte
-per dot, the number of bytes of video memory that will be necessary on
-your adapter card.
-
-
-
-Thus, your memory requirement will typically be (HR * VR)/1024
-Kbytes of VRAM, rounded up (it would come to 768K exactly in this
-example). If you have more memory than strictly required, you'll have
-extra for virtual-screen panning.
-
-
-
-However, if you only have 512K on board yor video card, then you won't
-be able to use this resolution. Even if you have a good monitor,
-without enough video RAM, you can't take advantage of your monitor's
-potential. On the other hand, if your SVGA has one meg, but your
-monitor can display at most 800x600, then high resolution is beyond
-your reach anyway (see Using Interlaced Modes
-for a possible remedy).
-
-
-
-Don't worry if you have more memory than required; XFree86 will make
-use of it by allowing you to scroll your viewable area (see the
-Xconfig file documentation on the virtual screen size parameter).
-Remember also that a card with 512K bytes of memory really doesn't
-have 512,000 bytes installed, it has 512 x 1024 = 524,288 bytes.
-
-
-
-If you're running X/Inside using an S3 card, and are willing to live
-with 16 colors (4 bits per pixel), you can set depth 4 in Xconfig and
-effectively double the resolution your card can handle. S3 cards, for
-example, normally do 1024x768x256. You can make them do 1280x1024x16
-with depth 4.
-
-----
-!!!10. Computing Frame Sizes
-
-Warning: this method was developed for multisync monitors. It
-will probably work with fixed-frequency monitors as well, but no
-guarantees!
-
-
-
-Start by dividing DCF by your highest available HSF to get a horizontal
-frame length.
-
-
-
-For example; suppose you have a Sigma Legend SVGA with a 65MHz
-dot clock, and your monitor has a 55KHz horizontal scan frequency.
-The quantity (DCF / HSF) is then 1181 (65MHz = 65000KHz; 65000/55 =
-1181).
-
-
-
-Now for our first bit of black magic. You need to round this
-figure to the nearest multiple of 8. This has to do with the VGA
-hardware controller used by SVGA and S3 cards; it uses an 8-bit
-register, left-shifted 3 bits, for what's really an 11-bit quantity.
-Other card types such as ATI 8514/A may not have this requirement, but
-we don't know and the correction can't hurt. So round the usable
-horizontal frame length figure down to 1176.
-
-
-
-This figure (DCF / HSF rounded to a multiple of 8) is the
-minimum HFL you can use. You can get longer HFLs (and thus, possibly,
-more horizontal dots on the screen) by setting the sync pulse to
-produce a lower HSF. But you'll pay with a slower and more visible
-flicker rate.
-
-
-
-As a rule of thumb, 80% of the horizontal frame length is available for
-horizontal resolution, the visible part of the horizontal scan line (this
-allows, roughly, for borders and sweepback time -- that is, the time required
-for the beam to move from the right screen edge to the left edge of the next
-raster line). In this example, that's 940 ticks.
-
-
-
-Now, to get the normal 4:3 screen aspect ratio, set your
-vertical resolution to 3/4ths of the horizontal resolution you just
-calculated. For this example, that's 705 ticks. To get your actual
-VFL, multiply that by 1.05 to get 740 ticks.
-
-
-
-The 4:3 is not technically magic; nothing prevents you from using a
-different ratio if that will get the best use out of your screen real
-estate. It does make figuring frame height and frame width from the
-diagonal size convenient, you just multiply the diagonal by by .8 to
-get width and .6 to get height.
-
-
-
-So, HFL=1176 and VFL=740. Dividing 65MHz by the product of the two gives
-us a nice, healthy 74.6Hz refresh rate. Excellent! Better than VESA standard!
-And you got 944x705 to boot, more than the 800 by 600 you were probably
-expecting. Not bad at all!
-
-
-
-You can even improve the refresh rate further, to almost 76 Hz,
-by using the fact that monitors can often sync horizontally at 2khz or
-so higher than rated, and by lowering VFL somewhat (that is, taking
-less than 75% of 940 in the example above). But before you try this
-"overdriving" maneuver, if you do, make ''sure'' that
-your monitor electron guns can sync up to 76 Hz vertical. (the
-popular NEC 4D, for instance, cannot. It goes only up to 75 Hz VSF).
-(See Overdriving Your Monitor for more
-general discussion of this issue. )
-
-
-
-So far, most of this is simple arithmetic and basic facts about raster
-displays. Hardly any black magic at all!
-
-----
-!!!11. Black Magic and Sync Pulses
-
-OK, now you've computed HFL/VFL numbers for your chosen dot
-clock, found the refresh rate acceptable, and checked that you have
-enough VRAM. Now for the real black magic -- you need to know when
-and where to place synchronization pulses.
-
-
-
-The sync pulses actually control the horizontal and vertical
-scan frequencies of the monitor. The HSF and VSF you've pulled off
-the spec sheet are nominal, approximate maximum sync frequencies. The
-sync pulse in the signal from the adapter card tells the monitor how
-fast to actually run.
-
-
-
-Recall the two pictures above? Only part of the time required
-for raster-scanning a frame is used for displaying viewable image
-(ie. your resolution).
-
-----
-!!11.1. Horizontal Sync:
-
-By previous definition, it takes HFL ticks to trace the a
-horizontal scan line. Let's call the visible tick count (your
-horizontal screen resolution) HR. Then Obviously, HR ` HFL by
-definition. For concreteness, let's assume both start at the same
-instant as shown below:
-
-
- |___ __ __ __ __ __ __ __ __ __ __ __ __
-|_ _ _ _ _ _ _ _ _ _ _ _ |
-|_______________________|_______________|_____
-0 ^ ^ unit: ticks
-| ^ ^ |
-HR | | HFL
-| |`-----b| |
-|`-b| HSP |`-b|
-HGT1 HGT2
-
-Now, we would like to place a sync pulse of length HSP as shown
-above, ie, between the end of clock ticks for display data and the end
-of clock ticks for the entire frame. Why so? because if we can
-achieve this, then your screen image won't shift to the right or to
-the left. It will be where it supposed to be on the screen, covering
-squarely the monitor's viewable area.
-
-
-
-Furthermore, we want about 30 ticks of "guard time" on either
-side of the sync pulse. This is represented by HGT1 and HGT2. In a
-typical configuration HGT1 != HGT2, but if you're building a
-configuration from scratch, you want to start your experimentation
-with them equal (that is, with the sync pulse centered).
-
-
-
-The symptom of a misplaced sync pulse is that the image is
-displaced on the screen, with one border excessively wide and the
-other side of the image wrapped around the screen edge, producing a
-white edge line and a band of "ghost image" on that side. A
-way-out-of-place vertical sync pulse can actually cause the image to
-roll like a TV with a mis-adjusted vertical hold (in fact, it's the
-same phenomenon at work).
-
-
-
-If you're lucky, your monitor's sync pulse widths will be
-documented on its specification page. If not, here's where the real
-black magic starts...
-
-
-
-You'll have to do a little trial and error for this part. But
-most of the time, we can safely assume that a sync pulse is about 3.5
-to 4.0 microsecond in length.
-
-
-
-For concretness again, let's take HSP to be 3.8 microseconds
-(which btw, is not a bad value to start with when
-experimenting).
-
-
-
-Now, using the 65Mhz clock timing above, we know HSP is
-equivalent to 247 clock ticks (= 65 * 10**6 * 3.8 * 10^-6)
-
[[recall M=10^6, micro=10^-6
]
-
-
-
-Some vendors like to quote their horizontal framing parameters as
-timings rather than dot widths. You may see the following
-terms:
-
-
-
-
-
-; active time (HAT):
-
- Corresponds to HR, but in time units (usually microseconds).
-HAT * DCF = HR.
-
-; blanking time (HBT):
-
- Corresponds to (HFL - HR), but in time units (usually
-microseconds). HBT * DCF = (HFL - HR).
-
-; front porch (HFP):
-
- This is just HGT1.
-
-; sync time:
-
- This is just HSP.
-
-; back porch (HBP):
-
- This is just HGT2.
-
-----
-!!11.2. Vertical Sync:
-
-Going back to the picture above, how do we place the 247 clock
-ticks as shown in the picture?
-
-
-
-Using our example, HR is 944 and HFL is 1176. The difference
-between the two is 1176 - 944=232 ` 247! Obviously we have to do some
-adjustment
here. What can we do?
-
-
-
-The first thing is to raise 1176 to 1184, and lower 944 to 936.
-Now the difference = 1184-936= 248. Hmm, closer.
-
-
-
-Next, instead using 3.8, we use 3.5 for calculating HSP; then, we have
-65*3.5=227. Looks better. But 248 is not much higher than 227. It's normally
-necessary to have 30 or so clock ticks between HR and the start of SP, and the
-same for the end of SP and HFL. AND they have to be multiple of eight! Are we
-stuck?
-
-
-
-No. Let's do this, 936 % 8 = , (936 + 32) % 8 = 0 too. But
-936 + 32 = 968, 968 + 227 = 1195, 1195 + 32 = 1227. Hmm.. this looks
-not too bad. But it's not a multiple of 8, so let's round it up to
-1232.
-
-
-
-But now we have potential trouble, the sync pulse is no longer
-placed right in the middle between h and H any more. Happily, using
-our calculator we find 1232 - 32 = 1200 is also a multiple of 8 and
-(1232 - 32) - 968 = 232 corresponding using a sync pulse of 3.57
-microseconds long, still reasonable.
-
-
-
-In addition, 936/1232 ~ .76 or 76%, still not far from 80%, so
-it should be all right.
-
-
-
-Furthermore, using the current horizontal frame length, we
-basically ask our monitor to sync at 52.7khz (= 65Mhz/1232) which is
-within its capability. No problems.
-
-
-
-Using rules of thumb we mentioned before, 936*75%=702, This is
-our new vertical resolution. 702 * 1.05 = 737, our new vertical frame
-length.
-
-
-
-Screen refresh rate = 65Mhz/(737*1232)=71.6 Hz. This is still
-excellent.
-
-
-
-Figuring the vertical sync pulse layout is similar:
-
-
- |___ __ __ __ __ __ __ __ __ __ __ __ __
-|_ _ _ _ _ _ _ _ _ _ _ _ |
-|_______________________|_______________|_____
-0 VR VFL unit: ticks
-^ ^ ^
-| | |
-|`-b|`-----b|
-VGT VSP
-
-We start the sync pulse just past the end of the vertical
-display data ticks. VGT is the vertical guard time required for the
-sync pulse. Most monitors are comfortable with a VGT of 0 (no guard
-time) and we'll use that in this example. A few need two or three
-ticks of guard time, and it usually doesn't hurt to add that.
-
-
-
-Returning to the example: since by the defintion of frame
-length, a vertical tick is the time for tracing a complete HORIZONTAL
-frame, therefore in our example, it is 1232/65Mhz=18.95us.
-
-
-
-Experience shows that a vertical sync pulse should be in the
-range of 50us and 300us. As an example let's use 150us, which
-translates into 8 vertical clock ticks (150us/18.95us~8).
-
-
-
-Some makers like to quote their vertical framing parameters as
-timings rather than dot widths. You may see the following
-terms:
-
-
-
-
-
-; active time (VAT):
-
-Corresponds to VR, but in milliseconds. VAT * VSF =
-VR.
-
-; blanking time (VBT):
-
-Corresponds to (VFL - VR), but in milliseconds.
-VBT * VSF = (VFL - VR).
-
-; front porch (VFP):
-
-This is just VGT.
-
-; sync time:
-
-This is just VSP.
-
-; back porch (VBP):
-
-This is like a second guard time after the vertical sync
-pulse. It is often zero.
-
-----
-!!!12. Putting it All Together
-
-The Xconfig file Table of Video Modes contains lines of numbers,
-with each line being a complete specification for one mode of X-server
-operation. The fields are grouped into four sections, the name
-section, the clock frequency section, the horizontal section, and the
-vertical section.
-
-
-
-The name section contains one field, the name of the video mode
-specified by the rest of the line. This name is referred to on the
-"Modes" line of the Graphics Driver Setup section of the Xconfig file.
-The name field may be omitted if the name of a previous line is the
-same as the current line.
-
-
-
-The dot clock section contains only the dot clock (what we've
-called DCF) field of the video mode line. The number in this field
-specifies what dot clock was used to generate the numbers in the
-following sections.
-
-
-
-The horizontal section consists of four fields which specify how each
-horizontal line on the display is to be generated. The first field of
-the section contains the number of dots per line which will be
-illuminated to form the picture (what we've called HR). The second
-field of the section (SH1) indicates at which dot the horizontal sync
-pulse will begin. The third field (SH2) indicates at which dot the
-horizontal sync pulse will end. The fourth field specifies the toal
-horzontal frame length (HFL).
-
-
-
-The vertical section also contains four fields. The first field
-contains the number of visible lines which will appear on the display
-(VR). The second field (SV1) indicates the line number at which the
-vertical sync pulse will begin. The third field (SV2) specifies the
-line number at which the vertical sync pulse will end. The fourth
-field contains the total vertical frame length (VFL).
-
-
-
-Example:
-
-
- #Modename clock horizontal timing vertical timing
-"752x564" 40 752 784 944 1088 564 567 569 611
-44.5 752 792 976 1240 564 567 570 600
-
-(Note: stock X11R5 doesn't support fractional dot clocks.)
-
-
-
-For Xconfig, all of the numbers just mentioned - the number of
-illuminated dots on the line, the number of dots separating the
-illuminated dots from the beginning of the sync pulse, the number of
-dots representing the duration of the pulse, and the number of dots
-after the end of the sync pulse - are added to produce the number of
-dots per line. The number of horizontal dots must be evenly divisible
-by eight.
-
-
-
-Example horizontal numbers: 800 864 1024 1088
-
-
-
-This sample line has the number of illuminated dots (800) followed by the
-number of the dot when the sync pulse starts (864), followed by the number of
-the dot when the sync pulse ends (1024), followed by the number of the last dot
-on the horizontal line (1088).
-
-
-
-Note again that all of the horizontal numbers (800, 864, 1024,
-and 1088) are divisible by eight! This is not required of the
-vertical numbers.
-
-
-
-The number of lines from the top of the display to the bottom form the frame.
-The basic timing signal for a frame is the line. A number of lines will
-contain the picture. After the last illuminated line has been displayed, a
-delay of a number of lines will occur before the vertical sync pulse is
-generated. Then the sync pulse will last for a few lines, and finally the last
-lines in the frame, the delay required after the pulse, will be generated. The
-numbers that specify this mode of operation are entered in a manner similar to
-the following example.
-
-
-
-Example vertical numbers: 600 603 609 630
-
-
-
-This example indicates that there are 600 visible lines on the
-display, that the vertical sync pulse starts with the 603rd line and
-ends with the 609th, and that there are 630 total lines being
-used.
-
-
-
-Note that the vertical numbers don't have to be divisible by
-eight!
-
-
-
-Let's return to the example we've been working. According to
-the above, all we need to do from now on is to write our result into
-Xconfig as follows:
-
-
-`nameb DCF HR SH1 SH2 HFL VR SV1 SV2 VFL
-
-where SH1 is the start tick of the horizontal sync pulse and SH2
-is its end tick; similarly, SV1 is the start tick of the vertical sync
-pulse and SV2 is its end tick.
-
-
-
-To place these, recall the discussion of black magic and sync
-pulses given above. SH1 is the dot that begins the leading edge of
-the horiziontal sync pulse; thus, SH1 = HR + HGT1. SH2 is the
-trailing edge; thus, SH2 = SH1 + HSP. Similarly, SV1 = VR + VGT (but
-VGT is usually zero) and SV2 = SV1 + VSP.
-
-
-#name clock horizontal timing vertical timing flag
-936x702 65 936 968 1200 1232 702 702 710 737
-
-No special flag necessary; this is a non-interlaced mode. Now
-we are really done.
-
-----
-!!!13. Overdriving Your Monitor
-
-You should absolutely ''not'' try exceeding your
-monitor's scan rates if it's a fixed-frequency type. You can smoke
-your hardware doing this! There are potentially subtler problems with
-overdriving a multisync monitor which you should be aware of.
-
-
-
-Having a pixel clock higher than the monitor's maximum bandwidth is
-rather harmless, in contrast. It's exceeding the rated maximum sync
-frequencies that's problematic. Some modern monitors might have
-protection circuitry that shuts the monitor down at dangerous scan
-rates, but don't rely on it. In particular there are older multisync
-monitors (like the Multisync II) which use just one horizontal
-transformer. These monitors will not have much protection against
-overdriving them. While you necessarily have high voltage regulation
-circuitry (which can be absent in fixed frequency monitors), it will
-not necessarily cover every conceivable frequency range, especially in
-cheaper models. This not only implies more wear on the circuitry, it
-can also cause the screen phosphors to age faster, and cause more than
-the specified radiation (including X-rays) to be emitted from the
-monitor.
-
-
-
-However, the basic problematic magnitude in question here is the slew
-rate (the steepness of the video signals) of the video output drivers,
-and that is usually independent of the actual pixel frequency, but
-(if your board manufacturer cares about such problems) related
-to the maximum pixel frequency of the board.
-
-
-
-So be careful out there...
-
-----
-!!!14. Using Interlaced Modes
-
-(This section is largely due to David Kastrup
-`dak@pool.informatik.rwth-aachen.deb)
-
-
-
-At a fixed dot clock, an interlaced display is going to have
-considerably less noticable flicker than a non-interlaced display, if
-the vertical circuitry of your monitor is able to support it stably.
-It is because of this that interlaced modes were invented in the first
-place.
-
-
-
-Interlaced modes got their bad reputqtion because they are inferior to
-their non-interlaced companions at the same vertical scan frequency,
-VSF (which is what is usually given in advertisements). But they are
-definitely superior at the same horizontal scan rate, and that's where
-the decisive limits of your monitor/graphics card usually lie.
-
-
-
-At a fixed ''refresh rate'' (or half frame
-rate, or VSF) the interlaced display will flicker more: a 90Hz
-interlaced display will be inferior to a 90Hz non-interlaced
-display. It will, however, need only half the video bandwidth and half
-the horizontal scan rate. If you compared it to a non-interlaced mode
-with the same dot clock and the same scan rates, it would be vastly
-superior: 45Hz non-interlaced is intolerable. With 90Hz interlaced, I
-have worked for years with my Multisync 3D (at 1024x768) and am very
-satisfied. I'd guess you'd need at least a 70Hz non-interlaced display
-for similar comfort.
-
-
-
-You have to watch a few points, though: use interlaced modes
-only at high resolutions, so that the alternately lighted lines are
-close together. You might want to play with sync pulse widths and
-positions to get the most stable line positions. If alternating lines
-are bright and dark, interlace will ''jump'' at
-you. I have one application that chooses such a dot pattern for a menu
-background (XCept, no other application I know does that,
-fortunately). I switch to 800x600 for using XCept because it really
-hurts my eyes otherwise.
-
-
-
-For the same reason, use at least 100dpi fonts, or other fonts where
-horizontal beams are at least two lines thick (for high resolutions,
-nothing else will make sense anyhow).
-
-
-
-And of course, never use an interlaced mode when your hardware would
-support a non-interlaced one with similar refresh rate.
-
-
-
-If, however, you find that for some resolution you are pushing either
-monitor or graphics card to their upper limits, and getting
-dissatisfactorily flickery or outwashed (bandwidth exceeded) display,
-you might want to try tackling the same resolution using an
-interlaced mode. Of course this is useless if the VSF
-of your monitor is already close to its limits.
-
-
-
-Design of interlaced modes is easy: do it like a non-interlaced
-mode. Just two more considerations are necessary: you need an odd
-total number of vertical lines (the last number in your mode line), and
-when you specify the "interlace" flag, the actual vertical frame rate
-for your monitor doubles. Your monitor needs to support a 90Hz frame
-rate if the mode you specified looks like a 45Hz mode apart from the
-"Interlace" flag.
-
-
-
-As an example, here is my modeline for 1024x768 interlaced: my
-Multisync 3D will support up to 90Hz vertical and 38kHz horizontal.
-
-
-!ModeLine "1024x768" 45 1024 1048 1208 1248 768 768 776 807 Interlace
-
-Both limits are pretty much exhausted with this mode. Specifying the
-same mode, just without the "Interlace" flag, still is almost at the
-limit of the monitor's horizontal capacity (and strictly speaking, a
-bit under the lower limit of vertical scan rate), but produces an
-intolerably flickery display.
-
-
-
-Basic design rules: if you have designed a mode at less than half of
-your monitor's vertical capacity, make the vertical total of lines odd
-and add the "Interlace" flag. The display's quality should vastly
-improve in most cases.
-
-
-
-If you have a non-interlaced mode otherwise exhausting your monitor's
-specs where the vertical scan rate lies about 30% or more under the
-maximum of your monitor, hand-designing an interlaced mode (probably
-with somewhat higher resolution) could deliver superior results, but I
-won't promise it.
-
-----
-!!!15. Questions and Answers; Q: The example you gave is not a standard screen size, can I use it?; Q: It this the only resolution given the 65Mhz dot clock and 55Khz
-HSF?; Q: You just mentioned two standard resolutions. In Xconfig, there are
-many standard resolutions available, can you tell me whether there's
-any point in tinkering with timings?; Q: Can you summarize what we have discussed so far?
-
-__Q: __The example you gave is not a standard screen size, can I use it?
-
-
-
-__A: __Why not? There is NO reason whatsover why you have to use 640x480,
-800x600, or even 1024x768. The XFree86 servers let you configure your hardware
-with a lot of freedom. It usually takes two to three tries to come up the
-right one. The important thing to shoot for is high refresh rate with
-reasonable viewing area. not high resolution at the price of eye-tearing
-flicker!
-
-
-
-__Q: __It this the only resolution given the 65Mhz dot clock and 55Khz
-HSF?
-
-
-
-__A: __Absolutely not! You are encouraged to follow the general
-procedure and do some trial-and-error to come up a setting that's
-really to your liking. Experimenting with this can be lots of fun.
-Most settings may just give you nasty video hash, but in practice a
-modern multi-sync monitor is usually not damaged easily. Be sure
-though, that your monitor can support the frame rates of your mode
-before using it for longer times.
-
-
-
-Beware fixed-frequency monitors! This kind of hacking around can
-damage them rather quickly. Be sure you use valid refresh rates for
-''every'' experiment on them.
-
-
-
-__Q: __You just mentioned two standard resolutions. In Xconfig, there are
-many standard resolutions available, can you tell me whether there's
-any point in tinkering with timings?
-
-
-
-__A: __Absolutely! Take, for example, the "standard" 640x480 listed in
-the current Xconfig. It employes 25Mhz driving frequency, frame
-lengths are 800 and 525 =b refresh rate ~ 59.5Hz. Not too bad. But
-28Mhz is a commonly available driving frequency from many SVGA boards.
-If we use it to drive 640x480, following the procedure we discussed
-above, you would get frame lengths like 812 (round down to 808) and
-505. Now the refresh rate is raised to 68Hz, a quite significant
-improvement over the standard one.
-
-
-
-__Q: __Can you summarize what we have discussed so far?
-
-
-
-__A: __In a nutshell:
-
-
-
-
-
-
-****
-
-for any fixed driving frequency, raising max resolution incurs the penalty
-of lowering refresh rate and thus introducing more
-flicker.
-
-
-****
-****
-
-if high resolution is desirable and your monitor supports it, try to
-get a SVGA card that provides a matching dot clock or DCF. The higher,
-the better!
-
-
-****----
-!!!16. Fixing Problems with the Image.
-
-OK, so you've got your X configuration numbers. You put them in
-Xconfig with a test mode label. You fire up X, hot-key to the new
-mode, ... and the image doesn't look right. What do you do? Here's a
-list of common video image distortions and how to fix them.
-
-
-
-(Fixing these minor distortions is where
-__xvidtune__(1) really shines.)
-
-
-
-You ''move'' the image by changing the sync
-pulse timing. You ''scale'' it by changing the frame
-length (you need to move the sync pulse to keep it in the same
-relative position, otherwise scaling will move the image as well).
-Here are some more specific recipes:
-
-
-
-The horizontal and vertical positions are independent. That is,
-moving the image horizontally doesn't affect placement vertically, or
-vice-versa. However, the same is not quite true of scaling. While
-changing the horizontal size does nothing to the vertical size or vice
-versa, the total change in both may be limited. In particular, if
-your image is too large in both dimensions you will probably have to
-go to a higher dot clock to fix it. Since this raises the usable
-resolution, it is seldom a problem!
-
-----
-!!16.1. The image is displaced to the left or right
-
-To fix this, move the horizontal sync pulse. That is, increment or
-decrement (by a multiple of 8) the middle two numbers of the
-horizontal timing section that define the leading and trailing edge of
-the horizontal sync pulse.
-
-
-
-If the image is shifted left (right border too large, you want
-to move the image to the right) decrement the numbers. If the image
-is shifted right (left border too large, you want it to move left)
-increment the sync pulse.
-
-----
-!!16.2. The image is displaced up or down
-
-To fix this, move the vertical sync pulse. That is, increment
-or decrement the middle two numbers of the vertical timing section
-that define the leading and trailing edge of the vertical sync pulse.
-
-
-
-If the image is shifted up (lower border too large, you want to
-move the image down) decrement the numbers. If the image is shifted
-down (top border too large, you want it to move up) increment the
-numbers.
-
-----
-!!16.3. The image is too large both horizontally and vertically
-
-Switch to a higher card clock speed. If you have multiple modes
-in your clock file, possibly a lower-speed one is being activated by
-mistake.
-
-----
-!!16.4. The image is too wide (too narrow) horizontally
-
-To fix this, increase (decrease) the horizontal frame length.
-That is, change the fourth number in the first timing section. To
-avoid moving the image, also move the sync pulse (second and third
-numbers) half as far, to keep it in the same relative position.
-
-----
-!!16.5. The image is too deep (too shallow) vertically
-
-To fix this, increase (decrease) the vertical frame length.
-That is, change the fourth number in the second timing section. To
-avoid moving the image, also move the sync pulse (second and third
-numbers) half as far, to keep it in the same relative position.
-
-
-
-Any distortion that can't be handled by combining these
-techniques is probably evidence of something more basically wrong,
-like a calculation mistake or a faster dot clock than the monitor can
-handle.
-
-
-
-Finally, remember that increasing either frame length will decrease your
-refresh rate, and vice-versa.
-
-
-
-Occasionally you can fix minor distortions by fiddling with the
-picture controls on your monitor. The disadvantage is that if you
-take your controls too far off the neutral (factory) setting to fix
-graphics-mode problems, you may end up with a wacky image in text
-mode. It's better to get your modeline right.
-
-----
-!!!17. Plotting Monitor Capabilities
-
-To plot a monitor mode diagram, you'll need the gnuplot package
-(a freeware plotting language for UNIX-like operating systems) and the
-tool __modeplot__, a shell/gnuplot script to plot the
-diagram from your monitor characteristics, entered as command-line
-options.
-
-
-
-Here is a copy of __modeplot__:
-
-
-#!/bin/sh
-#
-# modeplot -- generate X mode plot of available monitor modes
-#
-# Do `modeplot -?' to see the control options.
-#
-# Monitor description. Bandwidth in MHz, horizontal frequencies in kHz
-# and vertical frequencies in Hz.
-TITLE="Viewsonic 21PS"
-BANDWIDTH=185
-MINHSF=31
-MAXHSF=85
-MINVSF=50
-MAXVSF=160
-ASPECT="4/3"
-vesa=72.5 # VESA-recommended minimum refresh rate
-while [[ "$1" != "" ]
-do
-case $1 in
--t) TITLE="$2"; shift;;
--b) BANDWIDTH="$2"; shift;;
--h) MINHSF="$2" MAXHSF="$3"; shift; shift;;
--v) MINVSF="$2" MAXVSF="$3"; shift; shift;;
--a) ASPECT="$2"; shift;;
--g) GNUOPTS="$2"; shift;;
--?) cat ``EOF
-modeplot control switches:
--t "`descriptionb" name of monitor defaults to "Viewsonic 21PS"
--b `nnb bandwidth in MHz defaults to 185
--h `minb `maxb min 8 max HSF (kHz) defaults to 31 85
--v `minb `maxb min 8 max VSF (Hz) defaults to 50 160
--a `aspect ratiob aspect ratio defaults to 4/3
--g "`optionsb" pass options to gnuplot
-The -b, -h and -v options are required, -a, -t, -g optional. You can
-use -g to pass a device type to gnuplot so that (for example) modeplot's
-output can be redirected to a printer. See gnuplot(1) for details.
-The modeplot tool was created by Eric S. Raymond `esr@thyrsus.comb based on
-analysis and scratch code by Martin Lottermoser `Martin.Lottermoser@mch.sni.deb
-This is modeplot $Revision: 1.22 $
-EOF
-exit;;
-esac
-shift
-done
-gnuplot $GNUOPTS ``EOF
-set title "$TITLE Mode Plot"
-# Magic numbers. Unfortunately, the plot is quite sensitive to changes in
-# these, and they may fail to represent reality on some monitors. We need
-# to fix values to get even an approximation of the mode diagram. These come
-# from looking at lots of values in the ModeDB database.
-F1 = 1.30 # multiplier to convert horizontal resolution to frame width
-F2 = 1.05 # multiplier to convert vertical resolution to frame height
-# Function definitions (multiplication by 1.0 forces real-number arithmetic)
-ac = (1.*$ASPECT)*F1/F2
-refresh(hsync, dcf) = ac * (hsync**2)/(1.*dcf)
-dotclock(hsync, rr) = ac * (hsync**2)/(1.*rr)
-resolution(hv, dcf) = dcf * (10**6)/(hv * F1 * F2)
-# Put labels on the axes
-set xlabel 'DCF (MHz)'
-set ylabel 'RR (Hz)' 6 # Put it right over the Y axis
-# Generate diagram
-set grid
-set label "VB" at $BANDWIDTH+1, ($MAXVSF + $MINVSF) / 2 left
-set arrow from $BANDWIDTH, $MINVSF to $BANDWIDTH, $MAXVSF nohead
-set label "max VSF" at 1, $MAXVSF-1.5
-set arrow from , $MAXVSF to $BANDWIDTH, $MAXVSF nohead
-set label "min VSF" at 1, $MINVSF-1.5
-set arrow from , $MINVSF to $BANDWIDTH, $MINVSF nohead
-set label "min HSF" at dotclock($MINHSF, $MAXVSF+17), $MAXVSF + 17 right
-set label "max HSF" at dotclock($MAXHSF, $MAXVSF+17), $MAXVSF + 17 right
-set label "VESA $vesa" at 1, $vesa-1.5
-set arrow from , $vesa to $BANDWIDTH, $vesa nohead # style -1
-plot [[dcf=:1.1*$BANDWIDTH] [[$MINVSF-10:$MAXVSF+20] \
-refresh($MINHSF, dcf) notitle with lines 1, \
-refresh($MAXHSF, dcf) notitle with lines 1, \
-resolution(640*480, dcf) title "640x480 " with points 2, \
-resolution(800*600, dcf) title "800x600 " with points 3, \
-resolution(1024*768, dcf) title "1024x768 " with points 4, \
-resolution(1280*1024, dcf) title "1280x1024" with points 5, \
-resolution(1600*1280, dcf) title "1600x1200" with points 6
-pause 9999
-EOF
-
-Once you know you have __modeplot__ and the
-gnuplot package in place, you'll need the following monitor
-characteristics:
-
-
-
-
-
-
-****
-
-video bandwidth (VB)
-
-
-****
-****
-
-range of horizontal sync frequency (HSF)
-
-
-****
-****
-
-range of vertical sync frequency (VSF)
-
-
-****
-
-The plot program needs to make some simplifying assumptions which are
-not necessarily correct. This is the reason why the resulting diagram is
-only a rough description. These assumptions are:
-
-
-
-
-
-
-****
-
-All resolutions have a single fixed aspect ratio AR =
-HR/VR. Standard resolutions have AR = 4/3 or AR = 5/4. The
-__modeplot__ programs assumes 4/3 by default, but you
-can override this.
-
-
-****
-****
-
-For the modes considered, horizontal and vertical
-frame lengths are fixed multiples of horizontal and vertical
-resolutions, respectively:
-
-
- HFL = F1 * HR
-VFL = F2 * VR
-****
-
-As a rough guide, take F1 = 1.30 and F2 = 1.05 (see Computing Frame Sizes.
-
-
-
-Now take a particular sync frequency, HSF. Given the assumptions just
-presented, every value for the clock rate DCF already determines the
-refresh rate RR, i.e. for every value of HSF there is a function RR(DCF).
-This can be derived as follows.
-
-
-
-The refresh rate is equal to the clock rate divided by the product of the
-frame sizes:
-
-
- RR = DCF / (HFL * VFL) (*)
-
-On the other hand, the horizontal frame length is equal to the clock rate
-divided by the horizontal sync frequency:
-
-
- HFL = DCF / HSF (**)
-
-VFL can be reduced to HFL be means of the two assumptions above:
-
-
- VFL = F2 * VR
-= F2 * (HR / AR)
-= (F2/F1) * HFL / AR (***)
-
-Inserting (**) and (***) into (*) we obtain:
-
-
- RR = DCF / ((F2/F1) * HFL**2 / AR)
-= (F1/F2) * AR * DCF * (HSF/DCF)**2
-= (F1/F2) * AR * HSF**2 / DCF
-
-For fixed HSF, F1, F2 and AR, this is a hyperbola in our
-diagram. Drawing two such curves for minimum and maximum horizontal
-sync frequencies we have obtained the two remaining boundaries of the
-permitted region.
-
-
-
-The straight lines crossing the capability region represent
-particular resolutions. This is based on (*) and the second
-assumption:
-
-
- RR = DCF / (HFL * VFL) = DCF / (F1 * HR * F2 * VR)
-
-By drawing such lines for all resolutions one is interested in, one
-can immediately read off the possible relations between resolution,
-clock rate and refresh rate of which the monitor is capable. Note that
-these lines do not depend on monitor properties, but they do depend on
-the second assumption.
-
-
-
-The __modeplot__ tool provides you with an easy way to
-do this. Do __modeplot -?__ to see its control
-options. A typical invocation looks like this:
-
-
- modeplot -t "Swan SW617" -b 85 -v 50 90 -h 31 58
-
-The -b option specifies video bandwidth; -v and -h set horizontal and
-vertical sync frequency ranges.
-
-
-
-When reading the output of __modeplot__, always
-bear in mind that it gives only an approximate description. For
-example, it disregards limitations on HFL resulting from a minimum
-required sync pulse width, and it can only be accurate as far as the
-assumptions are. It is therefore no substitute for a detailed
-calculation (involving some black magic) as presented in Putting it All Together. However, it should give
-you a better feeling for what is possible and which tradeoffs are
-involved.
-
-----
-!!!18. Credits
-
-The original ancestor of this document was by Chin Fang
-`fangchin@leland.stanford.edub.
-
-
-
-Eric S. Raymond `esr@snark.thyrsus.comb; reworked,
-reorganized, and massively rewrote Chin Fang's original in an attempt
-to understand it. In the process, he merged in most of a different
-how-to by Bob Crosson `crosson@cam.nist.govb.
-
-
-
-The material on interlaced modes is largely by David Kastrup
-`dak@pool.informatik.rwth-aachen.deb
-
-
-
-Nicholas Bodley `nbodley@alumni.princeton.edub corrected
-and clarified the section on how displays work.
-
-
-
-Payne Freret `payne@freret.orgb corrected some
-minor technical errors about monitor design.
-
-
-
-Martin Lottermoser `Martin.Lottermoser@mch.sni.deb
-contributed the idea of using gnuplot to make mode diagrams and did
-the mathematical analysis behind __modeplot__. The
-distributed __modeplot__ was redesigned and generalized
-by ESR from Martin's original gnuplot code for one case
.
+Describe
[HowToXFree86VideoTimingsHOWTO
] here.