如何克服“ RuntimeError:Gamma渐变大小被报告为0。”使用心理疗法时无需更改窗口类型?

时间:2018-11-16 15:26:33

标签: pygame driver glfw pyglet psychopy

我开发了一个程序,可以使用装有Ubuntu 16.04,NVIDIA GPU和相关驱动程序的机器在psychopy中播放视频。该程序在这台机器上可以正常运行。该程序相当大,但值得注意的是,它使用visual.Window(fullscr=True),默认情况下使用pyglet后端,也使用visual.MovieStim3。我现在正在尝试在具有Ubuntu 18.04.1 LTS和集成英特尔图形(HD Graphics 620(Kaby Lake GT2))的另一台计算机上运行该程序,并且遇到了问题。 下面的新机器驱动程序信息:

  *-display                 
       description: VGA compatible controller
       product: Intel Corporation
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 02
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:128 memory:ee000000-eeffffff memory:d0000000-dfffffff ioport:f000(size=64) memory:c0000-dffff

这是我运行程序时的回溯:

Traceback (most recent call last):
  File "/home/adf/mxj719/experiments/video_sorting/video_sorting.py", line 456, in <module>
    start_sorting(av_original_csv, user, usr_csv, bonus, last_video)
  File "/home/adf/mxj719/experiments/video_sorting/video_sorting.py", line 357, in start_sorting
    win = visual.Window(fullscr=True)
  File "/home/adf/mxj719/.conda/envs/conda_psychopy/lib/python2.7/site-packages/psychopy/visual/window.py", line 375, in __init__
    self.backend = backends.getBackend(win=self, *args, **kwargs)
  File "/home/adf/mxj719/.conda/envs/conda_psychopy/lib/python2.7/site-packages/psychopy/visual/backends/__init__.py", line 32, in getBackend
    return Backend(win, *args, **kwargs)
  File "/home/adf/mxj719/.conda/envs/conda_psychopy/lib/python2.7/site-packages/psychopy/visual/backends/pygletbackend.py", line 227, in __init__
    self._origGammaRamp = self.getGammaRamp()
  File "/home/adf/mxj719/.conda/envs/conda_psychopy/lib/python2.7/site-packages/psychopy/visual/backends/pygletbackend.py", line 326, in getGammaRamp
    return getGammaRamp(self.screenID, self.xDisplay)
  File "/home/adf/mxj719/.conda/envs/conda_psychopy/lib/python2.7/site-packages/psychopy/visual/backends/gamma.py", line 120, in getGammaRamp
    rampSize = getGammaRampSize(screenID, xDisplay=xDisplay)
  File "/home/adf/mxj719/.conda/envs/conda_psychopy/lib/python2.7/site-packages/psychopy/visual/backends/gamma.py", line 285, in getGammaRampSize
    raise RuntimeError("Gamma ramp size is reported as 0.")
RuntimeError: Gamma ramp size is reported as 0.
Segmentation fault

这似乎是一个常见问题: https://discourse.psychopy.org/t/gamma-problem-in-v1-90-2/4549

但是每种解决方案都涉及将visual.Window类型切换为pygame(现在是psychopy的旧版本)或glfw(这不是简单的设置,而且非常全新且记录不充分)。我想要一个允许我继续使用pyglet的解决方案。

给出的另一种解决方案涉及确保安装xf86-video-intel以提供合理的LUT大小,我已经尝试过此方法,并且似乎该驱动程序已默认安装在Ubuntu 18上,所以这对我不起作用。 / p>

有人提到我可以注释掉源代码中的RuntimeError,但是我找不到它们指出的那些代码行。 (/usr/lib/python2.7/dist-packages/psychopy/visual/backends/gamma.py)。

也请注意,我已经尝试使用anaconda进行python2.7和python3.5 psychopy的安装说明,如下所示: http://psychopy.org/installation.html

1 个答案:

答案 0 :(得分:2)

  

给出的另一种解决方案涉及确保已安装xf86-video-intel以提供合理的LUT大小,我已经尝试过这样做,并且似乎该驱动程序已默认安装在Ubuntu 18上,所以这对我不起作用。 / p>

您可能需要set the driver in a configuration file。为此,请编辑您的/etc/X11/xorg.conf.d/20-intel.conf文件(如果不存在则创建一个文件)以包含以下几行:

Section "Device"
    Identifier "Intel Graphics"
    Driver "intel"
EndSection