ClearVolume / mpicbg-knip-clearvolume

org.mpicbg.knip.clearvolume
2 stars 2 forks source link

RDP support #12

Closed maierl closed 9 years ago

maierl commented 9 years ago

When I try to use ClearVolume on Knime or Fiji with an RDP connection, I get a rather long list of errors. As far as I understand it, ClearVolume or OpenGL does not detect the graphics card correctly anymore (see below).

Interestingly, when I create a rendering before connecting via RDP, I can still see and move it with an RDP connection. In Fiji, I can also create new renderings then, whereas new Knime views crashe in that case.

---Registering Weka Editors---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further detail
s.
Jun 23, 2015 1:39:24 PM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(...) returned error code 5.
--== GET VIEW COMPONENT ==--
--== UPDATE COMPONENT ==--
Jun 23, 2015 1:39:35 PM org.bridj.BridJ log
INFO: Library not found : atiocl64
Jun 23, 2015 1:39:35 PM org.bridj.BridJ log
INFO: Library not found : amdocl64
Jun 23, 2015 1:39:35 PM org.bridj.BridJ log
INFO: Library not found : atiocl32
Jun 23, 2015 1:39:35 PM org.bridj.BridJ log
INFO: Library not found : atiocl
Jun 23, 2015 1:39:35 PM org.bridj.BridJ log
INFO: Library not found : amdocl32
Jun 23, 2015 1:39:35 PM org.bridj.BridJ log
INFO: Library not found : amdocl
java.lang.ExceptionInInitializerError
        at clearvolume.renderer.opencl.OpenCLAvailability.isOpenCLAvailable(Open
CLAvailability.java:9)
        at clearvolume.renderer.factory.ClearVolumeRendererFactory.newOpenCLRend
erer(ClearVolumeRendererFactory.java:252)
        at de.mpicbg.jug.clearvolume.ImgLib2ClearVolume.initClearVolumeUnsignedS
hortArrayImg(ImgLib2ClearVolume.java:249)
        at de.mpicbg.jug.clearvolume.ImgLib2ClearVolume.initRealImgs(ImgLib2Clea
rVolume.java:418)
        at de.mpicbg.jug.clearvolume.gui.ClearVolumeManager.run(ClearVolumeManag
er.java:156)
        at de.mpicbg.jug.clearvolume.gui.GenericClearVolumeGui.launchClearVolume
Manager(GenericClearVolumeGui.java:208)
        at de.mpicbg.jug.clearvolume.gui.GenericClearVolumeGui.<init>(GenericCle
arVolumeGui.java:135)
        at de.mpicbg.knime.ip.clearvolume.base.ClearVolumeTableCellView$1.run(Cl
earVolumeTableCellView.java:109)
        at de.mpicbg.knime.ip.clearvolume.base.ClearVolumeTableCellView.updateCo
mponent(ClearVolumeTableCellView.java:120)
        at org.knime.knip.base.nodes.view.TableCellViewNodeView.tabSelectionChan
ged(TableCellViewNodeView.java:500)
        at org.knime.knip.base.nodes.view.TableCellViewNodeView$4.stateChanged(T
ableCellViewNodeView.java:404)
        at javax.swing.JTabbedPane.fireStateChanged(Unknown Source)
        at javax.swing.JTabbedPane$ModelListener.stateChanged(Unknown Source)
        at javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Sour
ce)
        at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Sour
ce)
        at javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
        at javax.swing.JTabbedPane.setSelectedIndex(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(Unknown
 Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.nativelibs4java.opencl.CLException: OpenCL Error :  (make sure to
 log all errors with environment variable CL_LOG_ERRORS=stdout)
        at com.nativelibs4java.opencl.CLException.error(CLException.java:310)
        at com.nativelibs4java.opencl.JavaCL$OpenCLProbeLibrary.getPlatformIDs(J
avaCL.java:155)
        at com.nativelibs4java.opencl.JavaCL$OpenCLProbeLibrary.hasOpenCL1_0(Jav
aCL.java:166)
        at com.nativelibs4java.opencl.JavaCL.<clinit>(JavaCL.java:225)
        ... 49 more
Relaunching CV session was interrupted in GenericClearVolumeGui!
java.lang.NullPointerException
        at de.mpicbg.jug.clearvolume.ImgLib2ClearVolume.initClearVolumeUnsignedS
hortArrayImg(ImgLib2ClearVolume.java:264)
        at de.mpicbg.jug.clearvolume.ImgLib2ClearVolume.initRealImgs(ImgLib2Clea
rVolume.java:418)
        at de.mpicbg.jug.clearvolume.gui.ClearVolumeManager.run(ClearVolumeManag
er.java:156)
        at de.mpicbg.jug.clearvolume.gui.GenericClearVolumeGui.launchClearVolume
Manager(GenericClearVolumeGui.java:208)
        at de.mpicbg.jug.clearvolume.gui.GenericClearVolumeGui.<init>(GenericCle
arVolumeGui.java:135)
        at de.mpicbg.knime.ip.clearvolume.base.ClearVolumeTableCellView$1.run(Cl
earVolumeTableCellView.java:109)
        at de.mpicbg.knime.ip.clearvolume.base.ClearVolumeTableCellView.updateCo
mponent(ClearVolumeTableCellView.java:120)
        at org.knime.knip.base.nodes.view.TableCellViewNodeView.tabSelectionChan
ged(TableCellViewNodeView.java:500)
        at org.knime.knip.base.nodes.view.TableCellViewNodeView$4.stateChanged(T
ableCellViewNodeView.java:404)
        at javax.swing.JTabbedPane.fireStateChanged(Unknown Source)
        at javax.swing.JTabbedPane$ModelListener.stateChanged(Unknown Source)
        at javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Sour
ce)
        at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Sour
ce)
        at javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
        at javax.swing.JTabbedPane.setSelectedIndex(Unknown Source)
        at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(Unknown
 Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$200(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
maierl commented 9 years ago

The JOGL test program on RDP tells me

Device: WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle
0x0, owner false, NullToolkitLock[obj 0x6a03af]]
Capabilities: GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0,
dbl, mono  , hw, GLProfile[GL2/GL2.sw], on-scr[.]]
Profile: GLProfile[GL2/GL2.sw]
ClearGLWindow: GLProfile[GL2/GL2.sw]
com.jogamp.opengl.GLException: Not a GL3 implementation
        at com.jogamp.opengl.DebugGL4bc.getGL3(DebugGL4bc.java:120)
        at cleargl.GLShader.<init>(GLShader.java:46)
        at cleargl.GLProgram.buildProgram(GLProgram.java:22)
        at cleargl.demo.ClearGLDemo$1.init(ClearGLDemo.java:101)
        at jogamp.opengl.GLDrawableHelper.init(GLDrawableHelper.java:641)
        at jogamp.opengl.GLDrawableHelper.init(GLDrawableHelper.java:663)
        at jogamp.opengl.GLAutoDrawableBase$1.run(GLAutoDrawableBase.java:430)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:127
5)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1131)
        at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:680)
        at jogamp.opengl.GLAutoDrawableBase.defaultWindowResizedOp(GLAutoDrawabl
eBase.java:259)
        at com.jogamp.newt.opengl.GLWindow.access$200(GLWindow.java:119)
        at com.jogamp.newt.opengl.GLWindow$2.windowResized(GLWindow.java:141)
        at jogamp.newt.WindowImpl.consumeWindowEvent(WindowImpl.java:3682)
        at jogamp.newt.WindowImpl.sendWindowEvent(WindowImpl.java:3616)
        at jogamp.newt.WindowImpl.setVisibleActionImpl(WindowImpl.java:1003)
        at jogamp.newt.WindowImpl$VisibleAction.run(WindowImpl.java:1015)
        at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:150)
        at jogamp.newt.DefaultEDTUtil$NEDT.run(DefaultEDTUtil.java:372)
com.jogamp.opengl.GLException: Caught NullPointerException: null on thread main-
Display-.windows_nil-1-EDT-1
com.jogamp.opengl.GLException: Caught NullPointerException: null on thread main-
Display-.windows_nil-1-EDT-1
Exception in thread "main" java.lang.RuntimeException: com.jogamp.opengl.GLExcep
tion: Caught NullPointerException: null on thread main-Display-.windows_nil-1-ED
T-1
        at jogamp.newt.DefaultEDTUtil.invokeImpl(DefaultEDTUtil.java:249)
        at jogamp.newt.DefaultEDTUtil.invoke(DefaultEDTUtil.java:163)
        at jogamp.newt.DisplayImpl.runOnEDTIfAvail(DisplayImpl.java:427)
        at jogamp.newt.WindowImpl.runOnEDTIfAvail(WindowImpl.java:2133)
        at jogamp.newt.WindowImpl.setVisible(WindowImpl.java:1024)
        at jogamp.newt.WindowImpl.setVisible(WindowImpl.java:1029)
        at com.jogamp.newt.opengl.GLWindow.setVisible(GLWindow.java:499)
        at cleargl.ClearGLWindow.setVisible(ClearGLWindow.java:223)
        at cleargl.demo.ClearGLDemo.demo(ClearGLDemo.java:287)
        at cleargl.testprog.JOGLTestProgram.main(JOGLTestProgram.java:24)
Caused by: com.jogamp.opengl.GLException: Caught NullPointerException: null on t
hread main-Display-.windows_nil-1-EDT-1
        at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:131
1)
        at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1131)
        at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:680)
        at jogamp.opengl.GLAutoDrawableBase.defaultWindowResizedOp(GLAutoDrawabl
eBase.java:259)
        at com.jogamp.newt.opengl.GLWindow.access$200(GLWindow.java:119)
        at com.jogamp.newt.opengl.GLWindow$2.windowResized(GLWindow.java:141)
        at jogamp.newt.WindowImpl.consumeWindowEvent(WindowImpl.java:3682)
        at jogamp.newt.WindowImpl.sendWindowEvent(WindowImpl.java:3616)
        at jogamp.newt.WindowImpl.setVisibleActionImpl(WindowImpl.java:1003)
        at jogamp.newt.WindowImpl$VisibleAction.run(WindowImpl.java:1015)
        at com.jogamp.common.util.RunnableTask.run(RunnableTask.java:150)
        at jogamp.newt.DefaultEDTUtil$NEDT.run(DefaultEDTUtil.java:372)
Caused by: java.lang.NullPointerException
        at cleargl.demo.ClearGLDemo$1.display(ClearGLDemo.java:211)
        at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:691)

        at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:673)
        at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:442)
        at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:127
7)
        ... 11 more
maierl commented 9 years ago

Well, seems like my fault:

AsC on https://gridforums.nvidia.com/default/topic/346/general-discussion/opengl-and-rdp/

Just for anyone that may stumble upon this, it seems as of the 34x.xx driver series for vGPUs, "OpenGL hardware acceleration on Windows Remote Desktop" works as it does on Quadro cards in passthrough with later drivers. This is great!

Doesn't seem to be documented in the release notes for the vGPU drivers but I've tested it.

maierl commented 9 years ago

Yes, that fixed it for me. Sorry for the inconvenience :sweat_smile: