Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

12045 Posts in 1593 Topics- by 593 Members - Latest Member: zhang

26. May 2013, 05:26:23 am
Xith3D CommunityXith3D InternalsDeveloper discussion (Moderators: Marvin Fröhlich, 'n ddrylliog)Workaround for ATI's and Intel's dirver bug (DisplayList VM-crash)
Pages: [1]
Print
Author Topic: Workaround for ATI's and Intel's dirver bug (DisplayList VM-crash)  (Read 4901 times)
Marvin Fröhlich
Xith Lord
Administrator
Guru
*****
Offline Offline

Posts: 4403


May the 4th, be with you...


View Profile
« on: 17. February 2008, 01:19:05 am »

With some great help of Andre Pohlmann I was able to locate the exact GL-command, that causes the VM-crash in ATI- and Intel machines. It is the glMultiTexCoord() call, which is buggy in these vendor's drivers.

Please update Xith3D from SVN and try the Q3FlightBenchmark. I have implemented a workaround, that doesn't use plain glBegin(), glVertex3f(), glBlaXf(), glEnd() calls, but VertexArrays. This is a little bit slower, because it needs additional expensive state changes, but should work and avoid the VM-crash.

No matter, if you have an NVIDIA card or not (which doesn't need the workaround), please tell me, what the following line dumps out:
Code:
System.out.println( canvas.getCanvasPeer().getOpenGLInfo().getVendor() );
This is the value, that I use to detect, if the workaround is necessary or not.
And he following line should dump false, if the workaround is being used:
Code:
System.out.println( canvas.getCanvasPeer().getOpenGLCapabilities().supportsPlainMultiTexturing() );

Marvin
Logged
Mancer
Enjoying the stay
*
Offline Offline

Posts: 68


View Profile
« Reply #1 on: 17. February 2008, 07:41:27 am »

Hi,

I don't have ATI card, but my results are:
Code:
System.out.println( canvas.getCanvasPeer().getOpenGLInfo().getVendor() );

NVIDIA Corporation

Code:
System.out.println( canvas.getCanvasPeer().getOpenGLCapabilities().supportsPlainMultiTexturing() );

true
Logged
Andre Pohlmann
Enjoying the stay
*
Offline Offline

Posts: 89


View Profile Email
« Reply #2 on: 17. February 2008, 01:48:23 pm »

Thanks for the flowers  Smiley ...
but you are the one working the whole night to solve it.

Most of the testcases seem to run now, but exactly the benchmark doesn't.
I'll send you the logs.

Regards

André
Logged
kukanani
Fierce Warrior
****
Offline Offline

Posts: 504


My game is coming along fairly smoothly...


View Profile WWW
« Reply #3 on: 17. February 2008, 02:08:27 pm »

I have an NVidia card, and I get "NVIDIA Corporation".
Logged

xith.setCoolnessLevel(10);
jMe.setCoolnessLevel(0);
xith.rock();
hawkwind
Getting respectable
***
Offline Offline

Posts: 365



View Profile Email
« Reply #4 on: 28. February 2008, 02:06:06 pm »

NVIDIA Corporation
true

I have a laptop 8800
Logged
Marvin Fröhlich
Xith Lord
Administrator
Guru
*****
Offline Offline

Posts: 4403


May the 4th, be with you...


View Profile
« Reply #5 on: 28. February 2008, 02:10:35 pm »

NVIDIA Corporation
true

I have a laptop 8800

Thanks. What about your old system with the ATI card? Would be very interesting, if it works on that, too.

Marvin
Logged
AotFSteven
developers
Enjoying the stay
***
Offline Offline

Posts: 63


View Profile
« Reply #6 on: 08. March 2008, 05:29:12 pm »

Here are the results from my Linux machine with a built in VIA card:
Code:
Mesa project: www.mesa3d.org
true

And on my Windows machine with an ATI card (RaedonX 300SE)
Code:
ATI Technologies Inc.
false

Also, I am sure this relates, but on my Windows machine there are demos that I can see and demos that I can see only certain things on.  Like the picking demos in all of them I only see the rotating wall texture I don't see the white box with the logo on it.  And in the Q3Benchmark I just get the dark gray screen.
Logged
Marvin Fröhlich
Xith Lord
Administrator
Guru
*****
Offline Offline

Posts: 4403


May the 4th, be with you...


View Profile
« Reply #7 on: 08. March 2008, 06:21:03 pm »

Well, I don't think, it's astonishing, that things aren't working properly, if no real OpenGL driver is being used. Are you really sure, that there's no better driver for your VIA card on Linux? At least I will add "mesa" to the list of String to check for. So the supportsPlainMultiTexturing() method should return false in the future and things will behave differently.

And of course some tests will work and some not, if not all tests work. Some tests simply don't use DisplayLists, which is only one example. The different tests are simply different Wink.

What about the DisplayLists using tests like e.g. the Q3FlightBenchmark for your second system with the ATI card on Windows? Does this work?

Marvin

PS: Thanks for the feedback, btw.
Logged
AotFSteven
developers
Enjoying the stay
***
Offline Offline

Posts: 63


View Profile
« Reply #8 on: 08. March 2008, 08:37:01 pm »

Well, I don't think, it's astonishing, that things aren't working properly, if no real OpenGL driver is being used. Are you really sure, that there's no better driver for your VIA card on Linux?

Well, I thought that I had the best driver selected, but apparently my machine was using the generic vesa driver.  I tried to change it to the VIA driver, but this screwed up my xserver and I had to go into my xorg.conf file and add in a bunch of stuff and I was never able to get it to work.  I found an openchrome driver that supports my graphics card, but the version was 0.2.xxx so I was a little skeptical and when I tried to run the Q3Benchmark I got a really weird error (I will post in a little bit I am on my Windows machine right now).  By the way, I am pretty new with Linux so I could be screwing something up I don't see what I could be messing up though.

What about the DisplayLists using tests like e.g. the Q3FlightBenchmark for your second system with the ATI card on Windows? Does this work?

On my windows machine I am not able to get the Q3FlightBenchmark to work I get the dark gray screen and the past three or so times that I have tried to run it I eventually get a JVM error the file with the error that Eclipse automatically created is attached.

PS: Thanks for the feedback, btw.

No problem, I'm glad to help in any way that I can.  And btw, good luck with your exam.

EDIT:
Here is the error that I get in the console on my Linux machine with the openchrome driver.

Code:
Initializing JOODE...ok
0000:   f0000001  00000300  f0000006  00000000
0010:   f000000b  00000000  f000000c  002802a0
0020:   f000000d  002802a0  f000000e  81940194
0030:   f0000002  00000000  f0000003  00000000
0040:   f0000004  0257031f  f0000000  f0002001
0050:   f000000b  00000000  f210f110  00010000
0060:   cccccccc  cccccccc  cccccccc  cccccccc
0070:   cccccccc  cccccccc  cccccccc  cccccccc
******************************************
fire_buffer: DRM_VIA_PCICMD returned -22

Sorry if this of much use, I am trying to find another driver so hopefully I can post some actually useful information Tongue.  But, regardless, I should have my new video card come Monday or Tuesday (fingers crossed) so at least I will be able to start working with Xith again.
« Last Edit: 08. March 2008, 08:49:17 pm by AotFSteven » Logged
tinsukE
Just dropped in

Offline Offline

Posts: 14


View Profile
« Reply #9 on: 18. March 2008, 01:00:46 am »

I have an onboard graphics chip and got this output:

Quote
Intel
false

Gotta say that I had to insert a Thread.sleep() with, at least, 50ms (after a InputAdapterRenderLoop begin()) to get the info without getting a NullPointerException. Sad, isn't it?

By default, the use display list flag is defaulted to true but dysplay lists doesn't work. =[
Logged
Marvin Fröhlich
Xith Lord
Administrator
Guru
*****
Offline Offline

Posts: 4403


May the 4th, be with you...


View Profile
« Reply #10 on: 18. March 2008, 10:47:02 am »

Gotta say that I had to insert a Thread.sleep() with, at least, 50ms (after a InputAdapterRenderLoop begin()) to get the info without getting a NullPointerException. Sad, isn't it?

Hmmm... You should have not problems dumping the info before the begin() method call. Nevertheless it should also work after it. Strange indeed.

By default, the use display list flag is defaulted to true but dysplay lists doesn't work. =[

Of course it defaults to true, since it should work on all systems. And the case, that it doesn't work is rarer than the case, that it doesn't. Basically it doesn't work on "uncommon" cards like onboard chips. But I have no idea, why. There's nothing strange or uncommon in the way, Xith uses DisplayLists Huh.

Marvin
Logged
Marvin Fröhlich
Xith Lord
Administrator
Guru
*****
Offline Offline

Posts: 4403


May the 4th, be with you...


View Profile
« Reply #11 on: 29. March 2008, 03:15:01 pm »

With some more help by synopia I was able to fix the ATI/Intel DisplayList-workaround. It whould actually work now.

Marvin
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic