Новые версии Wine 11.10 и Vkd3d 2.0

Опубликован экспериментальный выпуск открытой реализации Win32 API — Wine 11.10. С момента выпуска 11.9 было закрыто 17 отчётов об ошибках и внесено 248 изменений.

Наиболее важные изменения:

  • Встроенный пакет Vkd3d с реализацией Direct3D 12 обновлён до версии 2.0.
  • Предложена переработанная поддержка языка XPath, реализованная без использования библиотеки libxml2.

  • Улучшена совместимость с VBScript.
  • В ntdll добавлены заглушки для API ALPC (Advanced Local Procedure Call): NtAlpcCreatePort (), NtAlpcConnectPort (), NtAlpcAcceptConnectPort (), NtAlpcSendWaitReceivePort (), NtAlpcDisconnectPort () и NtAlpcImpersonateClientOfPort ().
  • Улучшена поддержка Bluetooth, добавлены методы BluetoothLEDeviceStatics: FromBluetoothAddressAsync, IBluetoothLEDevice: get_DeviceId, IBluetoothLEDevice: get_GattServices, IGattDeviceService: get_Uuid и IGattDeviceService: get_AttributeHandle.

  • В реализации d3dx10 и d3dx11 добавлена возможность загрузки DDS-файлов с массивами текстур. В функцию D3DX10LoadTextureFromTexture () добавлена поддержка 3D-текстур, текстур с поддержкой уровней детализации и генерации MIP-уровней (MipMap).

  • В DLL win32u реализованы функции NtUserGetMessagePos () и NtUserSetMessageExtraInfo ().

  • Закрыты отчёты об ошибках, связанные с работой приложений: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3, TrackChecker.

  • Закрыты отчёты об ошибках, связанные с работой игр: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.




Проект Wine также опубликовал выпуск пакета vkd3d 2.0 с реализацией Direct3D 12, работающей через трансляцию вызовов в графический API Vulkan. В состав пакета входят библиотеки libvkd3d с реализаций Direct3D 12, libvkd3d-shader c транслятором моделей шейдеров и libvkd3d-utils с функциями для упрощения портирования приложений Direct3D 12, а также набор демонстрационных примеров, включая порт glxgears на Direct3D 12. Код проекта распространяется под лицензией LGPLv2.1.

Библиотека libvkd3d поддерживает большую часть возможностей Direct3D 12, включая средства для графики и вычислений, очереди и списки команд, дескрипторы и дескрипторы кучи, корневые сигнатуры, неупорядоченный доступ, Sampler-ы, сигнатуры команд, корневые константы, непрямую (indirect) отрисовку, методы Clear*() и Copy*(). В libvkd3d-shader реализована трансляция байт-кода моделей шейдеров в промежуточное представление SPIR-V. Поддерживаются вершинные, пиксельные, тесселяционные, вычислительные и простые геометрические шейдеры, сериализация и десериализация корневой сигнатуры. Из шейдерных инструкций реализованы арифметические, атомарные и битовые операции, операторы сравнения и управления потоком передачи данных, инструкции sample, gather и load, операции неупорядоченного доступа (UAV, Unordered Access View).

В новой версии vkd3d:

  • В реализацию языка шейдеров HLSL добавлена начальная поддержка циклов для 2–3 моделей шейдеров, появилась возможность записи в структурированную разделяемую память группы потоков, реализованы встроенные функции tex3Dbias (), tex3Dlod () и texCUBElod (), обеспечена поддержка семантик SV_ClipDistance, SV_CullDistance и SV_StencilRef для обработки ввода и вывода от шейдеров.

  • В компиляторе шейдеров HLSL реализовано автоматическое удаление дублирующихся вычислений, обеспечено вычисление на этапе компиляции выражений вида x % y с заранее известными значениями, улучшено распределение временных регистров. В соответствии с требованиями спецификации HLSL расширена область видимости переменных в циклах «for» (переменная остаётся доступна после завершения цикла). При парсинге дробных чисел прекращён учёт локали (как разделитель теперь всегда используется точка).

  • Улучшена поддержка старого бинарного формата шейдеров Direct3D. Реализованы инструкции m4×4, m3×4, m4×3, m3×3, m3×2, phase, texdepth, texreg2ar, texreg2gb, texreg2rgb. Добавлена поддержка модификаторов »_dz»,»_db»,»_dw» и »_da», которые можно использовать с инструкциями texcrd и texld. Добавлена поддержка регистров «vFace» и «vPos» для работы с пиксельными шейдерами.

  • В DXIL (Direct3D Intermediate Language) в коде, в операциях загрузки, сохранения, атомарного изменения и сравнения реализована возможность использования указателей на данные, объявленные позже.

  • В ассемблер шейдеров Direct3D добавлена поддержка 16-разрядных встроенных констант, а также флагов »64UAVs», «ROVs», «UAVLoadAdditionalFormats», «UAVsAtEveryStage», «allResourcesBound», «enable11_1ShaderExtensions», «int64Ops», «nativeLowPrecision», «stencilRef», «viewportAndRTArrayIndex» и «waveOps».

  • Реализованы опции компиляции шейдеров: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 и VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.



Источник: http://www.opennet.ru/opennews/art.shtml? num=65576

© OpenNet