タイトルJava Watch on the X》5 _ ハードウエアアクセラレータをチェック(1)-1カテゴリーJava, Java Watch on the X
作成日2002/3/5 19:15:18作成者新居雅行
   この記事のPDFファイル(672KB)は以下のアドレスにあります。
   ダウンロードには、MDOnlineのアカウントが必要です。
   pdfs/MDOnline020016.pdf
 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Mac OS XのJava 1.3.1 Update 1が、2002年2月にリリースされた。いくつかのアップデート機能があるが、その中の1つに、ハードウエアアクセラレータによるSwingアプリケーションの高速化がある。アクセラレーションを有効にする方法の解説と、加えて、グラフィックスを利用するようなサンプルプログラムを作ってベンチマークテストをしてみた結果を説明しよう。

――――Javaのアクセラレーション機能
Mac OS XはJava VMを搭載したことを大きな特徴としてプッシュしてはいるものの、残念ながら、日本のユーザに取っては、テキストフィールドがあるとアプリケーションの応答が極端に悪くなるといったことなどがあって、JavaすなわちSwingを使ったアプリケーション作成を本格的に行うことはできなかった。しかしながら、Java 1.3.1 Update 1によって完全ではないとしても、十分に使えるレベルにはなりつつある。日本のプログラマにとっては、やっと様子見をしなくても済む段階まで来た。そのJava 1.3.1 Update 1での新機能がハードウエアアクセラレーションだ。実際にはそれよりも前から機能自体は組み込まれていた。これまでは、「デベロッパ向けのプレビュー」という位置付けでもあり、そうした機能が今後利用できるという予告編のようなものであった。だが、Java 1.3.1 Update 1ではそれが正式な機能としてリストアップされたのである。
ハードウエアアクセラレーションは、Swingのさまざまな処理を、グラフィックスカードを直接利用して処理をすることで、アプリケーション全体の処理能力を高めようというものだ。Javaの場合には、やはり仮想マシンベースであることや、AWTの上にSwingがあるといった多階層化されたフレームワークでもあり、速度的には確かに不利であることも言えるだろう。そこで、Swingの処理を、いわば、グラフィックスのハードウエアを直接利用することで高速化を試みるのである。
ただ、それでは、実際にどういう処理がアクセラレートされるのかといった情報は今のところ得られていない。たとえば、処理のどの部分に高速化がかかるのかや、さらにはAWTの処理まで高速化はあるのかどうかといったことが一切分からない。Java 1.3.1 Update 1のドキュメントでは、Swingのグラフィックス呼び出しがハードウエアを直接利用するとしているという記述しか見られないのである。だから、逆に、この機能をうまく引き出すということや、この機能が適合する処理はどんなものがあるかといったことも判断しようがない。
さらに、ハードウエアアクセラレーションは、グラフィックスカードないしはグラフィックスチップごとに、利用する/しないを指定する形式になっている。単純なオン/オフではなく、たとえばATI Rageでは利用しないけどGeForceでは利用するといった設定が可能になる。ただし、何でもいいからすべてオンにするということはできない。これについても、「効果のないカードでは指定をしないことを可能にする」という記述が見られるが、つまりは、アクセラレーションの効果がない場合が存在するということの裏返しではないかと想像される。

――――アクセラレーション機能の有効化
ハードウエアアクセラレーションを有効にするには、システムプロパティの

com.apple.hwaccellist

に対して、適用させたいグラフィックカードに対応したキーワードを設定する。カードごとに、以下のようなキーワードが定義されている。ここでも問題があって、機種ごとの対応カードについての情報がわずかしかないのである。

ビデオカード:キーワード
ATI Rage128(16MB):ATIRage128_16777216
ATI Radeon(16MB):ATIRadeon_16777216
ATI Rage128(32MB):ATIRage128_33554432
ATI Radeon(32MB):ATIRadeon_33554432
NVidia GeForce2(32MB):NVidia11_33554432
NVidia GeForce3(64MB):NVidia20_67108864
NVidia GeForce4(64MB):NVidia20_134217728
PowerBook G4など?:ATIRage128_8388608

Java 1.3.1 Update 1のドキュメントでは、一覧表が掲載されているが、たとえば、PowerBook G4 500MHz機の場合のキーワードが掲載されていないなど、実際に使えるキーワードの全てが掲載されているとは限らないようだ。
Appleは、現在起動しているマシンでのビデオカードについての情報を得る、hwaccel_info_toolというコマンドライン形式の診断ソフトを提供している。ただし、これについては、入手できるのは現段階ではADCメンバーだけなので、こうしたツールの存在があることだけをお伝えしておこう。たまたま、筆者がPowerBook G4を持っていたのでドキュメントのリストにあるもの以外のキーワードを見つけられたのかもしれないが、いずれにしても、どの機種ではどのキーワードを適用できるのかと言った一覧表は必要になるだろう。
実際にプロパティを設定するには、Project Builderで、パッケージ形式のアプリケーションを作成しているのであれば、「プロジェクト」メニューから「アクティブターゲットの編集」(Command+option+E)を選択し、「アプリケーション設定」のタブを選択する。そして、「詳細設定」ボタンをクリックして、設定項目の階層表示を行う。Java、Propertiesと階層をたどり、Propertiesの項目を選択して「下位に新規項目」というボタンをクリックする。

◇プロパティ設定を追加する
 

すると、新しい項目が作成されるので、左側は「com.apple.hwaccellist」と指定し、右側はグラフィックスカードに対応したキーワードを指定する。右側のキーワードは、カンマで区切って複数指定が可能だ。だから、すべてのマシンでアクセラレートの機能を有効にするには、すべてのキーワードをカンマで並べれば良い。

◇アクセラレートを有効にするプロパティを設定する
 

‥‥‥‥‥‥‥この項、続く‥‥‥‥‥‥‥[新居雅行]‥‥‥‥‥‥‥
関連リンク