PB G3 で X を起動する際に、アクセラレーションのために -mach64 をつけることは知っていたが、色がなんとなく白っぽいのを回避するのに
$ startx -- -mach64 -nomacgamma
とするのだということを今頃になって知った。だいぶましになった。
おきまりの X のベンチマークテスト用のアプリケーション。JRPM より取ってきて、rebuild してみたが、何故かエンジンブローしている。
ソースを見ると、どうも良く理解できない部分があった。また、コンパイル時にタイプミスマッチの warning も出ていたので、以下のようなパッチをあてた。エンジンブローは直ったように見える(パッチの前ではウイジェットの width と height がめちゃくちゃの値になって、それをもとに大きさを決めて描かれているコンロッドがクランクシャフトケースを突き破っていたと思われる)。
----<ここから>----
--- xengine-j/xengine.c.ORIG Sat Jul 10 05:08:34
1999
+++ xengine-j/xengine.c Sat Jul 10 16:55:34 1999
@@ -47,7 +47,7 @@
Arg
args[10];
XtTranslations
newTranslations;
static XtActionsRec
redrawActions[] = {
-
{"expose", (XtCallbackProc) redraw_callback},
+
{"expose", (XtActionProc) redraw_callback},
};
static char
*overrideTranslations =
@@ -165,7 +165,7 @@
enginePixmap = XCreatePixmap(XtDisplay(engine),
XtWindow(engine), width, height, DefaultDepthOfScreen(XtScreen(engine)));
/* Interval timer start
*/
- XtAddTimeOut(1, Cycle, NULL);
+ XtAddTimeOut(1, (XtTimerCallbackProc)Cycle,
NULL);
XtMainLoop();
}
@@ -179,10 +179,9 @@
{
Arg
args[10];
-
- XtSetArg(args[0], XtNwidth,
&width);
- XtSetArg(args[1], XtNheight,
&height);
- XtGetValues(w, args, 2);
+ XtSetArg(args[0], XtNwidth,
(XtArgVal)width);
+ XtSetArg(args[1], XtNheight,
(XtArgVal)height);
+ XtSetValues(w,
args, 2);
XFreePixmap(XtDisplay(engine),
enginePixmap);
enginePixmap = XCreatePixmap(XtDisplay(engine),
XtWindow(engine), width, height, DefaultDepthOfScreen(XtScreen(engine)));
@@ -217,7 +216,7 @@
mean = 0.0;
}
mean += DrawEngine();
- XtAddTimeOut(1, Cycle, NULL);
+ XtAddTimeOut(1, (XtTimerCallbackProc)Cycle,
NULL);
}
double
----<ここまで>----
パッチのあたった RPM は
xengine-1.10pl1-4a.ppc.rpm
xengine-1.10pl1-4a.src.rpm
PB G3 では、後ろで何が走っているかに依るが 1000~1600 rpm くらい。8115/100 は、これはビデオが特に遅く、200 rpm くらいで、これぐらいになると、xengine の回転や、ガスの爆発がしっかり見て取れて、かえって楽しい。速すぎると何が起こっているのか分からない。ちなみに HP/C100 では、400 rpm くらい。
-mach64 の有無で顕著な差が出ないのは何故だろう?
回路計算の定番ソフト Spice は、最新版(3f5sfix)では、今までのパッチが全てあたっており、全くすんなりと rpm になった。
spice-3f5sfix-1a.ppc.rpm
spice-3f5sfix-1a.src.rpm
ただし、最新版には例題が含まれていない。