После года разработки и 28 экспериментальных версий представлен (https://www.winehq.org/news/2019012201) стабильный релиз открытой реализации Win32 API - Wine 4.0 (http://www.winehq.org/announce/4.0), который вобрал в себя более 6000 изменений. Из ключевых достижений новой версии отмечается поддержка графических API Direct3D 12 и Vulkan, включение по умолчанию обособленного потока обработки команд Direct3D, инфраструктура для настройки отображения элементов интерфейса с учётом DPI, поддержка игровых контроллеров, реализация корректной работы на экранах с высокой плотностью пикселей (High-DPI) для платформы Android, интерфейс Windows Media Player, поддержка запуска задач по расписанию, прекращение встроенной поддержки исполняемых файлов DOS.
В Wine подтверждена (http://appdb.winehq.org/) полноценная работа 4737 программ для Windows, еще 4045 программ прекрасно работают при дополнительных настройках и внешних DLL. У 3489 программ наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
Ключевые новшества (https://www.winehq.org/announce/4.0) Wine 4.0:
-
Direct3D
- Добавлена начальная поддержка Direct3D 12. Реализация основана на библиотеке vkd3d (https://www.opennet.ru/opennews/art.shtml?num=48648) и требует для работы графической карты с поддержкой графического API Vulkan (Direct3D 12 работает через трансляцию вызовов в API Vulkan). Обеспечена поддержка большей части возможностей Direct3D 12, включая средства для графики и вычислений, очереди и списки команд, дескрипторы и дескрипторы кучи, корневые подписи, неупорядоченный доступ, Sampler-ы, сигнатуры команд, корневые константы, непрямую (indirect) отрисовку, методы Clear*() и Copy*();
- Включено по умолчанию применение обособленного потока (https://www.opennet.ru/opennews/art.shtml?num=37818) для обработки команд Direct3D, позволяющего выполнять отрисовку в асинхронном режиме с распараллеливанием на многоядерных системах;
- В любых ситуациях, при доступности OpenGL, в Direct3D обеспечено применение по умолчанию базовых контекстов OpenGL. Ранее базовые контексты использовались только для обеспечения работы приложений Direct3D 10 и 11 на системах с графическими картами AMD и Intel. Теперь это ограничение снято и они применяются для любых видеокарт и всех версий Direct3D, за исключением Direct3D 12;
- В реализации Direct3D 10 и 11 добавлена большая часть новых возможностей, включая поддержку мультисэмплинга текстур (Multisample texture), 1D-текстур, выборочной (per-sample) обработки фрагментов шейдерами, множественных областей ограничения 3D-сцены (viewport), новых форматов ресурсов, потокового вывода без геометрических шейдеров, управление отсечением глубины, механизмы для устранения артефактов при отрисовке теней и т.п.;
- Некоторые интерфейсы Direct3D 11 обновлены до версии 11.2, а интерфейсы DXGI до версии 1.6;
- Начался переход к применению в Direct3D мелкомодульных (fine-grained) блокировок, которые позволят повисить эффективность выполнения на CPU с большим числом процессорных ядер;
- Для приложений DXGI и DirectDraw обеспечено использование корректного интервала замены буферов отрисовки (swap interval), синхронизированного с кадровым гасящим импульсом (v-blank);
- Добавлена возможность настройки из приложений DXGI и Direct3D 9Ex величины задержки вывода кадров (frame latency);
- Добавлена реализация механизма сжатия 3D-текстур S3TC (S3 Texture Compression), срок действия патентов на который истёк около года назад;
- При поддержке драйвером OpenGL-расширения ARB_query_buffer_object обеспечено снижение задержек благодаря обработке запросов в асинхронном режиме;
- Расширена база данных графических карт, пригодных для использования Direct3D;
- В реестр добавлены новые настройки "HKEY_CURRENT_USER\Software\Wine\Direct3D": "MultisampleTextures" (включение мультисэмплинга текстур) и "Renderer" ("gl" для OpenGL и "gdi" для GDI). Объявлен устаревшим ключ "DirectDrawRenderer". Удалён ключ "StrictDrawOrdering";
-
Графическая подсистема
- Реализован полноценный драйвер для графического API Vulkan, использующий штатные Vulkan-библиотеки на системах с X11 и API MoltenVK (https://github.com/KhronosGroup/MoltenVK) на платформе macOS;
- Добавлена библиотека vulkan-1.dll c собственной реализацией загрузчика драйверов Vulkan для Windows, альтернативного загрузчику из Vulkan SDK (https://www.lunarg.com/vulkan-sdk/);
- Добавлена поддержка пиктограмм в формате PNG, в том числе пиктограмм 256x256 для экранов с большим разрешением;
- В штатный набор пиктограмм добавлены варианты размером 256x256;
- Многие интерфейсы Direct2D обновлены до версии спецификации 1.2. Для ограничения версии интерфейса в секцию реестра "HKEY_CURRENT_USER\Software\Wine\Direct2D" добавлен ключ "max_version_factory";
- Для X11 добавлена поддержка визуализации в формате ARGB;
- На базе движка DIB подготовлена реализация старого 16-разрядного драйвера DIB.DRV;
- В движке DIB значительно ускорена отрисовка больших полигонов;
- В код вывода на печать добавлена поддержка определения размера страниц A0, A1 и A2;
- В GdiPlus добавлена поддержка рисования стрелок;
-
Ядро (интерфейсы ядра Windows)
- Прекращена поддержка выполнения в wine исполняемых файлов DOS. При попытке запуска исполняемых файлов DOS теперь запускается отдельный экземпляр DOSBox. Изменение не касается выполнения исполняемых файлов
Win16, поддержка которые остаётся встроенной в Wine;
- Для запускаемых в Wine драйверов на уровне ядра реализованы обработчики событий, семафоры, мьютексы и таймеры. Драйверам предоставлен доступ к управлению CPU и настройке отладочных регистров;
- Добавлена поддержка примитивов синхронизации WaitOnAddress;
- Для корректного определения использования технологии Hyper-threading, в выдаваемой информации о конфигурации CPU теперь разделяются логические и физические ядра процессора;
- При запуске в окружениях Linux предоставлен доступ к детальной информации, выдаваемой BIOS;
- Реализована подборка отладочных API для манипуляции 32-разрядными процессами в Wow64 из контекста 64-процессов;
- Добавлено определение настроек приложений, уровней запуска и информации о совместимости в manifest-файлах приложений;
- Реализованы различные режимы определения завершения файлового ввода/вывода;
- Для платформы NetBSD реализована поддержка отладочных регистров;
-
Интерфейс пользователя
- Реализована инфраструктура для настройки отображения элементов интерфейса с учётом DPI и параметров масштабирования. Масштабирование содержимого окон пока отключено по умолчанию и доступно только на платформе Android. Для включения следует изменить параметр "DpiScalingVer" в секции реестра "HKEY_CURRENT_USER\Control Panel\Desktop"
- Реализована возможность перенаправления класса Window, что позволило добавить поддержку элементов интерфейсов на базе библиотеки Common Controls 6 (https://docs.microsoft.com/en-us/windows/desktop/controls/co...);
- В библиотеку ComCtl32 v6 (Common Control) добавлена поддержка стандартных пользовательских элементов интерфейса, в том числе классов для кнопок (Button), списков (ListBox), комбинированных блоков (ComboBox), статических блоков (Static) и формы редактирования (Edit). Реализована поддержка тем формления;
- Реализован штатный диалог управления задачами (TaskDialog (https://msdn.microsoft.com/en-us/library/windows/desktop/bb7...).aspx)), включающий поддержку пиктограмм, гиперссылок, полос для индикации прогресса выполнения операций и различных элементов интерфейса;
- В шестой версии формы редактирования добавлена поддержка отображения подсказок непосредственно в полях ввода (Cue banner (https://www.mking.net/blog/cue-banners-in-winforms));
-
Интеграция с рабочим столом
- Добавлена возможность отключения ...
URL: https://www.winehq.org/news/2019012201
Новость: https://www.opennet.ru/opennews/art.shtml?num=50011