1 / 16

SiS 315

SiS 315. An introductory exploration of features of the SVGA graphics processor used in our classroom’s workstations. Some SVGA examples. Our GPU is manufactured by SiS Official programming info is ‘unavailable’ Can find some “unofficial” info on internet

marianc
Télécharger la présentation

SiS 315

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SiS 315 An introductory exploration of features of the SVGA graphics processor used in our classroom’s workstations

  2. Some SVGA examples • Our GPU is manufactured by SiS • Official programming info is ‘unavailable’ • Can find some “unofficial” info on internet • We explore some useful SiS 315 features • But remember: other GPU chips are NOT hardware-compatible (so our software is unlikely to work on other SVGA systems) • We sacrifice the advantage of “portability”

  3. SiS Extended Registers • The typical Super VGA chip implements a number of “extra” hardware registers • Most often these appear as additions to the standard set of VGA registers established by IBM’s engineers: • Graphics Controller (9 registers) • Timer-Sequencer (5 registers) • CRT Controller (25 registers) • Attribute Controller (21 registers) • Our SiS graphics processor implements “extra” Sequencer registers (ports 0x3C4/0x3C5) and also “extra” CRTC registers (0x3D4/0x3D5)

  4. SiS Sequencer registers • Five standard VGA Sequencer-registers: 0: the Reset register 1: the Clocking Mode register 2: the Map Mask register 3: the Character Map Select register 4: the Memory Mode register • SiS implements registers 5, 6, 7, … , etc.:

  5. In-Class Exercise • Investigate the functionality of register 5 • Two-step process to read this register: outb( 5, 0x3C4 ); int val = inb( 0x3C5 ); • Two-step process to write this register: outb( 5, 0x3C4 ); outb( val, 0x3C5 ); • Alternatively: outw( (val<<8)|5, 0x3C4 );

  6. Write a demo program • Remember to call function: iopl( 3 ); • Then create a program-loop • For every possible byte-value: • write that byte-value to Seq-register 5 • read the byte-value in Seq-register 5 • print out the value that was read back • What do you learn from this exercise?

  7. Some further experiments • Repeat the previous experiment, but add a new step within your program-loop: 4) read (and print) Seq-register 6 • What do you learn from THIS exercise? • OK, try it again, but with Seq-register 7 in place of Seq-register 6 (Caution: Don’t try to ‘write’ new values into registers 6 or 7)

  8. Detecting screen-height • The screen-height parameter is 11-bits • Lowest 8-bits are in CRTC register 0x12 • 9th and 10th bits are in CRTC register 0x07 • This much is standard on VGA hardware • 11th bit is in SiS Sequencer register 0x0A • We need to read all three registers, then extract and assemble the various bits

  9. The screen-height bits crtc-0x12 (Vert Displ Enable End) crtc-0x07 (Overflow Register) screen_height - 1 ? seq-0x0A

  10. Detecting screen-width • The screen-width parameter is 10 bits • It measures the width in 8-pixel units • Lowest 8-bits are in CRTC register 0x01 • 9th and 10th bits in Ext’d Seq register 0x0B • The parameter-value is actually one less • It gives the id-number of the final unit • So we increment it, then multiply by 8

  11. The screen-width bits crtc-0x01 (Horizontal Display End) screen_width – 1 (in 8-pixel units) seq-0x0B

  12. Detecting CRT start-address • Very important parameter for animation! • This parameter is stored as 26 bits • It measures start-address in 4-byte units • Lowest byte stored in crtc register 0x0D • Next lowest byte is in crtc register 0x0C • Sequencer register 0x0D holds next byte • Sequencer register 0x37 has 2 more bits

  13. The crt start-address bits crtc-0x0C (Start Addr Hi) crtc-0x0D (Start Addr Lo) crt start-address (in 4-byte units) seq-0x0D seq-0x37

  14. Detecting CRT Line-Compare • CRTC-address resets when counter == LC • This is useful for certain “special effects” • Screen is split into two separate “windows” • Lower window shows VRAM address 0 • Upper window is from crt start-address • Lowest 8-bits from CRT register 0x18 • 9th bit from CRT register 0x07 • 10th bit from CRT register 0x09 • More bits from Sequencer register 0x0F

  15. The Line-Compare bits crtc-0x18 (Line Compare register) crtc-0x07 (Overflow register) Line-Compare crtc-0x09 (Max Scan Line) seq-0x0F

  16. In-Class Experiment • Reprogram the ‘Line Compare’ parameter with a value that is equal to one-half of the current screen-height • What visual effect do you observe? • Do you see a similar effect under Linux in both ‘text mode’ and in graphics modes?

More Related