Il dom 31 dic 2023, 17:27 BALATON Zoltan <bala...@eik.bme.hu> ha scritto:

> >     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;
>
> Is it possible to do these checks once in vga.c and instead of changing
> the return value of the draw functions pass panning_buf as d if needed?
> Maybe that way the draw funcs could be left unchanged?
>

As of the previous patch it could, here however the logic for whether to
use the panning_buf depends on the drawing function; 8d2 is special and
different from the others.

I can remove the optimization, it's not super Important; but it's kind of
obvious to do it for the VGA 256-color modes, since they're the only ones
with the same bit alignment for all pixels.

Paolo


> Regards,
> BALATON Zoltan
>
>

Reply via email to