Modesetting

From Xenon Wiki
Revision as of 16:10, 21 April 2010 by imported>Madmalkav (Created page with 'We know libxenon sets graphics modes by writing a complete Ana dump to Ana memory and writing some values to the GPU registers. The registers affected and the information that ge…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

We know libxenon sets graphics modes by writing a complete Ana dump to Ana memory and writing some values to the GPU registers. The registers affected and the information that gets written is the following:

total_width, hsync_offset, real_active_width, total_height, vsync_offset, active_height, width, height,

is_progressive = 0 for non progressive modes, 1 for progressive modes.

rgb = 1, only declared on the modes used through VGA.

composite_sync=1, only declared on the PAL/NTSC non progresive modes.

interlace_factor is set to 1 when mode is progressive and 2 when it is not.

FB_BASE is a constant for the framebuffer base address

These are the addresses that get that variables written at some stage of the initialization, in the order libxenon write them. I have take out the addresses that get fixed values written. As you can see, some addresses get written more than one time on the initialization process.

0x6000, mode->total_width - 1

0x6010, mode->total_height - 1

0x6004, (mode->hsync_offset << 16) | (mode->real_active_width + mode->hsync_offset)

0x6014, (mode->vsync_offset << 16) | (mode->active_height * interlace_factor + mode->vsync_offset)

0x6030, mode->is_progressive ? 0 : 1

0x6120, mode->width

0x6134, mode->width

0x6138, mode->active_height * interlace_factor

0x6110, FB_BASE

0x6120, mode->width

0x2840, FB_BASE

0x2844, mode->width , I don't know what hardware is in charge on this memory addresses

0x6584, (mode->width << 16) | (mode->active_height * interlace_factor)

0x65e8, (mode->width >> 2) - 1

0x6528, mode->is_progressive ? 0 : 1

0x6584, (mode->width << 16) | (mode->height * interlace_factor)

0x65e8, (mode->width / 4) - 1

0x6434, mode->width

0x6138, mode->height * interlace_factor