Jump to content
Noel Bennett

Linux: Critical Error: Requested GraphicsMode Not Available

Recommended Posts

I do believe I've got a bit of an issue, likely due to my Mono install. Upon launching VintageStory, I receive the following: "Critical Error: Requested GraphicsMode not available." Installation log looks clean. Both logs are attached. Any thoughts?

System:

O/S: Gentoo, rolling release, updated within the last month.

Mono: version 4.4.1.0

Video Card: NVidia GeForce GTX 970 Ti.

Video Drivers: NVidia Proprietary 387.22

 

VintagestoryCrash.txt

install.log

Share this post


Link to post
Share on other sites

Hm, thats a crash caused by the 3rd party library OpenTK. The game requests a 24 bit graphics mode, and OpenTK fails to get one. Issue with the graphics driver perhaps? I would try another graphics driver or update the existing one.

Share this post


Link to post
Share on other sites

I'll try that, and report back. OpenGL (X-Plane 11) is working plenty fine, but it's very possible another API isn't playing nicely.

Update #1: NVidia-Drivers-390.25 didn't affect the issue. I'll do some digging and see what I can find. 

Update #2: Aha! Running it on the console gives me:

19:03:05 [Client Notification] Client logger started.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
2/26/2018 7:03:06 PM: Critical error occurred

And then the rehash about the OpenTK errors. Gives me something more to work off of...

Update #3: Switching over to the software renderer for OpenGL (eselect opengl set xorg-x11), then logging off and back on allows the game to launch at least. Can't connect to the authorization server, but it's just as well... I don't expect performance to be all that great. Switching back to  NVidia causes the problem to reoccur, after logging back off and on again. It's certainly not happy with NVidia.

Update #4: Oddly enough, it'll launch after eselect opengl set nvidia and using wine instead of mono. Still can't connect to the authentication server.

Edited by Noel Bennett

Share this post


Link to post
Share on other sites

There was another user on discord that reported connectivity issues with the auth server on linux. It seems like some systems have issues with opening up an secure connection to the auth server. Make sure https://auth.vintagestory.at/ is reachable for you and a secure connection could be established. If it worked out it should show an empty page.

On the gfx card issues, would you like to submit a ticket on the opentk issue tracker (https://github.com/opentk/opentk/issues)? If we can get it fixed somehow future users would have an easier time to get the game working :-)

Share this post


Link to post
Share on other sites

I'm able to reach that authentication server in a browser. Just shows an empty page, no error.

I think I'm going to plug away at the graphics issue for a bit... it may not be an opentk issue, if Wine is launching it properly. I'm wondering if Mono is linking properly to libGL on my system. I'll open a bug on their tracker if I hit rock bottom and run out of ideas.

Thanks!

Share this post


Link to post
Share on other sites

Running Internet Explorer through wine (wine iexplore.exe) allowed me to browse to https://auth.vintagestory.at/ without error. Shows only a blank screen.

Just out of curiosity... which version of Mono are you preferring? I was running 5.4.1.6 (masked unstable). Tried reverting back to 4.4.1.0 (stable), but it's throwing all sorts of errors during the build process. I'll be working on that for a bit.

My notes (might be of interest to someone, but mainly for myself):

  • Installing 4.4.1.0 without first removing 5.4.1.6 leads to a lot of odd build errors that Google knows nothing about.
  • Removing 5.4.1.6, then installing 4.4.1.0 with 64 and 32 bit support leads to more build errors. Gotta file bug reports on these.
  • I was able to revert back to 4.4.1.0 by removing 5.4.1.6 first, then installing it without the abi_x86_32 flag, allowed it to build correctly. Still throwing fits about the graphics mode not existing. 


I'm guessing from the output of file Vintagestory.exe  (Vintagestory.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows), that the executable's 32 bit... which means I need to figure out how to get Mono to build with that abi_x86_32 flag.

Edited by Noel Bennett

Share this post


Link to post
Share on other sites

Wait. Are you running Vintage Story through Wine or just through Mono?
Do not use Wine. Vintage Story works "natively" on Linux using Mono, since it uses OpenGL.

If this is not what you're doing, I don't think 32/64 bit has anything to do with this. The error is unlikely to come from Mono itself but from the graphics lib the game is using or your graphics driver. Update  back to Mono 5.4 or even later, if you can. I'm running 5.8 without a problem. Have you considered using open source drivers?

Share this post


Link to post
Share on other sites

Mono, initially. The wine bit was just as a test... a "Hey, let's throw something at it and see if it sticks" test.
 

Looks like the dotnet overlay has an ebuild for 5.9.0.398. I'll give that a go, with 32 bit support as well.

Can't say I've considered open source drivers, either. My other hobby is flight simulation, specifically X-Plane. From the general reputation open source drivers have regarding 3D support, I'm not optimistic regarding performance within XP.

Sources for 5.9.0398 aren't available via http://download.mono-project.com/sources/mono/ . I'm not brave enough for the nightly build, so I'll give 5.8.0.22 a try.

Edited by Noel Bennett

Share this post


Link to post
Share on other sites

Strange. It should work also with Mono 4.4. The binary can run both as 32bit or 64bit application. It's dynamically determined by the runtime. Other idea, what if you get Ubuntu on a flash drive and boot it without installing, perhaps there Vintage Story works?

Thanks for reporting.

Share this post


Link to post
Share on other sites

I believe I'm having the same problem.

14:59:22 [Client Notification] Client logger started.
14:59:22 [Client Notification] Game Version:
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  153 (GLX)
  Minor opcode of failed request:  34 ()
  Serial number of failed request:  87
  Current serial number in output stream:  85


NVIDIA proprietary drivers on Gentoo.  I do a lot of OpenGL development on this machine, so I'm 100% sure that the drivers are otherwise working.

I'm happy to help with any debugging you may want.

Edited by Eloraam

Share this post


Link to post
Share on other sites

A little strace magic and I was able to determine the problem: a simple library path issue.  Vintagestory is unconditionally trying to use /usr/lib/libGL.so.1, but it checks for Lib/libGL.so.1 first.  Gentoo installs the NVIDIA drivers in /usr/lib64/opengl/nvidia/lib, so all I had to do was create a symlink in Vintagestory's Lib directory.

Now I'm getting "Unable to connect to auth server :(".

  • Thanks 1

Share this post


Link to post
Share on other sites

The last time I got this connect issue was when I tried to install/run VS with wine (this was version 1.0.2 - there was no installation tarball at this time). I never had this issue with mono. Which mono version do you have installed?

Edited by skol

Share this post


Link to post
Share on other sites

I've solved that one too!  It turns out that Mono in Gentoo ships without any root certificates.  All you have to do, if you're also a Gentoo user, is run this command as root:

cert-sync /etc/ssl/certs/ca-certificates.crt

You should probably update the ca-certificates package before you do that.

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites
5 hours ago, Eloraam said:

NVIDIA proprietary drivers on Gentoo.  I do a lot of OpenGL development on this machine, so I'm 100% sure that the drivers are otherwise working.

[...]

A little strace magic and I was able to determine the problem: a simple library path issue.  Vintagestory is unconditionally trying to use /usr/lib/libGL.so.1, but it checks for Lib/libGL.so.1 first.  Gentoo installs the NVIDIA drivers in /usr/lib64/opengl/nvidia/lib, so all I had to do was create a symlink in Vintagestory's Lib directory. 

The joys of proprietary drivers! Shouldn't the driver be symlinked in the first place or how else should it discover it? I suppose this should be reported to OpenTK as well?

Share this post


Link to post
Share on other sites

The root certicates were also the root cause for the connect issue with wine. In Ubuntu, mono comes with certificates.

Good to know how to handle this in Gentoo!

Edited by skol

Share this post


Link to post
Share on other sites
41 minutes ago, copygirl said:

The joys of proprietary drivers! Shouldn't the driver be symlinked in the first place or how else should it discover it? I suppose this should be reported to OpenTK as well? 

No, this is definitely an OpenTK issue.  ld.so.conf is correctly configured to search the NV driver directories first.  OpenTK is doing its own thing and pulling up the Mesa library instead.

The certificate issue, well, that's 100% Gentoo's fault.  But at least there's a workaround.

Share this post


Link to post
Share on other sites
On 6/10/2018 at 3:02 AM, Eloraam said:

No, this is definitely an OpenTK issue.  ld.so.conf is correctly configured to search the NV driver directories first.  OpenTK is doing its own thing and pulling up the Mesa library instead.

Got a response from the guys working on OpenTK:

Quote

I don't think we can differentiate between different distros like this. In our case, we're relying on Mono's DllImport attribute to load the OpenGL library, and we are not looking in any particular directories - all we're doing is passing in the name of the library (libGL.so.1, in this case) and letting Mono resolve the rest.

If this isn't an issue with Gentoo, it's an issue with Mono.

 

Share this post


Link to post
Share on other sites

@Tyron Like they said it's also likely that it's an issue with Mono. Like, if DllImport doesn't respect "ld.so.conf".

@Eloraam Would it be possible for you to try with an even more recent version of Mono? Such as 5.12?

Share this post


Link to post
Share on other sites

Gentoo doesn't really have versions, per se.  It's a continuously updated distribution with a system called 'portage' that builds packages on the user's system.

If they're just using DllImport, then yes, that does sound like a Mono issue.  I wonder why I've never seen that before with other C#/OpenGL things?  Several Zachtronics games use that combination and work fine.

Mono 5.4.1.6 is the most recent ebuild, though.  Upgrading to a more recent version would be... a bit more difficult.  I'll check for an overlay.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.