vga: optimize horizontal pel panning in 256-color modes
Do not go through the panning buffer unless the address wraps in the middle of the line. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
973a724eb0
commit
4d6c310502
@ -265,6 +265,18 @@ static void *vga_draw_line8d2(VGACommonState *vga, uint8_t *d,
|
||||
|
||||
palette = vga->last_palette;
|
||||
hpel = (hpel >> 1) & 3;
|
||||
|
||||
/* For 256 color modes, we can adjust the source address and write directly
|
||||
* to the destination, even if horizontal pel panning is active. However,
|
||||
* the loop below assumes that the address does not wrap in the middle of a
|
||||
* plane. If that happens...
|
||||
*/
|
||||
if (addr + (width >> 3) * 4 < VGA_VRAM_SIZE) {
|
||||
addr += hpel * 4;
|
||||
hpel = 0;
|
||||
}
|
||||
|
||||
/* ... use the panning buffer as in planar modes. */
|
||||
if (hpel) {
|
||||
width += 8;
|
||||
d = vga->panning_buf;
|
||||
|
Loading…
Reference in New Issue
Block a user