вино Direct3D 10 не поддерживается на этом GPU с текущим бэкендом программы построения теней

Привет я пробую к бледному NFS2012 playonLinxu., я - geeting ошибка

winediag:dxgi_check_d3d10_support Direct3D 10 is not supported on this GPU with the current shader backend

enter image description here

И журнал отладки

err:winediag:init_driver_info Invalid GPU override 8086:0a16 specified, ignoring.
fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x13e6a0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x32f3a4, desc (nil) partial stub!
fixme:dxgi:dxgi_output_GetDisplayModeList iface 0x13e6a0, format DXGI_FORMAT_R8G8B8A8_UNORM, flags 0, mode_count 0x32f3a4, desc 0x13e1978 partial stub!
fixme:d3d11:D3D11CoreCreateDevice Ignoring feature levels.
fixme:dxgi:dxgi_check_d3d10_support Ignoring adapter type.
fixme:winediag:dxgi_check_d3d10_support Direct3D 10 is not supported on this GPU with the current shader backend.
fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS)
fixme:system:SystemParametersInfoW Unimplemented action: 53 (SPI_SETTOGGLEKEYS)
fixme:system:SystemParametersInfoW Unimplemented action: 51 (SPI_SETFILTERKEYS)
fixme:thread:SetThreadIdealProcessor (0x70): stub
fixme:thread:SetThreadIdealProcessor (0x8c): stub
fixme:thread:SetThreadIdealProcessor (0x94): stub
fixme:thread:SetThreadIdealProcessor (0x98): stub
2
задан 16 January 2016 в 14:02

2 ответа

TL; Выполнение DR

glxinfo | grep GLSL — наименьшее количество версии, которую Вы хотите видеть, 3.30 . Иначе Ваш драйвер просто не поддерживает версию GLSL, которую вино использует для реализации DX10.

<час>

я также получал ту же ошибку, таким образом, я решил исследовать ее. Сначала мы должны узнать код. Grepping по Винному источнику показывает, что ошибка находится в dlls/dxgi/utils.c:448 . Вот соответствующая часть:

    hr = wined3d_get_device_caps(factory->wined3d, adapter->ordinal, WINED3D_DEVICE_TYPE_HAL, &caps);
    if (FAILED(hr) || caps.VertexShaderVersion < 4 || caps.PixelShaderVersion < 4)
    {
        FIXME_(winediag)("Direct3D 10 is not supported on this GPU with the current shader backend.\n");

Так, ошибка вызывается или wined3d_get_device_caps сбой, или слишком низкими версиями программы построения теней. Смотрение при реализации в dlls/wined3d/directx.c:4884 по возможной причине сбоя показывает, что эти wined3d_get_device_caps довольно большая функция в‰ строк за 700€, и это имеет только два возврат с в ее теле — сбой, каждый - в‰ строки за 12€ ниже запуска и успешное в конце. Код сбоя похож

    if (adapter_idx >= wined3d->adapter_count)
        return WINED3DERR_INVALIDCALL;

Рассмотрение названия возвращаемого значения WINED3DERR_INVALIDCALL, я предположил бы, что строка здесь для случая ошибки — или в Вине или в приложении. У меня есть чувство, что это маловероятно наш случай, поэтому давайте предположим, что функция успешно выполняется, возвратитесь к эти utils.c и смотрите на другие случаи сбоя, т.е. caps.VertexShaderVersion < 4 || caps.PixelShaderVersion < 4.

у меня нет работы с графикой, не знал то, что является Версиями Вершины/Пиксельного шейдера. Поиск об этом дает ответ, это это также отнесено как В «программа построения теней modelВ» . Не надежный источник btw, но статья Wikipedia не упоминала управление версиями вообще, настолько лучше чем ничего.

Затем, поиск о модели программы построения теней дает нам статья HLSL, которые, к счастью, имеют таблицы и для версий Пиксельного и для Вершинного шейдера; обе таблицы имеют 4.0 версия, которую ищет вино. Одна последняя вещь: как мы могли найти, поддерживает ли наш драйвер GPU 4,0 версии, если это скорее реализует OpenGL?

ну, это складывается существует статья об обнаружении модели программы построения теней для OpenGL, and†¦ существует сравнение версий для OpenGL и Direct3D! Заключение в кавычки: Direct3D Shader Model 4.0 is equivalent to GLSL version 3.30.

Позволяют нам узнать, получили ли мы ту версию:

$ glxinfo | grep GLSL
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

ну, как Вы видите, оказывается, что драйвер не поддерживал необходимую версию 3.30 ⠘№, я желаю, чтобы Вы были удачливы, тем не менее, если Вы читаете, что, угадайте, что Вы не.

3
ответ дан 2 December 2019 в 01:58

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

[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"MaxVersionGL"=dword:00030002

Согласно документация :

  |  +->MaxVersionGL
  |  |   [DWORD Value (REG_DWORD): Choose the maximum GL version to request. Currently defaults to version 1.0.
  |  |    Set it to 30002 (hexadecimal) or greater to request a core profile context.]

При выполнении $ glxinfo | grep GLSL только отчеты OpenGL ES, заштриховывающий строку языковой версии, Вы, возможно, были введены в заблуждение. Попробуйте $ glxinfo | grep -e "shading language", который сообщает о следующем для меня:

OpenGL core profile shading language version string: 4.20
OpenGL shading language version string: 1.30
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
2
ответ дан 2 December 2019 в 01:58

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

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