Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info.

Video Format Object (VFO) Files

From Higher Intellect Vintage Wiki
Revision as of 18:03, 20 July 2019 by Callahan (talk | contribs) (Linked to external site with additional data on visual artifacts and methods to reduce them.)
Jump to navigation Jump to search

Video format objects are microcode images loaded into SGI graphics display hardware to generated the timing signals required to produce display images at specific resolutions and refresh rates. Vfo's are generated using SGI's Video Format Compiler (VFC) and end-user prepared video format source (vfs) files.

As mentioned in the vfc man page, vfo files are hardware specific:

Video format object microcode is not binary compatible between different hardware types. Although vfc is independently re-targetable to a number of different hardware types, video format objects that were compiled to run with one hardware architecture will not necessarily run on another. For example, video format objects created for Infinite RealityTM will not work properly on Impact. Generally speaking, video format objects (vfos) can be created using one of two methods:

  1. By use of a block sync template - because no user-defined format source file is needed, this method is quick and easy to use. Because it the lacks specific monitor, resolution and format timing details that can be included in a source file, it produces the most generically targeted microcode.
  2. By creating a video format source (vfs) file - video format source files offer the ability to tailor the microcode for specific resolutions, refresh rates and even monitors. Monitor specific format values can be obtained from the (monitor) manufacturer, or in the case of some more recent displays, extracted from the monitor firmware in with EDID reader/decoder software (EDID information or manufacturer provided modelines can sometimes be found with an web search). If neither of those methods is available, then there are a number of display modeline generators that offer all of the timing values needed to complete a video source file. Generated modelines won't necessarily contain the same values as provided by the manufacturer or EDID information for a particular monitor, but should still provide microcode that is reasonably well targeted to specific resolutions and refresh rates.

SGI included a number of video format source code files with the installation of the Video Format Compiler. The comments section of those source files indicate most were intended for use with some of CRT monitors marketed by SGI. This includes all of the wide-format for which source files are available. As a result some of the SGI vfo microcode provided for wide-screen displays does not always produce a stable displays when used with more recent LCD monitors.

Modern LCD monitors that don't work well with the CRT-targeted vfo-microcode supplied by SGI may see improvement if used with a format that includes reduced blanking. Reduced blanking lowers display format overhead needed to allow CRT screen redraws, overhead that doesn't benefit and may adversely affect LCD monitors. Reduced blanking is primarily intended for use with DVI-connected LCD monitors, but any LCD monitor new enough to take advantage of reduced blanking *may* also benefit when connected via the VGA port. Reduced blanking also can allow much greater resolution and refresh rates on systems with low pixel clock restrictions, such as IMPACT boards. Using reduced blanking, IMPACT systems have been proven to support resolutions of 1920x1200 at ~60 FPS.

Some users, however, have noted visual artifacts on IMPACT systems with modern LCDs using high resolutions (such as 1920x1080) and the monitor's native EDID data. These artifacts have been reduced or eliminated by incrementally increasing the blanking in the custom .vfs file.

Creating and using a custom vfo file for an SGI computer is a multi-step process.

  1. Build a plain text input file, customarily with the .vfs extension, using the EDID data for the monitor in question.
  2. Compile the .vfs file using the vfc command and the appropriate pre-compiler options. Some hardware, such as IMPACT graphics on Octane and Indigo2 systems, require long pre-compiler option strings.
  3. Name the output file appropriately. VPro systems use the .vfo extension, while IMPACT systems use the .sdb extension.
  4. Place the file in the appropriate subfolder of /usr/gfx/ucode/, such as /usr/gfx/ucode/ODSY/vof/ (for VPRO) or /usr/gfx/ucode/MGRAS/vof/2RSS for Solid or Max Impact Indigo2 and Octane systems. This will enable selecting the new resolution using the GUI Display Options tool.

Attached are a number of video format object (vfo) files sorted by target resolution. The intended graphics hardware platform within each listed resolution can be identified by the file prefix. Currently all include reduced blanking, indicated by the letters "rb" following the refresh rate (e.g. V10-V12_1920x1200_60rb.vfo). The reduced blanking modelines used were generated with the IRIX port of CVT graciously provided by rooprob.

Please note that the attached vfo files may not work with every monitor. Some monitors many not support reduced blanking or may require a source file specifically tailored from EDID data or a manufacturer provided modeline. I'll consider creating those (or resolutions not currently included) on a case-by-case basis, just post a request in this thread.

To do: Link back to the forum topic vfo files or upload them here

[email protected] with reduced blanking:

 # 1280x1024 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.96 Hz; hsync: 63.19 kHz; pclk: 91.00 MHz
 Modeline "1280x1024_60.00_rb"  91.00  1280 1328 1360 1440  1024 1027 1034 1054  +HSync -Vsync

File comment: Reduced blanking lowered the pixel clock from 109.81KHz, which would be unusable on a V6 or V8, to 91.23KHz, which would work with a V6 or V8, even if set in 16 bytes/pixel mode.

 V6-V8_1280x1024_60rb.vfo [8.14 KiB] 


[email protected] with reduced blanking:

 # 1440x900 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.90 Hz; hsync: 55.47 kHz; pclk: 88.75 MHz
 Modeline "1440x900_60.00_rb"  88.75  1440 1488 1520 1600  900 903 909 926  +HSync -Vsync
 V6-V8_1440x900_60rb.vfo [8.23 KiB] 
 O2_1440x900_60rb.vfo [12.14 KiB] 


[email protected] with reduced blanking:

 # 1440x900 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.90 Hz; hsync: 55.47 kHz; pclk: 88.75 MHz
 Modeline "1440x900_60.00_rb"  88.75  1440 1488 1520 1600  900 903 909 926  +HSync -Vsync
 V6-V8_1600x900_60rb.vfo [8.27 KiB] 
 O2_1600x900_60rb.vfo [12.14 KiB] 


[email protected] with reduced blanking:

 # 1680x1050 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.88 Hz; hsync: 64.67 kHz; pclk: 119.00 MHz
 Modeline "1680x1050_60.00_rb"  119.00  1680 1728 1760 1840  1050 1053 1059 1080  +HSync -Vsync


 V10-V12_1680x1050_60rb.vfo [8.51 KiB] 
 O2_1680x1050_60rb.vfo [12.14 KiB] 


[b][email protected] with reduced blanking:

 # 1600x1200 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.92 Hz; hsync: 74.01 kHz; pclk: 130.25 MHz
 Modeline "1600x1200_60.00_rb"  130.25  1600 1648 1680 1760  1200 1203 1207 1235  +HSync -Vsync

 V10-V12_1600x1200_60rb.vfo [8.27 KiB] 
 O2_1600x1200_60rb.vfo [12.14 KiB] 
 IR_1600x1200_60rb.vfo [17.58 KiB] 


[email protected] with reduced blanking:

 # 1920x1080 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.93 Hz; hsync: 66.59 kHz; pclk: 138.50 MHz
 Modeline "1920x1080_60.00_rb"  138.50  1920 1968 2000 2080  1080 1083 1088 1111  +HSync -Vsync
 V10-V12_1920x1080_60rb.vfo [8.38 KiB] 


 IR_1920x1080_60rb.vfo [17.58 KiB] 


[email protected] with reduced blanking:

 # 1920x1200 @ 60.00 Hz Reduced Blank (CVT)
 #   field rate 59.95 Hz; hsync: 74.04 kHz; pclk: 154.00 MHz
 Modeline "1920x1200_60.00_rb"  154.00  1920 1968 2000 2080  1200 1203 1209 1235  +HSync -Vsync


 V8-V10-V12_1920x1200_60rb.vfo [8.38 KiB] 
 IR_1920x1200_60rb.vfo [17.58 KiB]

See also