Ubuntu 12.10 OpenCL OpenGL Interop с графикой ATI

Я успешно установил драйверы ATI Catalyst в мою гибридную графическую систему ATI, работающую на Ubuntu 12.10. Я проверил, что OpenCL и OpenGL работают независимо; однако взаимодействие OpenCL-OpenGL работает неправильно. Я сделал некоторую отладку, но не уверен, куда идти отсюда. Кто-нибудь может помочь?

Подробности:

Моя система - это HP Envy 6 с Ubuntu 12.10 (все обновления применены) с гибридной графической системой ATI, состоящей из Radeon 7600m и Intel HD3000. Я установил последние версии драйверов ATI Beta (v. 12.11), следуя этим инструкциям:

Как заставить работать драйверы AMD / Intel Hybrid Graphics?

Делать это я смог запустить OpenGL и OpenCL. glxgears работает со скоростью ~ 1200 кадров в секунду, и все сэмплы только для OpenCL в AMD APP SDK функционируют, как и ожидалось. Однако любые приложения взаимодействия OpenCL-OpenGL не запускаются с ошибкой X Error of failed request: BadMatch (invalid parameter attributes). Весь пример кода ранее работал под Ubuntu 12.04 с драйверами ATI менеджера пакетов.

Чтобы получить немного больше информации отладки, я запустил LIBGL_DEBUG=verbose /opt/AMDAPP/samples/opencl/bin/x86_64/SimpleGL. Это обнаруживает мой дискретный графический процессор, появляется, чтобы выбрать правильные драйверы, и обнаруживает, что взаимодействие OpenCL-OpenGL включено:

$ LIBGL_DEBUG=verbose ./SimpleGL
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 7, (OK)
ukiGetBusid returned 'PCI:1:0:0'
ukiOpenDevice: node name is /dev/ati/card1
ukiOpenDevice: UKI_ERR_NOT_ROOT
...
ukiOpenDevice: node name is /dev/ati/card15
ukiOpenDevice: UKI_ERR_NOT_ROOT
ukiDynamicMajor: found major device number 250
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 7, (OK)
ukiOpenByBusid: ukiOpenMinor returns 7
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 7, (OK)
ukiOpenByBusid: ukiOpenMinor returns 7
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
Platform 0 : Advanced Micro Devices, Inc.
Platform found : Advanced Micro Devices, Inc.

Selected Platform Vendor : Advanced Micro Devices, Inc.
Device 0 : Turks Device ID is 0x1a16b40
Number of displays 1
libGL: AtiGetClientDriverName: 9.1.11 fglrx (screen 0)
libGL: OpenDriver: trying /usr/lib/fglrx/dri/fglrx_dri.so
ukiDynamicMajor: found major device number 250
ukiDynamicMajor: found major device number 250
ukiOpenByBusid: Searching for BusID PCI:1:0:0
ukiOpenDevice: node name is /dev/ati/card0
ukiOpenDevice: open result is 10, (OK)
ukiOpenByBusid: ukiOpenMinor returns 10
ukiOpenByBusid: ukiGetBusid reports PCI:1:0:0
glXCreateContextAttribsARB 0x7f4e05938280
Number of interoperable devices 1
Interop Device ID is 0x1a16b40
libGL: OpenDriver: trying /usr/lib/fglrx/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib/fglrx/dri/i965_dri.so
libGL error: dlopen /usr/lib/fglrx/dri/i965_dri.so failed     (/usr/lib/fglrx/dri/i965_dri.so: cannot open shared object file: No such file or     directory)
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/tls/i965_dri.so
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/i965_dri.so
libGL error: dlopen /usr/lib32/fglrx/dri/i965_dri.so failed     (/usr/lib32/fglrx/dri/i965_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL: OpenDriver: trying /usr/lib/fglrx/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/fglrx/dri/swrast_dri.so
libGL error: dlopen /usr/lib/fglrx/dri/swrast_dri.so failed (/usr/lib/fglrx/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib32/fglrx/dri/swrast_dri.so
libGL error: dlopen /usr/lib32/fglrx/dri/swrast_dri.so failed (/usr/lib32/fglrx/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  155 (GLX)
  Minor opcode of failed request:  5 (X_GLXMakeCurrent)
  Serial number of failed request:  28
  Current serial number in output stream:  28

Я не уверен, куда идти дальше. Это может быть проблема с известными проблемами ATI Ubuntu 12.10 или что-то новое. У кого-нибудь есть предложения?

6
задан 13 April 2017 в 15:24

1 ответ

Хорошо. Разобрался (по крайней мере, в моем случае). Файл libGL.so в /usr/lib/fglrx не найден компоновщиком. Добавление

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/fglrx

к моему ~/.bashrc (или ~/.profile) заставило его работать. Это не должно требоваться, потому что установщик драйвера добавляет /usr/lib/fglrx в файл /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf.

РЕДАКТИРОВАТЬ Примечание: Мой предыдущий пост обвинил эту ошибку на Cinnamon ( ошибка 1483 ); Однако это было неправильно. Документированное решение является правильным.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: