LINUX.ORG.RU
ФорумGames

Шейдеры не компилируются.

 , ,


0

1

Есть карта - r7 250 (7750)

Поддерживает:

  • VULKAN 1.1
  • DX 9, 10, 11

Стоит: amdgpu-xorg, mesa, amdvlk

Проблема: «Shader compile failed. system\app_shader\AppShaderPackage»

Драйверы пробовал разные, в том числе и закрытый - не помогает. Установка библиотек в Wine - не помогает. (d3dx9, 11 и т.д.) Некоторые игры запускаются и в OPENGL, и с DXVK. Если не запускается по дефолту = шейдеры не компилируются вообще - DXVK не поможет.

DXDIAG говорит, что DIRECTX работает, но в реестре Wine нет раздела «Direct3D»

Эта ошибка вылезает если запускать из консоли. Если запустить с ярлыка, попробует скомпилировать шейдеры.. (не сможет), переключит режим - игра запуститься, но только до 3D, потом черный экран и искаженный звук. Что за режим - не понятно, но хотя бы запускает.

В Windows все работает, драйвер - Adrenalin.

Куда копать? Что надо карте или вайну, чтоб нормально компилировать шейдеры? Я поискал, у винды подобная ошибка решается файлом с нужной версией DX. В Linux, советуют d3dcompiler_43 - мне не помогло. (я все библиотеки перепробовал)

Куда копать?

winetricks d3dcompiler_42 d3dcompiler_43 d3dcompiler_47

Дистрибутив-то какой? Если Gentoo и ты открытый драйвер используешь то, на данный момент:

*  app-emulation/wine-d3d9 [ Masked ]
      Latest version available: 9999
      Latest version installed: [ Not Installed ]
      Size of files: 58 KiB
      Homepage:      https://www.winehq.org/
      Description:   Free implementation of Windows(tm) on Unix, with Gallium Nine patchset
      License:       LGPL-2.1

Этот вайн с открытым драйвером точно будет работать. По поводу Вулкана и работает ли он на открытом драйвере я не знаю, тебе надо найти лоровца, который использует открытый драйвер и и точно знает как обстоят дела с поддержкой Вулкана на открытом драйвере.

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

arch x64

что интересно - запуск не зависит от вулкана. Вайн, насколько я понял, по-умолчанию (по дефолту) использует OPENGL. Он просто не компилирует шейдеры: opengl или вулкан ему разницы нет.

Такое ощущение, что ему просто не хватает библиотек. Я пробовал разные сочетания, открытый, закрытый, без вулкана.

В винде подобная ошибка значит, что система не может использовать DX (нет файла)

Я пытался запустить и DX9, и DX11 - результат один. Получается, наверно, что он не может использовать компилятор шейдеров.

Либо не настроен DIRECT3D в вайн. Если судить по мануалу, там есть страница с реестром: В HKEY_CURRENT_USER должен быть раздел Direct3D. У меня его нет.

Reptile ()
Ответ на: arch x64 от Reptile

Префикс wine без winetricks — это как голая винда: без программ, драйверов, без системных библиотек обновлений и DirectX там каких нибудь.

Префикс надо настроить, вот мои настройки от префикса к вову личкинг например:

WINEDEBUG=-all winetricks autostart_winedbg=disable cfc=disable fontsmooth=disable csmt=on ddr=opengl glsl=disabled gsm=3 multisampling=disabled nocrashdialog psm=3 strictdrawordering=disabled videomemorysize=1024 vsm=3 d3dx9 d3dx9_24 d3dx9_25 d3dx9_26 d3dx9_27 d3dx9_28 d3dx9_29 d3dx9_30 d3dx9_31 d3dx9_32 d3dx9_33 d3dx9_34 d3dx9_35 d3dx9_36 d3dx9_37 d3dx9_38 d3dx9_39 d3dx9_40 d3dx9_41 d3dx9_42 d3dx9_43 xact_jun2010

DXDIAG говорит, что DIRECTX работает, но в реестре Wine нет раздела «Direct3D»

Этот раздел cоздаёт winetricks если ты прописываешь настройки из winetricks settings list например командой: winetricks vsm=3 psm=3

За обработку шейдеров отвечают настройки в winetricks: vsm=3 - вертексные шейдеры и psm=3 - пиксельные шейдеры.

переключит режим - игра запуститься, но только до 3D, потом черный экран

Возможно эта команда поможет winetricks vsm=3 psm=3

Если ты с вулканом хочешь, то соответственно в префикс wine надо поставить всё что связано с вулканом и DirectX_ом. Посмотреть эти настройки можно командой: winetricks dlls list

И поставить всё что связано с dxvk, d3dx соответствующей командой через пробел вписывая желаемые компоненты winetricks dxvk от dxvk054 до dxvk134 и также с директиксом.

With ★★★ ()

r7 250

эта карта не поддерживается в линукс уже лет 5 как (через 3 месяца после выхода, я тоже владелец той серии)

поддержка есть только в винде

сам делай выводы и качестве АМД)))

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

Откуда такие упоротые берутся? Видеокарта AMD Radeon R7 250

Кодовое имя чипа: «Oland XT».Чип Oland в настольных решениях применяется впервые (он использовался в OEM-решениях семейства Radeon HD 8000, не слишком известного широкой публике). Это максимально доступная видеокарта, имеющая в своей основе GPU архитектуры Graphics Core Next, предназначенная для предназначенная для ценового сегмента начального уровня. Загружаем ядро (4.13 или новее) с параметрами для

radeon.si_support=0 amdgpu.si_support=1

Получаем вулкан.

anonymous ()
Ответ на: комментарий от With

Получилось добавить настройки winetricks, Direct 3D и исправить звук - xact_jun2010. (теперь черный экран с нормальным звуком) Добаление d3dx9 ничего не меняет.

Интересно, какой канал DEBUG нужен чтоб отследить ошибку шейдера? Должен же быть файл, при обращении к которому и возникает ошибка? Даже если что-то не поддерживается - хотелось бы знать, что вызывает ошибку

В данном случае я пытаюсь запустить Resident Evil: Revelations 2. Ошибка связана с компиляцией игрового пакета шейдеров. Эта ошибка есть и в винде, правда, мне не встречалась. Во многих других играх также, только там может быть просто черный экран, но это 100% проблема с обработкой шейдеров.

Reptile ()
Ответ на: комментарий от anonymous

Хотел об этом написать, но думал, и так очевидно: вулкан работает, параметры даны через modprobe.d.

Может что-то и не поддерживается, карта работает и игры запускает в том числе с вулканом. (не все, естественно)

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

Интересно, какой канал DEBUG нужен чтоб отследить ошибку шейдера?

нужен очень мощный дебаг. шейдер компилируется драйвером видеокарты и ошибка шейдера зависит от него, в зависимости от драйвера ошибка может изменяться.

если на винде работает, то проблема скорее всего в драйвере. чтобы отследить ошибку приходящую из драйвера наверное придётся взять исходники вайна и посмотреть дебагером какая там возникает ошибка.

или взять тестовое приложение (под винду) которое определяет возможности видеокарты, запустить его и посмотреть, что поддерживается, а что нет. но проще всего - заменить видеокарту на нормальную с нормальным драйвером, с нормальной поддержкой линукса.

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

К исходникам мне пока рано. Попробую тестовым приложением винды. Если шейдер компилируется драйвером… какой работает с картой? В мануалах просят установить:

  • amdgpu-xorg (2d ускорение?)
  • mesa (3d ускорение?)
  • По желанию - вулкан.

Значит меса работает ретранслятором? [Directx >> OPENGL] (Wine) Может, я просто чего-то не установил? При этом если игра запускается с черным экраном (и если использовать вулкан) в логах DXVK все работает без ошибок.

То есть OPENGL и VULKAN работают, но отрисовать кадр не могут. Интересно, есть в Linux графический тест вулкана?

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

я не знаю как оно всё работает, я не смотрел, надо брать исходники и конпелировать, потом смотреть дебагером, никогда не рано.

ретранслятором DX->OGL скорее всего работает вайн, а меса - это реализация драйвера. ну я так думаю. поэтому скорее всего ты не установил драйвер. ну или не установил видеокарту, или современную ос в которой поддерживается современное железо.

можешь попробовать поискать какой-то отладчик/трассировщик для опенгл и посмотреть что приложение пытается передать драйверу. будет проще если ты постараешься исключить из всей этой схемы какие-нибудь прослойки, возьми нативное приложение на опенгл, затем усложняй: ненативное на опенгл, ненативное на дх.

то что оно запускается - в этом нет ничего удивительного. приложение работает на cpu, а картинка делается на gpu, приложение запускается, отправляет г-цо на видеокарту и в ответ ты либо получаешь картинку, либо чёрный экран, либо какие-то артефакты.

anonymous ()

r7 250 (7750)

Это GCN 1.0?

amdvlk

AMD’шный драйвер разве поддерживает gcn 1.0? Только RADV. Да и вообще не вижу смысла пытаться пользоваться amdvlk, он же никаких преимуществ перед radv не имеет.

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

Да, GCN 1.0

Конкретно у меня 7750 (потом её переименовали в r7 250) Я пробовал: RADV, amdvlk, amdvlk pro (закрытый) Единственное, что не пробовал - поменять драйвер xorg (X11) Ну я думаю, это вроде как для X11 нужно. На 3D влиять не должно. Написано - amdgpu

Работает любой.

Есть игра на движке Unity. Если запустить с OPENGL - работает с черными текстурами. Если запустить с VULKAN (DXVK) - работает практически как в винде.

Во многих других, либо черный экран, либо вообще не запускается в независимости от режима

В мануале:

  • xf86-video-amdgpu - DDX драйвер (which provides 2D acceleration in Xorg) 2D ускорение в X11.
  • Mesa - DRI драйвер (for 3D acceleration) 3D ускорение. К чему относится «3D ускорение» месы - неясно, должно быть ко всему в системе.
  • Vulkan - собственно, вулкан (For Vulkan support) К какому классу относится этот драйвер - непонятно. Вроде как - 3D ускорение. (DRI?)

А вот тут уже становится интересно… как говорят, amdgpu - это полный пакет «всего, что нужно». Но драйверы в мануале ставятся по отдельности. Так что я не знаю куда смотреть.

  • Взяли [кусок?] от драйвера AMD назвали: xf86-video-amdgpu
  • Взяли свою реализацию 3D назвали: Mesa.
  • Взяли вулкан - на выбор три варианта: вулкан от месы, открытый, закрытый вулкан AMD.

Может, можно как-то установить полный пакет AMD? (как драйвер винды - все от одного разработчика)

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

amdgpu - это полный пакет «всего, что нужно»

Врут, это если в дистрибутиве есть метапакет который ссылается на все компоненты, я таких дистров не помню. Нужна mesa, нужны libdrm и ядро поновее, ну еще иксовые драйверы (чтоб окошки быстро рисовались на gpu а не силами cpu).

Mesa - DRI драйвер (for 3D acceleration) 3D ускорение. К чему относится «3D ускорение» месы - неясно, должно быть ко всему в системе.

Mesa это user-space часть драйвера, содержит реализации графических API таких как Vulkan и OpenGL. Т.е. нету mesa - нет аппоратного ускорения.
Причем реалзиации для разных GPU имеют разные названия, например реалзиации OpenGL - r300, r600, radeonsi. У тебя radeonsi используется, но это просто внутренне название, которые нигде не пишется кроме как в исходниках mesa.

xf86-video-amdgpu - DDX драйвер (which provides 2D acceleration in Xorg) 2D ускорение в X11.

xf86-video-amdgpu - это иксовый драйвер который рисует окошки, раньше они напрямую использовали подмножество операций на GPU для рисования, а теперь вроде все через OGL рисует, т.е. без mesa(OpenGL) работать не будет.

Vulkan - собственно, вулкан (For Vulkan support) К какому классу относится этот драйвер - непонятно.

Нет такого драйвера, это как назвать драйвером Direct3D или OpenGL. Vulkan - название графического API. Его реализации имеют названия RADV, AMDVK и т.д. Разумеется мы ничего не знаем про устройство проприетарных драйверов и как они там что у себя называют внутри.

три варианта: вулкан от месы, открытый, закрытый вулкан AMD.

На GCN1.0 будет работать mesa, а вот все что выпускает amd я сильно сомневаюсь, они не горели желанием поддерживать старые карты. amdvk это их драйвер который они очень долго обещали открыть, но их обещание так сильно затянулось что энтузиасты создали RADV, работу над которым теперь даже оплачивает Valve. Так что забей на amdgpu-pro и admvk, пользуйся отрытым стеком из поставки дистрибутива.

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

Проверил. [Kernel - 5.5.2, Mesa - 19.3.3, Wine - 5.0.1, RADV]

Mesa:

  • glxgears - ок
  • glxheads - ок
  • unigine valley - ок
  • Basemark GPU [оступен только OpenGL] - "fail (не запускает тест)

Vulkan:

  • vulkaninfo - ок
  • vkcube - ок

Wine:

  • furmark - ок
  • unigine valley [DX9, 11] - *ок (графика есть, звука нет)
  • unigine valley [OpenGL] - *fail (белый экран)
  • Basemark GPU - "fail (не запускается)

Придется брать другую карту, чтобы убедится, что проблема в железе. Я еще попробую Basemark GPU в винде.

Посмотрю убунту. (хвалят из-за драйверов) Если не получится возьмусь за DEBUG. Или, в конце-концов возьму другую карту. Будет весело, если проблема останется…

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

Посмотрю убунту. (хвалят из-за драйверов)

Да нету практически никакой разницы между дистрибутивами по поддержки железа, у всех все почти ванильное ядро, кастомных патчей мало, каноникл конечно молодцы, они могут через ui еще предложить поставить драйвер для какой-нибудь популярной железки если она все еще не поддерживается в ядра из поставки дистрибутива, но это все. Дистры различаются юзер спейсом, сообществом и инфраструктурой.

Посмотрю убунту. (хвалят из-за драйверов)

Чуда не будет.

unigine valley [DX9, 11] - *ок (графика есть, звука нет)

Используй wine из поставки POL, там у них куча бинарных сборок которыми можно жонглировать, под каждое приложение свою версию wine выбирать. Единственное что день-два потратишь на то чтоб разобраться как с ним работать :) Так было несколько лет назад, может конечно жизнь упростилась, я уже не слежу за игровой темой.

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

еще предложить поставить драйвер для какой-нибудь популярной железки если она все еще не поддерживается в ядре

Я имел ввиду дополнительным модулем, через dkms.

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

Что ж, не буду лезть к убунту Я изначально думал, что, дистрибутив влияет… заморочился и установил arch - чуда не произошло.

Думал, может, каноникл что новое предложат, раз нет - буду пользоваться пакменом.

Посмотрел на ProtonDB про резидента - там у каждого черный экран в меню. А решение… довольно обычное - WMP11. А я думал про директ. Пойду пробовать, посмотрим, останется ли ошибка шедера.

Так вот зачем все эти годы нужен был windows media player 11…

Reptile ()

Как вариант, можно запустить тот же CS:GO из Steam. Таким образом можно посмотреть как работает драйвер с шейдерами под OpenGL

anonymous ()