goto TOP
IJG's JPEG Lib with x86 SIMD extensionを組込む
2006/01/21 初出
2006/01/25 jsimdcfg.incの生成方法を修正
2006/01/28 makefile.inの記述を一部修正
2006/01/29 makefile.inの記述を再修正
2006/02/08 宮坂氏の作成したFxへの適用パッチに関する記述を追加
宮坂氏がFirefoxへ組み込むためのパッチを作成して公開してくださいました。このパッチを使うとjsimdcfg.incの作成や、必要なファイルのコピーもできてしまうのでお勧めです。
宮坂さん、ありがとうございました!
以下は、個人的な資料として残しておきます。
宮坂賢氏の作成したIJG's JPEG software with x86 SIMD extensionをFirefoxに組み込むための手順を以下に書いておきます。このライブラリはx86 CPU専用なので他のCPUのbuildには適用できませんのでご注意あれ。
事前準備
- nasmの入手
- JPEG lib with SSEはアセンブラとしてnasmを使用していますので、まずはこれを入手する必要があります。NASMの公式サイトからwin32 binariesを入手して、インストールします。
- libraryの入手
- ソフトウェア工房αからライブラリを入手します。
ライブラリの準備
- jpeg libraryの解凍
- まずはライブラリを解凍します。とりあえず解凍先はmozilla/jpeg-6bxにでもしておきます。即mozilla/jpegに解凍しないでください。いろいろと手を加えなければならないので、上書きするとコンパイルできなくなります。
- jsimdcfg.incを作成
- まずはmozilla/jpeg-6bx/vc6proj/makecfg.dspを使ってjsimdcfg.incを作成します。これは作成するコンパイラ毎に作っておかねばなりません。makecfg.dspをmozilla/jpeg-6bxにコピーしてVisual Studioで読み込んでコンパイルします。するとmozilla/jpeg-6bx/Releaseにjsimdcfg.incが作成されますので、それをmozilla/jpeg-6bxにコピーしておきます。
あるいはこちらにシンプルなmakefileを作っておいたので、これで作成してください。
- 必要なファイルをmozilla/jpegにコピー&修正
- Firefoxで使っているjpeg libraryはちょっと手が入っているので、そのまま上書きというわけにはいきません。いくつかのファイルは手動で書き換えが必要となっています。
- 上書き・新規追加
- jccolor.c
jccolmmx.asm
jccolss2.asm
jcolsamp.h
jcolsamp.inc
jcdctmgr.c
jcomapi.c
jcsample.c
jcsammmx.asm
jcsamss2.asm
jdcoefct.c
jdcolor.c
jdcolmmx.asm
jdcolss2.asm
jdct.h
jdct.inc
jddctmgr.c
jdhuff.c
jdhuff.h
jdmerge.c
jdmermmx.asm
jdmerss2.asm
jdphuff.c
jdsample.c
jdsammmx.asm
jdsamss2.asm
jfdctint.asm
jfmmxint.asm
jfss2int.asm
jfdctfst.asm
jfmmxfst.asm
jfss2fst.asm
jfdctflt.asm
jf3dnflt.asm
jfsseflt.asm
jidctint.asm
jimmxint.asm
jiss2int.asm
jidctfst.asm
jimmxfst.asm
jiss2fst.asm
jidctflt.asm
ji3dnflt.asm
jisseflt.asm
jiss2flt.asm
jidctred.asm
jimmxred.asm
jiss2red.asm
jmemmgr.c
jpegint.h
jsimdw32.asm
jsimdcpu.asm
jsimdext.inc
jcqnt3dn.asm
jcqntflt.asm
jcqntint.asm
jcqntmmx.asm
jcqnts2f.asm
jcqnts2i.asm
jcqntsse.asm
jsimdcfg.inc
- 上書き(timestampの書換えをしておくと良い)
- jdapimin.c
jdatasrc.c
jsdatadst.c
jdmarker.c
- 手動で書き換え(宮坂氏のライブラリで追加定義されている部分を移植)
- jconfig.h
jmorecfg.h
jpeglib.h
- 削除(消さなくても問題はないですが)
- jfdctflt.c
jfdctfst.c
jfdctint.c
jidctflt.c
jidctfst.c
jidctint.c
jidctred.c
- makefile.inの修正
- 最後にmalefile.inを修正します。いらないファイルを消して、必要なファイルを追加します。ついでにアセンブラ部分に必要な設定も書き加える必要があります。書き換えが必要なファイル群の分もふくめて差分ファイルを置いておきます。
再訂正(1/29)! makefile.inのASFLAGSは
ASFLAGS = -fwin32 -dWIN32 -i$(topsrcdir)/jpeg/
に修正してください。上記差分ファイルは修正済みのものです。(thanks for 宮坂氏)
コンパイル
これで準備完了です。あとは普通にFirefoxをmakeしてください。jpegの高速化なのでFx自体の動作にはほとんど影響しませんが、jpeg画像が多いsiteなどの閲覧はかなりレスポンスが良くなると思います。
ちなみに私の環境(GeodeNX1750 1.4GHz, 512MB, GeForce5200, Win XP)でのjpegの展開速度はmmoy patchの物と比べてほぼ倍近くになってました。恐るべし。
goto TOP