packed時代のplaneテクその2

planeだと8ドット単位の処理が基本になる。それ以外だと両端と中央の処理を分けたり、シフトしたりと「複雑」になる。
packedだと1pixelに1回でアクセスできて楽、かというと、速度を考えると話はそこで終わらない。

例えば8bit/pixelで考える。フツーならbyte*で処理するところだ。
これを例えば32bit/4pixelと考えてuint32*(適宜読み替え)で処理する。
そーするとplaneと同じく複雑になるが、メモリアクセスが1/4になる。キャッシュしない(メモリアクセスの遅い)VRAMにおいては、この差は大きい。
トータルでは4倍-「複雑な処理部分」の速度だ.

全ての描画命令に「複雑な処理」をつけるのはウザいが、blitやfillなど多用されるものにつければ効果は大きい。

#OSカーネルの話と激しくズレてるが