-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Godot 2.0 does not run on Nvidia GeForce Go 7300 gfx card with nouveau drivers. #4079
Comments
Could you get a gdb backtrace of the segfault? Also, does the nouveau driver support OpenGL 2.1+ for your card? ( |
The binaries are compressed with I believe the syntax to uncompress is |
Binary that people can download is a release, so gdb gives only:
In pure Debian Testing I can't find gfxinfo tool. |
After decompressing the binary and running it, it still spits segmentation fault. |
Even without debugging symbols, I think you should be able to get a backtrace, it will just lack line numbers when mentioning the functions that lead to the crash. Release binaries are compiled as |
It's in mesa-utils: https://packages.debian.org/stretch/amd64/mesa-utils/filelist |
glxinfo | grep -i OpenGL So it's OpenGL ES 2.0. |
Ok, I'm not an expert on what exact GL API we need, but it looks like you're at the lower limit, so that might explain the issue. Did you have previous Godot versions running fine on this hardware with nouveau? Also to confirm if it's driver-related, could you try to build from source (either the 2.0 branch or the master branch, it wouldn't matter much) and see if you get the same issue? You can compile with |
I do run Godot on this laptop but always with proprietary drivers, so I expect it's nouveau. |
This report page shows that some GL features seem not to be supported by Gallium on NV46 (as of mesa 10.5.4): http://feedback.wildfiregames.com/report/opengl/device/Gallium%200.4%20on%20NV46 |
After running in gdb is shows only
That's not really helpful, does it?
Can I do anything else? |
The hint about So I guess you're stuck with the proprietary drivers :/ |
OK, thx for your help. |
To close this issue I just add, that after installing proprietary drivers Godot works like it should. |
Thanks for reporting back :) |
While nouveau may have any number of bugs, even if it implemented 0 of the functionality of GL 2.1, that's not something you could tell easily from the application. You're probably expecting something very specific to work, which is not required by the spec, and it's failing. For the recard, ARB_framebuffer_object and ARB_texture_rg are actually part of GL 3.0, not GL 2.1. NV4x should have all of the features of GL 2.1 supported, albeit with some nasty shortcomings that are pretty easy to hit. Those don't result in crashes though, just misrendering. I don't see any indication in this bug that there's an issue with nouveau's GL implementation, however. |
Thanks for the input @imirkin, I'll link it in the more general issue #1162 which is related to this one. Though #1162 is about not segfaulting when GL 2.1 features are missing, and this issue here seems to indicate that it crashes even though nouveau should support the necessary feature, so there's maybe a deeper issue in Godot's renderer code. |
And just to be clear, the nv30 driver (which implements GL support for nv3x and nv4x GPUs - the former are stuck on GL 1.5 due to lack of NPOT) is no work of perfection - it's entirely possible that features are misimplemented, and that crashes lurk within the driver. The nv50/nvc0 drivers are in much better shape wrt conformance. However scanning through this bug, I just don't see any specific indication of something going wrong in nouveau. Not to say it's not :) But a "well, it works on nvidia" comment generally just implies the application was developed against the nvidia driver, not that some other driver is non-conformant. |
GLEW only sets the glGenerateMipmap function pointer if GL_ARB_framebuffer_object is detected. So you should check if this extension is there before using the functions |
Perhaps worth noting is that nv4x does support EXT_framebuffer_object, which has a glGenerateMipmapEXT. The main distinction is that the ARB version allows attachments of different sizes. Probably a handful of other differences as well. |
For the record here is more relevant debug output:
|
sadly gdb only shows the entry point of the mesa library and not what glew has stored, they use strange symbol names. |
Some interesting info about a potentially related issue in #686 (comment) |
I think it's different... there it's about glGenerateMipmap being buggy in some blob drivers, while here it's about you calling glGenerateMipmap when it's not supported (it requires GL_ARB_framebuffer_object or GL 3.0). As an aside, your renderer is called "gles2", but from what I can tell it's creating regular desktop GL contexts (see platform/x11/context_gl_x11.cpp). If you really were creating a GLES context, even with gles2, you'd have glGenerateMipmap, glBindFramebuffer, etc. [But the GLEW that you're using would be none the wiser and fail pretty miserably - it also really expects a desktop context.] |
The GLES2 driver will be rewritten in 3.0, so maybe we can manage to get it to work then |
@reduz I am glad to report, that the issue is gone. It happened somewhere between 2.1-stable and 2.1.3. |
Operating system or device:
Freshly installed Debian 8 Testing also OpenSusye Tumbleweed (rolling release).
Core2Duo 64-bit laptop, nvidia gfx card (described in laptop specs as Nvidia GeForce Go 7300) with Nouveau display driver (no proprietary drivers installed).
Issue description (what happened, and what was expected):
Clicking Godot's icon outputs "Segmentation fault" in terminal and Godot not starting at all. You can see the the windows blink for a split of the second and that's it.
Steps to reproduce:
Install Debian 8 Testing (or OpenSuse Tumbleweed)
Download Godot files from the official site.
Unpack the files into one directory.
Click Godot_v2.0.1_stable_x11.64 binary or run it from the console.
The text was updated successfully, but these errors were encountered: