Наборы патчей расширения функционала Mesa 24.2 (OpenGL и EGL)

13 июня вышел набор из 12 патчей для поддержки расширений сжатия OpenGL/EGL с постоянной степенью сжатия. Патчи разрабатывались четыре месяца.
( читать дальше... )
13 июня вышел набор из 12 патчей для поддержки расширений сжатия OpenGL/EGL с постоянной степенью сжатия. Патчи разрабатывались четыре месяца.
( читать дальше... )
14 июня Детлев Казанова (Detlev Casanova) опубликовал патчи RKVDEC2. Цель проекта RKVDEC2 заключается в поддержке декодирования видео для Rockchip RK3588, который сочетает в себе четырехъядерный процессор Arm Cortex-A76, четырехъядерный процессор Arm Cortex-A55 с графикой Mali-G610 MC4, базовым NPU и ускоренным декодированием видео для H.264/H.265/AV1/AVS2.
( читать дальше... )
2 июня Эрик Биггерс (инженер из Google) представил новые реализации AES-XTS для гораздо более высокой производительности процессоров Intel/AMD с помощью новых наборов кода AES-NI + AVX, VAES + AVX2, VAES + AVX10/256 и VAES + AVX10/512.
( читать дальше... )
Выпущена новая версия оконного менеджера GNOME Mutter 46.1, в преддверии официального анонса точечного обновления GNOME 46.1.
( читать дальше... )
>>> Подробности
Недавнее обновление VKD3D-Proton до версии 2.12 (*) добавило поддержку Nvidia Reflex. Эта запатентованная технология позволяет снизить задержку системы за счет синхронизации графического процессора и центрального процессора. Таким образом, кадрам, подготовленным процессором, не нужно ждать в очереди рендеринга, что приводит к практически немедленному рендерингу графическим процессором.
( читать дальше... )
>>> Подробности
Доступен Sway Input Configurator 1.4.0 — утилита для простой настройки устройств ввода в Sway.
Утилита написана на Python с использованием Qt6/PyQt6 и позволяет в пару кликов настроить параметры клавиатуры, мыши и тачпада. Настройки хранятся в файле JSON. Используются стандартные для Libinput опции настройки устройств ввода, в частности, раскладка клавиатуры, комбинация клавиш для смены раскладки, настройка скорости указателя, эмуляция кнопок мыши в тачпаде и т.д.
( читать дальше... )
>>> Подробности
После более трёх месяцев разработки состоялся выпуск 4.1.1 кроссплатформенной библиотеки для C++ (стандарт C++17) FTXUI (Functional Terminal (X) User Interface), предназначенной для создания приложений с текстовым интерфейсом и распространяемой по лицензии MIT.
( читать дальше... )
>>> Подробности
26 мая состоялся выпуск 3.14.0 CTranslate2 — фреймворков, разрабатываемых под лицензией MIT проектом OpenNMT на языках C++ и Python, и предназначенных для эффективного использования (с использованием оптимизаций для CPU и GPU) натренированных моделей в системах машинного перевода.
( читать дальше... )
>>> Подробности
OpenAI выпустили новую платформу, которая позволяет создавать 3D-модели из текстовых описаний. Платформа, называемая SHAP-E, основана на наборе данных ShapeWorld и использует нейронные сети для создания 3D-моделей. Исходный код доступен на Github и распространяется по лицензии MIT.
( читать дальше... )
>>> Подробности
Начиная с macOS 13+, на чипах Apple silicon в гостевой виртуальной машине ARM c Linux можно запускать приложения Linux для х86_64.
При этом дистрибутив Linux должен быть собран для архитектуры ARM. Далее в гостевой виртуальной машине монтируется Rosetta Share и Rosetta регистрируется как обработчик для x86_64 ELF.
Тэвис Орманди (Tavis Ormandy) выпустил бинарный патч, который модифицирует Lotus 1-2-3 для ОС UNIX System V 386, обеспечивая его работу под современным линуксом.
Началось всё с того, что Орманди из любопытства изучал дистрибутив Lotus 1-2-3 (предположительно 1990 года) под коммерческий юникс и обнаружил, необычный способ линковки исполняемого файла в формате COFF — partial linking. Как ему объяснили, такой способ позволял при желании слинковать исполняемый файл с плагинами, которые нельзя было подключить иначе, если в ОС не было dlopen().
В итоге Орманди смог написать утилиты для правки системных вызовов Unix и обёртку для их замены на вызовы Linux и слинковать всё в 32-битный ELF. Одной из крупных проблем оказалась адаптация termios. Интересно, что на старых версиях Линукса, с поддержкой callgate и lcall7/lcall27 такая адаптация прошла бы легче.
Ещё одной из проблем оказалась защита от копирования. Орманди считает себя вправе изготовить файл-ключ, обеспечивающий работу программы, так как он владеет легальной копией Lotus 1-2-3 под MS-DOS. Для остальных он приводит скриншот дизассемблера IDA и расплывчатые рекомендации, как делать такой файл. Программа не продаётся уже почти 20 лет. Да и легальных владельцев Lotus 1-2-3 в мире немало.
Тэвис Орманди — специалист по безопасности («white hat») из Гугла и энтузиаст Lotus 1-2-3. Ранее написал драйвер для MS-DOS версии Lotus, обеспечивающий её работу в окне терминала DOSEMU2 произвольного размера.
Lotus 1-2-3 — одна из первых программ электронных таблиц, отличавшаяся от конкурентов скоростью, надёжностью и удобством. Её нередко называют одной из причин коммерческого успеха платформы IBM PC в 1980-х. Поддержка Lotus долго была критерием совместимости для клонов. В 1990-х Lotus проиграла MS Excel-ю, так как GUI-версия появилась слишком поздно, и в 1995 году компанию купила IBM.
GCC - это набор компиляторов языков программирования от GNU.
Релиз GCC 12.1 ожидается в апреле 2022.
GCC 12 уже является системным компилятором Fedora 36. Также GCC 12 доступен в Red Hat Enterprise Linux в Red Hat Developer Toolset (версии 7) или Red Hat GCC Toolset (версии 8 и 9).
В GCC 12
улучшили поддержку OpenMP 5.0
реализовали поддержку ADA 2022 (флаг -gnat2022
)
реализовали некоторые возможности следующего стандарта С: C2X (флаг -std=c2x
или -std=gnu2x
)
реализовали часть возможностей С++23.
Более подробное описание реализованного только про новые возможности компилятора С++ без учёта стандартной библиотеки.
В GCC 12 реализовали часть возможностей C++23. Без указания флага стандарта в g++-12 используется -std=gnu++17
, чтобы использовать возможности описываемые далее нужно компилировать с флагами -std=c++23
или -std=gnu++23
.
Реализованные возможности C++23:
if consteval
Хотя уже в C++20 появились consteval
функции, которые могут выполнятся только во время компиляции и был std::is_constant_evaluated ()
, но была проблема их совместного использования
#include <type_traits>
int slow (int);
consteval int fast (int n) { return n << 1; }
constexpr int fn (int n)
{
if (std::is_constant_evaluated ())
return fast (n); // 'n' is not a constant expression
else
return slow (n);
}
constexpr int i = fn (10);
https://godbolt.org/z/Yhbqq6K36
P1938R3 представил if consteval
который позволяет использовать consteval
функции внутри constexpr
:
#include <type_traits>
int slow (int);
consteval int fast (int n) { return n << 1; }
constexpr int fn (int n)
{
if consteval {
return fast (n); // OK
} else {
return slow (n);
}
}
constexpr int i = fn (10);
https://godbolt.org/z/Kxs6Wjfq6
Заметьте что if consteval
требует {}
в отличие от обычного if, и что if consteval
может быть в обычной не constexpr
функции.
auto(x)
GCC 12 реализовал P0849 который позволяет auto
каст в prvalue
struct A {};
void f(A&); // #1
void f(A&&); // #2
A& g();
void h()
{
f(g()); // calls #1
f(auto(g())); // calls #2 with a temporary object
}
https://godbolt.org/z/x7hn5GKEx
Заметьте что и auto(x) и auto{x} допустимы, хотя decltype(auto)(x) остаётся неверным.
Non-literal
переменные в constexpr
функциях
GCC 12 реализовал P2242R3, который позволяет non-literal
переменным, goto
, и меткам быть в constexpr
функциях если выполнение во время компиляции не доходит до этих мест.#include <type_traits>
template<typename T> constexpr bool f() {
if (std::is_constant_evaluated()) {
return true;
} else {
T t; // OK when T=nonliteral in C++23
return true;
}
}
struct nonliteral { nonliteral(); };
static_assert(f<nonliteral>());
https://godbolt.org/z/6xnzM46Ej
constexpr int
foo (int i)
{
if (i == 0)
return 42;
static int a;
thread_local int t;
goto label;
label:
return 0;
}
static_assert(foo(0) == 42);
https://godbolt.org/z/PGsErnE4n
struct S {
int a[64];
constexpr S () : a {} {};
constexpr S (int x, int y, int z) : a {x, y, z} {};
constexpr int &operator[] () { return a[0]; }
constexpr int &operator[] (int x) { return a[x]; }
constexpr int &operator[] (int x, long y) { return a[x + y * 8]; }
};
void g ()
{
S s;
s[] = 42;
s[5] = 36;
s[3, 4] = 72;
}
https://godbolt.org/z/nnGead631
Заметьте что operator[]
сейчас не поддерживает аргументов по умолчанию. Рабочая группа рассматривает CWG2507 , и если она примет предложенное решение проблемы, то в будущем такой код будет валиден:
struct X {
int a[64];
constexpr int& operator[](int i = 0) { return a[i]; }
};
#ifdef
и #ifndef
это синтаксический сахар для #if defined(something)
и #if !defined(something)
. Для вариантов с else не было такого синтаксического сахара. Так что его добавили в С++23(и в С2X) и GCC 12: P2334R1#ifdef __STDC__
/* ... */
#elifndef __cplusplus
#warning "not ISO C"
#else
/* ... */
#endif
https://godbolt.org/z/z4hbj6M7q
if
, for
, switch
) позволяя им содержать объявление псевдонимов. На практике это означает что теперь валиден подобный код:for (using T = int; T e : v)
{
// use e
}
Также можете ознакомиться с описанием исправлений и новыми предупреждениями в GCC 12 в оригинальной статье
Несколько дней назад хакерская группа LAPSUS$ проникла во внутреннюю сеть NVIDIA и украла примерно терабайт данных, включая исходные тексты драйверов, DLSS, клиентскую базу. Служба безопасности NVIDIA попыталась вывести из строя компьютеры преступников, зашифровав диски, но те сохранили резервную копию и выложили в открытый доступ несколько десятков гигабайт, включая исходные тексты драйверов под Windows.
Теперь LAPSUS$ требует от NVIDIA перевести драйверы для Windows, macOS и Linux под свободную лицензию, и в дальнейшем не закрывать. В противном случае они опубликуют схемотехнику видеокарт и чипов, включая находящиеся в разработке. Срок — до пятницы.
Скриншот: https://cdn.videocardz.com/1/2022/03/Lapsus-Ransom-NVIDIA.png
labwc — композитный менеджер для Wayland с возможностями, напоминающими Openbox. Совместим с темами для Openbox. В основе используется библиотека wlroots.
В этой версии:
WLR_{WL,X11}_OUTPUTS
для запуска во вложенном X11 или Wayland.>>> Подробности
Добрый день.
Есть скрипт /usr/local/bin/gpuoc.sh
#!/bin/sh
nvidia-settings -a «[gpu:0]/GPUGraphicsClockOffset[3]=200»
есть служба
[Unit]
Description=«gpu»
After=multi-user.target
[Service]
Type=simple
User=myuser
ExecStart=/usr/local/bin/gpuoc.sh
[Install]
WantedBy=multi-user.target"
Запихиваю службу в /home/myuser/.config/systemd/user, стартую ее systemctl --user start gpuoc
и меняется частота видеочипа.
Но если положить службу в /etc/systemd/system, и сказать systemctl start gpuoc
то получаю ошибку:
× gpuoc.service - «gpu»
Loaded: loaded (/etc/systemd/system/gpuoc.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Tue 2021-12-14 01:20:57 MSK; 7s ago
Process: 4723 ExecStart=/home/rsnorlax/.config/gpuoc.sh (code=exited, status=1/FAILURE)
Main PID: 4723 (code=exited, status=1/FAILURE)
CPU: 15ms
дек 14 01:20:57 SN-DT systemd[1]: Started «gpu».
дек 14 01:20:57 SN-DT gpuoc.sh[4724]: ERROR: The control display is undefined; please run nvidia-settings –help for usage information.
дек 14 01:20:57 SN-DT systemd[1]: gpuoc.service: Main process exited, code=exited, status=1/FAILURE
дек 14 01:20:57 SN-DT systemd[1]: gpuoc.service: Failed with result ‘exit-code’.
Судя по тому что по этому же принципу не работатет софтина nvfancontrol запущенная службой из /ets/systemd/system, подозреваю, что они пытаются запуститься от рута, но что-то идет не так. Помогите разобраться.
Mold (a modern linker) — новый высокоскоростной компоновщик для Unix-подобных платформ (i386 и x86-64) от автора LLVM lld.
В качестве мотивации появления проекта указывается нежелание тратить длительное время на перекомпоновку больших файлов в процессе разработки. Mold опережает конкурентов за счёт использования более быстрых алгоритмов, эффективных структур данных и интенсивной параллелизации.
Согласно проведённым замерам производительности, новый компоновщик в разы быстрее LLVM lld и на порядок быстрее GNU gold, будучи при этом совместим с ними.
Проект написан на C++20 и распространяется под лицензией GNU AGPL v3. Автор заявляет о возможности приобретения коммерческой лицензии для организаций, которых не устраивают условия AGPL, а также о поиске спонсора, который может купить у него права на проект и сменить лицензию на более пермиссивную.
>>> Подробности
Доминик Саблевски представил новый и невероятно простой в реализации формат изображений QOI (Quite OK Image). По представленным тестам, при сжатии изображений QOI производительнее PNG в 20–30 раз, а при распаковке — в 3–4 раза.
Доминик признаётся, что не является экспертом в области сжатия изображений. Идея создать новый простой и эффективный формат изображений пришла к нему во времена работы с MPEG-1. Его целью была скорость и простота.
Файлы QOI больше по размеру, чем PNG на 10–50 % в зависимости от картинки, поэтому QOI стоит применять, когда необходима скорость.
Исходный код на C, состоящий из одного универсального файла, доступен на GitHub.
В данный момент формат проходит обсуждение финальной спецификации с заинтересованными пользователями.
Также доступны реализации на Zig, Rust, Go, TypeScript, Python, C#. Поддержка QOI добавлена в библиотеку SAIL.
Для пользователей Arch Linux в AUR доступен пакет qoi-git.
>>> Замеры скорости и размеров изображений
>>> Подробности
В корпорация NVIDIA сообщила об открытии исходого кода Image Scaling SDK (NIS).
В отличие от NVIDIA DLSS, алгоритм Image Scaling не основан на машинном обучении и использует в качестве входных данных только информацию из текущего изображения. Как отмечает корпорация:
Хотя качество получаемого изображения является лучшим в своем классе по сравнению с масштабированием, предлагаемым мониторами или другими методами масштабирования в игре, алгоритму не хватает данных и интеллектуальных возможностей DLSS, которые необходимы для обеспечения детализации собственного разрешения и надежной стабильности от кадра к кадру. Идеальным вариантом является сочетание NVIDIA DLSS и NVIDIA Image Scaling.
В обсуждении на Reddit пользователи провели параллели с аналогичным анонсом от компании AMD, которая опубликовала исходный код FidelityFX Super Resolution (FSR) на платформе GPUOpen в июле этого года.
>>> Подробности
Здравствуйте.
У меня кончились мысли.
Сначала по поводу Проблемы с AMDGPU (комментарий) вот этого комментария - стал смотреть как дела в других дистрибутивах, и обнаружил что в VoidLinux нормально всё играет в телевизоре без подмены EDID. В ArchLinux, например, так и не играет. Смотрел в cat /proc/asound/card1/eld\#0.3
и в pactl list sinks
на обоих, сравнивал - никакой разницы не вижу. Но разница должна же где-то быть. Где ещё искать места почему в Void звук слышен всегда, а в Arch только при подмене EDID?
-----------------------
Потом практически ровно наоборот - линуксы у меня умеют, как с железа стартовать, так и под Hyper-V. Начиная с 5.14 в Linux добавили hyperv_drm и он прекрасен. В ArchLinux всё замечательно теперь показывает без hyperv_fb. Не могу заставить Void делать также. Сравнивал Xorg.0.log на обеих - в ArchLinux есть такие строчки:
[ 4.399] (==) Automatically adding devices
[ 4.399] (==) Automatically enabling devices
[ 4.399] (==) Automatically adding GPU devices
[ 4.399] (==) Automatically binding GPU devices
open /dev/dri/card0: No such file or directory
. А с этим как бороться осознано? В интернетах решения уровня «переустановил пакет такой-то и заработало».Может есть у кого какие-нибудь комментарии по обоим квестам?
С небольшим отставанием от протокола, механизма межпроцессного взаимодействия и библиотек Wayland 1.13, подготовлен релиз параллельно развиваемого композитного сервера Weston 2.0. Смена номера значительной версии в Weston 2.0 обусловлена изменениями в новом API управления выводом, нарушающими совместимость c libweston на уровне ABI. Все штатные бэкенды портированы на новый API для настройки вывода.
В новой версии также добавлена поддержка EGL-расширения EGL_KHR_swap_buffers_with_damage
, реализованного в проприетарном драйвере NVIDIA. В бэкенде GL добавлена поддержка буферов DRM_FORMAT_YUV444
. Улучшено позиционирование панелей в desktop-shell. В XWayland приведены в порядок сообщения об ошибках.
>>> Подробности
следующие → |