Index: [thread] [date] [subject] [author]
  From: WolfWings ShadowFlight <wolfwings@lightspeed.net>
  To  : ggi-develop@eskimo.com
  Date: Wed, 5 Aug 1998 15:17:29 -0700 (PDT)

Re: ggiGetPixelFormat and proposed new DirectBuffer scheme

On Wed, 5 Aug 1998, Marcus Sundberg wrote:

>Btw, doesn't many processors have an instruction to do byte
>swapping? In that case I suggest we add some byte swapping
>macros to the API, which will use inline-assembly on supported
>platforms.

486 and up have a 32-bit byte-swap instruction, named, what else, BSWAP
:-) Takes 1 cycle on a 486, and I believe pairs on everything after that,
but I could be wrong, as I haven't been able to find _any_ clock-cycle
count listings for anything beyond a 486, which is really irksome when one
has no clue how fast the MMX instructions actually are and such.

On 386, the fastest way is a trio of bit-shifts, I believe.
ror ax, 8
ror eax, 16
ror ax, 8

Now, the problem with Linux: Is there a symbol defined so we can
differentiate between being compiled on a 386, or a 486+? If not, the
above macro is 6x slower on a 486, and many, many times slower as it won't
be pairing too nicely unless the compiler is willing to play
instruction-shuffler with inline assembly macro's too. Does GCC or any of
it's derivitaves do that?

>3,5,6 and 7 bit modes should definitely be unpacked, because
>I've never heard of any HW that supports such modes with a packed
>chunky buffer. :)

I'm _so_ tempted to point out VGA text mode, but I'll be nice today. ;-)

>For the other modes I suggest we have a GGI_PF_PACKED flag that
>indicate that _aligned_ buffers uses packed format.
>After all, <8 bit modes are almost only used on old hardware
>where speed is always an issue.

>For Get/Put buffers I think it makes most sense to use chunky
>pixels even if the HW is planar, as it will allow applications
>to run everywhere without needing to now anything about planar
>modes. There should be a planar extension anyway supporting
>things like Get/PutPlane, ScrollPlane and other things that
>don't make sense on non-planar HW.

I'm personally of the opinion that said planar functions should work on
non-planar HW as well, if the non-planar functions will work on planar HW.

Then again, I'm an emulation techie, and you'd be _really_ surprised just
how many (All 2D games I've checked actually, including _all_ the Capcom
and SNK NeoGeo games) use planar graphics chips and 16-color palette-
mapped graphics. Yes, even Marvel vs. Capcom is 16-color planar sprites.
             _
     _     _|_  WolfWings ShadowFlight
| | | | | | | | wolfwings@lightspeed.net
| | | | | | | | "Love is a bird,
|_|_| |_|_| | |  She needs to fly...
 _           /   Let all the hurt,
 \-.______,-'    Inside of you die..." - Madonna, Frozen

Index: [thread] [date] [subject] [author]