Syntopia / Fragmentarium

Fragmentarium is a cross-platform application for exploring pixel based graphics on the GPU.
http://syntopia.github.com/Fragmentarium
523 stars 50 forks source link

Problem rendering mandelbulb (and others) - Ubuntu 12.04 - 2012 Mac Mini. #8

Open stuaxo opened 12 years ago

stuaxo commented 12 years ago

Hi, I seem to get an error trying to render the mandelbulb and others. The problem seems to be Could not create fragment shader: 0:351(7): error: Illegal use of reserved word `half' Which appears in a lot of the examples I try.

Cheers

Full log:

Parse: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Historical 3D Fractals/Mandelbulb.frag Including file: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/DE-Raytracer.frag Including file: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/3D.frag Including buffershader: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/BufferShader.frag Parse: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/BufferShader.frag Including file: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/MathUtils.frag Mandelbulb Distance Estimator Simple 3D Setup 5 locked variables: NormalBackStep,HardShadow,Reflection,DebugSun,EnableFloor Camera: Use W/S to fly. 1/3 adjusts speed. Q/E rolls. Click on 3D window for key focus. See Help Menu for more. Could not create fragment shader: 0:351(7): error: Illegal use of reserved word `half' 0:351(7): error: syntax error, unexpected ERROR_TOK, expecting ',' or ';'

Failed to compile script (70 ms). This video card supports: OpenGL1.1, OpenGL1.2, OpenGL1.3, OpenGL1.4, OpenGL1.5, OpenGL2.0, OpenGL2.1, OpenGL3.0

Syntopia commented 12 years ago

Yes, I corrected it in the Windows build, but forgot to check in my changes. Could you try again, and let me know if there are other GLSL errors?

stuaxo commented 12 years ago

OK, some new ones; (only tested the mandelbulb so far):

Parse: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Historical 3D Fractals/Mandelbulb.frag Including file: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/DE-Raytracer.frag Including file: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/3D.frag Including buffershader: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/BufferShader.frag Parse: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/BufferShader.frag Including file: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Examples/Include/MathUtils.frag Mandelbulb Distance Estimator Simple 3D Setup 5 locked variables: NormalBackStep,HardShadow,Reflection,DebugSun,EnableFloor Camera: Use W/S to fly. 1/3 adjusts speed. Q/E rolls. Click on 3D window for key focus. See Help Menu for more. Could not create fragment shader: 0:87(13): error: in' qualifier in declaration offrom' only valid for function parameters in (null). 0:87(13): error: in' qualifier in declaration ofdir' only valid for function parameters in (null). 0:87(13): error: in' qualifier in declaration ofdirDx' only valid for function parameters in (null). 0:87(13): error: in' qualifier in declaration ofdirDy' only valid for function parameters in (null). 0:88(14): error: in' qualifier in declaration ofcoord' only valid for function parameters in (null). 0:89(14): error: in' qualifier in declaration ofzoom' only valid for function parameters in (null).

Failed to compile script (55 ms).

Syntopia commented 12 years ago

OK - I have changed them back into varying's :-) Apparently, Nvidia's driver is quite liberal wrt the standard. Could you try again?

stuaxo commented 12 years ago

Think I'm getting the crashing issue now, starting it just gets..

$ ./Fragmentarium Segmentation fault (core dumped)

This is on the same computer it worked on before; I haven't rebooted it overnight. I've tried a clean rebuild with the same result.

Syntopia commented 12 years ago

Oh, I see now you are on Linux on Mac. Which GPU/Driver are you using? Could you try running with gdb: I think all that is needed it something like 'gdb Fragmentarium', 'run', and after crashing, 'bt'?

stuaxo commented 12 years ago

Looks like it's intel i915 .. . so might explain some things; (Assumed this computer would have something a bit more)..

stu@stuart-Macmini ~/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium (master) $ gdb Fragmentarium GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: http://bugs.launchpad.net/gdb-linaro/... Reading symbols from /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Fragmentarium...(no debugging symbols found)...done. (gdb) run Starting program: /home/stu/projects/external/Fragmentarium/Fragmentarium-Source/Build - Linux/Fragmentarium/Fragmentarium [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1". [New Thread 0xb409bb40 (LWP 28638)] [New Thread 0xb36ffb40 (LWP 28639)] [New Thread 0xb2cffb40 (LWP 28640)]

Program received signal SIGSEGV, Segmentation fault. 0xb19b18e3 in fs_visitor::visit(irloop) () from /usr/lib/i386-linux-gnu/dri/i965_dri.so (gdb) bt

0 0xb19b18e3 in fs_visitor::visit(irloop) ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

1 0xb17acc27 in ir_loop::accept(irvisitor) ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

2 0xb19bd276 in fs_visitor::visit(irif) ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

3 0xb17acc07 in ir_if::accept(irvisitor) ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

4 0xb19bd276 in fs_visitor::visit(irif) ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

5 0xb17acc07 in ir_if::accept(irvisitor) ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

6 0xb19b2856 in fs_visitor::visit(irfunction) ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

7 0xb17acbd7 in ir_function::accept(irvisitor) ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

8 0xb19ac190 in fs_visitor::run() ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

9 0xb19ac40c in brw_wm_fs_emit ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

10 0xb198a8a5 in do_wm_prog () from /usr/lib/i386-linux-gnu/dri/i965_dri.so

---Type to continue, or q to quit---

11 0xb198b40a in ?? () from /usr/lib/i386-linux-gnu/dri/i965_dri.so

12 0xb198070f in brw_upload_state ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

13 0xb196b3af in brw_draw_prims ()

from /usr/lib/i386-linux-gnu/dri/i965_dri.so

14 0xb16c7d54 in vbo_exec_vtx_flush ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

15 0xb16bcef7 in ?? () from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

16 0xb16c530f in vbo_exec_FlushVertices ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

17 0xb15ea3d1 in _mesa_finish ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

18 0xb15eafb8 in _mesa_Finish ()

from /usr/lib/i386-linux-gnu/libdricore8.1.0.so.1

19 0x08069f09 in Fragmentarium::GUI::DisplayWidget::drawFragmentProgram(int, int) ()

20 0x0806a1a1 in Fragmentarium::GUI::DisplayWidget::drawToFrameBufferObject()

()

21 0x0806a64b in Fragmentarium::GUI::DisplayWidget::paintGL() ()

22 0xb7e82c43 in QGLWidget::glDraw() ()

from /usr/lib/i386-linux-gnu/libQtOpenGL.so.4 ---Type to continue, or q to quit---

23 0xb7e8253c in QGLWidget::paintEvent(QPaintEvent_) ()

from /usr/lib/i386-linux-gnu/libQtOpenGL.so.4

24 0xb7520152 in QWidget::event(QEvent_) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

25 0xb7e84f69 in QGLWidget::event(QEvent_) ()

from /usr/lib/i386-linux-gnu/libQtOpenGL.so.4

26 0xb74c5ed4 in QApplicationPrivate::notifyhelper(QObject, QEvent_) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

27 0xb74cb3a2 in QApplication::notify(QObject, QEvent) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

28 0xb722a97e in QCoreApplication::notifyInternal(QObject, QEvent) ()

from /usr/lib/i386-linux-gnu/libQtCore.so.4

29 0xb751bada in QWidgetPrivate::drawWidget(QPaintDevice, QRegion const&, QPoint const&, int, QPainter, QWidgetBackingStore_) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

30 0xb770f2be in QWidgetPrivate::repaint_sys(QRegion const&) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

31 0xb7511980 in QWidgetPrivate::syncBackingStore() ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

32 0xb7520ae7 in QWidget::event(QEvent_) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4 ---Type to continue, or q to quit---

33 0xb7e84f69 in QGLWidget::event(QEvent_) ()

from /usr/lib/i386-linux-gnu/libQtOpenGL.so.4

34 0xb74c5ed4 in QApplicationPrivate::notifyhelper(QObject, QEvent_) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

35 0xb74cb3a2 in QApplication::notify(QObject, QEvent) ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

36 0xb722a97e in QCoreApplication::notifyInternal(QObject, QEvent) ()

from /usr/lib/i386-linux-gnu/libQtCore.so.4

37 0xb722ead8 in QCoreApplicationPrivate::sendPostedEvents(QObject, int, QThreadData) () from /usr/lib/i386-linux-gnu/libQtCore.so.4

38 0xb722ee0c in QCoreApplication::sendPostedEvents(QObject_, int) ()

from /usr/lib/i386-linux-gnu/libQtCore.so.4

39 0xb725d494 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4

40 0xb6a5dd86 in g_main_context_dispatch ()

from /lib/i386-linux-gnu/libglib-2.0.so.0

41 0xb6a5e125 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0

42 0xb6a5e201 in g_main_context_iteration ()

from /lib/i386-linux-gnu/libglib-2.0.so.0

43 0xb725d887 in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/i386-linux-gnu/libQtCore.so.4

44 0xb757eaaa in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4

---Type to continue, or q to quit---

45 0xb722950d in QEventLoop::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/i386-linux-gnu/libQtCore.so.4

46 0xb72297a9 in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) ()

from /usr/lib/i386-linux-gnu/libQtCore.so.4

47 0xb722eeba in QCoreApplication::exec() ()

from /usr/lib/i386-linux-gnu/libQtCore.so.4

48 0xb74c3a74 in QApplication::exec() ()

from /usr/lib/i386-linux-gnu/libQtGui.so.4

49 0x0805909f in main ()

(gdb) (gdb) (gdb)

Syntopia commented 12 years ago

The 2012 Mac Mini's are (at least) Intel HD 3000, so the i965 driver is probably supporting many different Intel chips. Using Windows it is possible to run Fragmentarium on such a GPU, though performance is poor.

It crashes in 'i965_dri.so', so I have a feeling this is (another) Linux driver bug.

stuaxo commented 12 years ago

3D on linux still seems to be a nightmare; I tried on a different computer at home last night and realised that has intel + nvidia... getting that to come up defeated me*.

There's an older one around somewhere with ATI, which I can try, I seem to recall the problem " reserved word `half' being in a few examples; but always just assumed it was because the computer was too old.

I'll try and get some time to run it on there to root those out.

Syntopia commented 12 years ago

The 'half' issue is my fault - it is a reserved keyword, it is just that Nvidia's compiler allows it. ATI / Intel is less strict. It was used in the default raytracer (DE-Raytracer.frag), which means pretty much every 3D example in Fragmentarium. But it should be fixed now.

SA0TAY commented 11 years ago

I too experience a segmentation fault which seems to originate in 'i965_dri.so'. Any chance this issue could be pushed to the relevant folks, if it is known for a fact that it is the driver which is at fault?

bugs.freedesktop.org seems to be the relevant bug tracker. By any chance, could #54773 be related?

micahscopes commented 11 years ago

Pretty sure I'm getting this one too. I can run some of the 2d examples alright but not many others. I still gotta figure out where you guys got those error messages though! Still gotta read the documentation. I'm on Ubuntu 13.10. I'm gonna try and install proprietary Intel graphics drivers, even though they aren't supported. Maybe this could help?

stuaxo commented 11 years ago

Hi Tim, Try running it in gdb, then type 'run' (see my bug above).

Cheers S