Time out error with r128 and some games
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
X.org xf86-video-r128 |
Won't Fix
|
Medium
|
|||
xorg (Ubuntu) |
Invalid
|
Low
|
Unassigned |
Bug Description
Binary package hint: xserver-
Some 3D games exit abruptly on an ATI Rage 128 Pro. Occurs at both 16 and 24bpp depths. Does not affect all games. Terminal message:
Error: Rage 128 timed out... exiting
Workarounds:
Chromium - none
Armagetron Advanced - Turn off floor and object textures.
Similar report on Mandriva:
http://
Possible freedesktop.org bug reference in Mandriva report:
http://
[Chromium]
ATTENTION!! Could not load alAttenuationScale
ERROR!! <> alGetError() = Invalid Value
alAttenuationScale == 0. Kludge it.
...startup complete.
high scores:
01/01/2000 nobody 250000
01/01/2000 nobody 200000
01/01/2000 nobody 150000
01/01/2000 nobody 100000
01/01/2000 nobody 50000
Error: Rage 128 timed out... exiting
[New Thread 0xb56cbb90 (LWP 5730)]
Program exited with code 0377.
[armagetronad
(gdb) run
Starting program: /usr/games/
[Thread debugging using libthread_db enabled]
[New Thread 0xb741a720 (LWP 5868)]
[New Thread 0xb72d1b90 (LWP 5871)]
[Thread 0xb72d1b90 (LWP 5871) exited]
[New Thread 0xb72d1b90 (LWP 5872)]
Error: Rage 128 timed out... exiting
[Thread 0xb72d1b90 (LWP 5872) exited]
Program exited with code 0377.
(gdb) backtrace full
No stack.
[lspci]
00:00.0 Host bridge [0600]: VIA Technologies, Inc. VT82C598 [Apollo MVP3] [1106:0598] (rev 04)
Subsystem: VIA Technologies, Inc. MVP3 ISA Bridge [1106:0000]
01:00.0 VGA compatible controller [0300]: ATI Technologies Inc Rage 128 PF/PRO AGP 4x TMDS [1002:5046] (prog-if 00 [VGA controller])
Subsystem: ATI Technologies Inc Unknown device [1002:0404]
Changed in xserver-xorg-video-ati: | |
importance: | Undecided → Medium |
status: | Incomplete → Triaged |
Changed in xserver-xorg-video-ati: | |
status: | Incomplete → Triaged |
Changed in xserver-xorg-video-ati: | |
assignee: | nobody → bryceharrington |
status: | Incomplete → Triaged |
Changed in xserver-xorg-video-r128: | |
status: | New → Confirmed |
description: | updated |
description: | updated |
Changed in xserver-xorg-video-r128: | |
status: | Unknown → Confirmed |
description: | updated |
Changed in xserver-xorg-video-r128: | |
importance: | Unknown → Medium |
Changed in xserver-xorg-video-r128: | |
importance: | Medium → Unknown |
Changed in xserver-xorg-video-r128: | |
importance: | Unknown → Medium |
Changed in xserver-xorg-video-r128: | |
status: | Confirmed → Won't Fix |
Changed in xorg (Ubuntu): | |
status: | Incomplete → Invalid |
When I'm running some game (in this case Paintball2 (it is 3D Locked( r128ContextPtr rmesa )
FirstPersonShooter based on Quake2 engine)) and go to some very "hard-
renderable" (there is very low fps) place (in that game), it quits with error
"Error: Rage 128 timed out... exiting".
I found out that this error is in r128_ioctl.c file in function:
void r128WaitForIdle
So i did some changes to see what is wrong and edited code a little:
do {
i = 0;
do {
ret = drmCommandNone( fd, DRM_R128_CCE_IDLE );
+ fprintf( stderr, "ret=%d, i=%d, to=%d\n" , ret, i, to);
+ if (ret) DO_USLEEP( 100 );
- } while ( ret && errno == EBUSY && i++ < R128_IDLE_RETRY );
+ } while ( ret && i++ < R128_IDLE_RETRY );
} while ( ( ret == -EBUSY ) && ( to++ < R128_TIMEOUT ) );
if ( ret < 0 ) { CCE_RESET) ;
+ fprintf( stderr, "(ret=%d, i=%d, to=%d, errno=%d)\n" , ret, i, to, errno);
drmCommandNone( fd, DRM_R128_
And when I run the game and go around the level looking on the wall everything
if OK, it prints out:
ret=0, i=0, to=0
(with every frame, I think)
So IDLE call is successful instantly (in the first iteration).
But when I look's on some "hard-to-render" place (many polygons or something),
game hangs and it prints out:
ret=-22, i=0, to=0
ret=-22, i=1, to=0
ret=-22, i=2, to=0
...
ret=-22, i=32, to=0
(ret=-22, i=33, to=0, errno=22)
Error: Rage 128 timed out... exiting
Is seems that something causes the IDLE call can't be done successful, anymore.
Also I tried to add line with DO_USLEEP(500000), but it didn't help.
Error number 22 is EINVAL (invalid argument) and is thrown when ioctl's
"request" or "argp" arguments are not valid.
It should throw error 16 (busy) at most...
I'm not so expert in Mesa's DRI and DRM code to find the problem.
(ps. this problem I had with some other games and with Blender(3d modeling).
and some games eg. Quake3Arena doesn't do this problem...
maybe it occurs only when rendered scene is very very full of polygons...
win32 version of Paintball2 doesn't hangs in this scenes but have big spf
(seconds per frame))
Thank your for helping.