Implement dirty updating on Banshee 16bpp tiled modes
This commit is contained in:
parent
e761045e40
commit
3e5e519d10
1 changed files with 20 additions and 11 deletions
|
|
@ -292,25 +292,34 @@ static void banshee_render_16bpp_tiled(svga_t *svga)
|
||||||
int offset = 32;
|
int offset = 32;
|
||||||
uint32_t *p = &((uint32_t *)buffer32->line[svga->displine])[offset];
|
uint32_t *p = &((uint32_t *)buffer32->line[svga->displine])[offset];
|
||||||
uint32_t addr = banshee->desktop_addr + (banshee->desktop_y & 31) * 128 + ((banshee->desktop_y >> 5) * banshee->desktop_stride_tiled);
|
uint32_t addr = banshee->desktop_addr + (banshee->desktop_y & 31) * 128 + ((banshee->desktop_y >> 5) * banshee->desktop_stride_tiled);
|
||||||
|
int drawn = 0;
|
||||||
if (svga->firstline_draw == 2000)
|
|
||||||
svga->firstline_draw = svga->displine;
|
|
||||||
svga->lastline_draw = svga->displine;
|
|
||||||
|
|
||||||
for (x = 0; x <= svga->hdisp; x += 64)
|
for (x = 0; x <= svga->hdisp; x += 64)
|
||||||
{
|
{
|
||||||
int xx;
|
if (svga->hwcursor_on || svga->overlay_on)
|
||||||
|
svga->changedvram[addr >> 12] = 2;
|
||||||
for (xx = 0; xx < 64; xx += 2)
|
if (svga->changedvram[addr >> 12] || svga->fullchange)
|
||||||
{
|
{
|
||||||
uint32_t dat = *(uint32_t *)(&svga->vram[(addr + (xx << 1)) & svga->vram_display_mask]);
|
uint16_t *vram_p = (uint16_t *)&svga->vram[addr & svga->vram_display_mask];
|
||||||
*p++ = video_16to32[dat & 0xffff];
|
int xx;
|
||||||
*p++ = video_16to32[dat >> 16];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
for (xx = 0; xx < 64; xx++)
|
||||||
|
*p++ = video_16to32[*vram_p++];
|
||||||
|
|
||||||
|
drawn = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
p += 64;
|
||||||
addr += 128*32;
|
addr += 128*32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (drawn)
|
||||||
|
{
|
||||||
|
if (svga->firstline_draw == 2000)
|
||||||
|
svga->firstline_draw = svga->displine;
|
||||||
|
svga->lastline_draw = svga->displine;
|
||||||
|
}
|
||||||
|
|
||||||
banshee->desktop_y++;
|
banshee->desktop_y++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue