LINUX.ORG.RU
ФорумGames

WINE - тормоза в Starcraft: Broodwar

 , ,


0

2

Linux Mint Debian Edition. Решил поиграть в Starcraft: Broodwar :) Для этого установил WINE версии 1.5.5. Однако после запуска игры увидел жуткие тормоза (все перемещается рывками). Запуск из терминала дал такую информацию:

 $ wine StarCraft.exe
fixme:advapi:SetSecurityInfo stub
err:winediag:X11DRV_WineGL_InitOpenglInfo Direct rendering is disabled, most likely your OpenGL drivers haven't been installed correctly (using GL renderer "Gallium 0.4 on ATI RS690", version "1.4 (2.1 Mesa 8.0.4)").
fixme:d3d:check_fbo_compat Format WINED3DFMT_R10G10B10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:d3d:check_fbo_compat Format WINED3DFMT_B10G10R10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:win:EnumDisplayDevicesW ((null),0,0x32f2fc,0x00000000), stub!
fixme:winediag:AUDDRV_GetAudioEndpoint Winepulse is not officially supported by the wine project
fixme:winediag:AUDDRV_GetAudioEndpoint For sound related feedback and support, please visit http://ubuntuforums.org/showthread.php?t=1960599

Однако glxinfo сообщает что прямой рендеринг включен

$ glxinfo | grep 'render'
direct rendering: Yes
OpenGL renderer string: Gallium 0.4 on ATI RS690
    GL_EXT_vertex_array_bgra, GL_NV_conditional_render, 

Версии библиотек

 
$ dpkg -l | grep ' xserver-xorg-video-radeon'
ii  xserver-xorg-video-radeon                1:6.14.4-5                           amd64        X.Org X server -- AMD/ATI Radeon display driver
$ dpkg -l | grep 'mesa'
ii  libgl1-mesa-dri:amd64                    8.0.4-2                              amd64        free implementation of the OpenGL API -- DRI modules
ii  libgl1-mesa-glx:amd64                    8.0.4-2                              amd64        free implementation of the OpenGL API -- GLX runtime
ii  libglapi-mesa:amd64                      8.0.4-2                              amd64        free implementation of the GL API -- shared library
ii  libglu1-mesa:amd64                       8.0.4-2                              amd64        Mesa OpenGL utility library (GLU)
ii  mesa-utils                               8.0.1-2+b3                           amd64        Miscellaneous Mesa GL utilities
Вопрос: что требуется сделать (установить-настроить) для решения данной проблемы?

Ответ на: комментарий от RussianNeuroMancer

В системе не хватало пакетов firmware-linux-free и firmware-linux-nonfree ( по ошибке вместе со старым драйвером удалил).
Ошибки из syslog исчезли, в Xorg.log остались предупреждения только про шрифты (ошибок нет).

Programmist11180 ★★★
() автор топика

На intel и на nvidia - те же тормоза в fullscreen. Если играть в оконном режиме, то все нормально, тормозов нет.

gnunixon ★★★
()
Ответ на: комментарий от gnunixon

На стационарном компьютере с nvidia все нормально работало.

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

После всяческих манипуляций стало:

$ glxinfo | grep OpenGL
OpenGL vendor string: X.Org R300 Project
OpenGL renderer string: Gallium 0.4 on ATI RS690
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:
Но fps в glxgears все равно низкий - около 250 (вертикальная синхронизация отключена). Starcraft немного лагает.

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от Programmist11180

Рекомендую копнуть в сторону различных методов рендеринга DirectDraw в WINE (gdi или OpenGL; на медленной видеокарте gdi возможно окажется быстрее).

RussianNeuroMancer ★★★★★
()
Ответ на: комментарий от RussianNeuroMancer

gdi - жуткие тормоза
opengl - местами приемлимо
Starcraft.exe нагружает ЦП до 100%. WINE1.4 из testing
Вывод в терминале:

fixme:advapi:SetSecurityInfo stub
fixme:d3d:check_fbo_compat Format WINED3DFMT_R10G10B10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:d3d:check_fbo_compat Format WINED3DFMT_B10G10R10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:win:EnumDisplayDevicesW ((null),0,0x32f2c4,0x00000000), stub!
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

Наверное стоит попробовать собрать последнюю версию WINE с mesa 8.0.5 , может получше будет работать, все-таки с выхода версии 1.4 много времени прошло.

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

Собрал последнюю версию WINE. Тормоза страшные.
Заметил следующую вещь: вне зависимости от версии в выводе в терминале присутствуют такие ошибки:

fixme:d3d:check_fbo_compat Format WINED3DFMT_R10G10B10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:d3d:check_fbo_compat Format WINED3DFMT_B10G10R10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.
fixme:win:EnumDisplayDevicesW ((null),0,0x32f3d8,0x00000000), stub!

Что они обозначают?

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

Заметил такую закономерность: нормально работают только дистрибутивные версии с пакетом libwine-gl. То есть данный пакет является необходимым.

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

Тормоза есть небольшие, но они присутствуют постоянно. Наверное все же у меня другой случай. Может написать в багтрекер?

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

Проверил на настольном компьютере, который теперь снова в строю.
Аппаратная часть: видеокарта NVIDIA GeForce 8600 GT с несвободным драйвером версии 295, процессор Intel Pentium Dual Core, ОС Debian Wheezy amd64. Если во время игры переключиться на консоль с заранее запущенным top, то видно, что загрузка ЦП почти 100%. Игра, правда, работает быстро, видимо за счет двухядерности. Также как и на ноутбуке стопроцентная загрузка присутствует на всех проверенных версиях WINE (1.0,1.4,1.5 из дистрибутивных веток, 1.4,1.5 из убунтовского PPA, 1.5 из dev-carbon).

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от RussianNeuroMancer

После обновления драйверов для NVIDIA на настольном компьютере Starcraft стал грузить процессор всего на 30-40%. Проблема все-таки в кривых драйверах?

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от Programmist11180

В данном случае это было бы странно, т.к. 2D в блобе nVidia медленнее, чем в Mesa. Либо между загрузкой процессора и драйвером есть другая связь, не имеющая отношения к рендерингу, но тут вам опять же лучше обратиться к разработчикам WINE.

RussianNeuroMancer ★★★★★
()
Ответ на: комментарий от RussianNeuroMancer

Дело было не в драйверах, а в Mesa. На ноутбуке после обновления до версии из unstable нагрузка на процессор стала тоже около 40%. Тормоза, увы, никуда не пропали.

Programmist11180 ★★★
() автор топика

Проблему чёрного экрана уже починил? Это хорошо. Я в первый не играл ни разу в жизни, но про ошибку читал на http://appdb.winehq.org/

fixme:d3d:check_fbo_compat Format WINED3DFMT_R10G10B10A2_UNORM with rendertarget flag is not supported as FBO color attachment, and no fallback specified.

Попробуй открыть wine regedit и написать туда OffscreenRenderingMode = backbuffer. Подробности.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Вы тут где-то на форуме говорили про компиляцию WINE со специфичными для драйверов библиотеками OpenGL, можно про это подробнее?

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от Programmist11180

Когда-то у меня был Ubuntu 7.10 и я решил попробовать команды sudo apt-get build-dep wine и fakeroot apt-get -b source wine. Это тот же Wine, что из репозитория, но скачивается исходный код и сам делается DEB-пакет. Попробовал и увидел, что в новой версии Wine исправили баг с водой в Morrowind. Затем вышел Wine 0.9.53, его я установил из репозитория. Снова баг с водой. Пересобираю - бага нет. Ставлю из репозитория - баг есть.

Я протестировал с разными драйверами видеокарт. Оказалось, что если удалить проприетарный драйвер, и компилировать с реализацией OpenGL Mesa, баг есть. Если с nvidia OpenGL, то нет. Что именно нужно, заголовочные файлы или сама библиотека, я не знаю. Сейчас посмотрел содержимое пакета nvidia-glx-dev в Debian Squeeze - заголовочных файлов нет. Может, убрали? Или они и не были нужны, нужна была только сама библиотека.

Вот так. С тех пор прошло много лет. Пакета nvidia-gxl-dev больше нет. Причина здесь: http://www.nvidia.ru/object/linux-display-amd64-260.19.12-driver-ru.html

Временно возвращены файлы заголовков OpenGL в пакет драйверов Linux, хотя они не устанавливаются по умолчанию. Для установки файлов заголовков OpenGL, запустите файл .run от NVIDIA с опцией «--opengl-headers». Данные файлы будут удалены из будущих выпусков драйверов NVIDIA после того, как http://www.opengl.org/registry/ сделает gl.h и glx.h доступными.

...

Файлы заголовков OpenGL, VDPAU, CUDA и OpenCL больше не поставляются и не устанавливаются вместе с драйвером. Данные файлы могут быть получены в дистрибутиве Linux при доступности или скачаны тут:

Если устанавливать драйвер nvidia из run-файла с ключом --opengl-headers, то заголовочные файлы для компиляции установятся. Иначе будут использоваться заголовочные файлы Mesa. Как я говорил, я не знаю что именно в тот раз чинило Morrowind в Wine, заголовочные файлы или сама библиотека. Если скачать драйвер NVIDIA и распаковать ключом --extract-only, можно посмотреть содержимое файлов gl.h, glext.h glx.h, glxext.h. Отличия от файлов из Mesa огромны! И именно они и были установленны у меня в Ubuntu 7.10.

Сейчас у меня оба бага Wine, скомпилированного в Mesa, больше не проявляются. Протестировать и ответить на свой вопрос я больше не могу. Кроме того в новых версиях Debian нет пакета nvidia-glx-dev, скорее всего его убрали из-за того, что сам драйвер NVIDIA не устанавливает свои заголовочные файлы по умолчанию, предлагая использовать файлы из Mesa.

Ну и ATi. В Ubuntu 8.10 если не скомпилируешь Wine именно с его OpenGL, тормозил Oblivion, причём очень сильно тормозил. Ради любопытства взял DEB-пакет Wine, скомпилированный с NVIDIA. Игра не запускается и ругается в консоль на то, что нет нужных расширений OpenGL.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 3)
Ответ на: комментарий от ZenitharChampion

Содержимое терминала, без ключа:

fixme:win:EnumDisplayDevicesW ((null),0,0x33f3d8,0x00000000), stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4190419, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4190419, 0000: semi-stub!
С ключом:
fixme:win:EnumDisplayDevicesW ((null),0,0x33f3d8,0x00000000), stub!
fixme:d3d:swapchain_init Add OpenGL context recreation support to context_validate_onscreen_formats
fixme:d3d:swapchain_init Add OpenGL context recreation support to context_validate_onscreen_formats
Настольный компьютер с NVIDIA, WINE 1.5.19. Загрузка процессора - до 50% (одно ядро).
На ноутбуке чуть позже попробую, как WINE обновлю. В принципе мне все равно, сколько будет старик занимать процесора, главное чтобы не тормозило (сейчас там имеются небольшие подтормаживания, загрузка цп до 100%). Напомню, там слабый одноядерный процессор от AMD и видеокарта встроенная от ATI. ОС - тот же Debian testing.

Programmist11180 ★★★
() автор топика
Ответ на: комментарий от ZenitharChampion

Попробовал, 'контра' 1.6 нормально работает, без тормозов. Но ЦП также неумеренно потребляет - здесь до 100%.
К слову, интересный факт вспомнил - на ноутбуке с WINE из PPA (он ещё там единым пакетом представлен) тормозит с любой версией оттуда просто нещадно, тогда как с любой версией из родного репозитория Debian тормозит совсем немного.

Programmist11180 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.