Bug 60875
| Summary: | Mesa 26.1.8 (p11): сильные просадки FPS в 32-битных OpenGL-играх (HL2, L4D2) на Radeon RX 9070 XT (RDNA4); в Mesa 26.2.x проблемы нет | ||
|---|---|---|---|
| Product: | Branch p11 | Reporter: | |
| Component: | Mesa | Assignee: | Sergey Zhidkih <rx1513> |
| Status: | CLOSED MOVED | QA Contact: | qa-p11 <qa-p11> |
| Severity: | critical | ||
| Priority: | P5 | CC: | amakeenk, mail, zerg |
| Version: | unspecified | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| See Also: |
https://bugzilla.altlinux.org/show_bug.cgi?id=60851 https://bugzilla.altlinux.org/show_bug.cgi?id=60883 |
||
Скорее всего, та же причина, что и в https://bugzilla.altlinux.org/60851 ## Итог проверки: Doom Eternal исправлен в задаче 435943, просадки HL2 остались (нужна Mesa 26.2.x) Проверил предположение о том, что проблема связана с игрой, и тестовую сборку из задачи 435943. Получилось две отдельные проблемы. ### 1. Вылет Doom Eternal (Vulkan, Proton 11.0): причина найдена и исправлена в alt2 На Mesa 26.1.8-alt1 игра закрывалась сама через несколько секунд-минут после старта. Перед вылетом в консоли Steam было: ``` ../src/vulkan/runtime/vk_buffer.h:90: vk_buffer_range: Assertion `range + offset <= buffer->size' failed. ``` Сообщений ядра нет (нет сброса GPU, нет OOM), память в норме (VRAM ~9,4 из 16 ГБ, свободной RAM ~21 ГБ). Строка условия присутствовала в бинарниках, то есть пакет был собран с включёнными assert: ``` grep -a -c "range + offset <= buffer->size" /usr/lib64/libvulkan_radeon.so -> 1 grep -a -c "range + offset <= buffer->size" /usr/lib/libvulkan_radeon.so -> 1 (i586) ``` Установил пакеты из задачи 435943 (Mesa 26.1.8-alt2: `mesa-dri-drivers`, `libEGL-mesa`, `libGLX-mesa`, `libgbm`, `xorg-dri-*` и их i586-версии). Результат: - строки с assert в `libvulkan_radeon.so` больше нет (`0` и для x86_64, и для i586); - Doom Eternal отработал около двух минут без вылета и без ассерта в консоли, закрыт мной вручную. То есть alt2 устраняет вылет Doom Eternal. ### 2. Просадки FPS в нативных HL2 / L4D2 (OpenGL, 32-битные): в alt2 НЕ исправлены На Mesa 26.1.8-alt2 (в том числе i586) HL2 по-прежнему падает до ~5 FPS в сценах с большим числом объектов. Значит, проблема не связана с assert (видимо и не связана с debug, не известно отключен он в сборке или нет). Вывод: регрессия или проблема именно в серии Mesa 26.1.x (32-битный OpenGL/radeonsi на RDNA4), в 26.2.x её нет. ### Окружение - ALT Workstation K 11.4 (Nemorosa), ядро 6.18.52-6.18-alt1, KDE Plasma (Wayland) - AMD Radeon RX 9070 XT (RDNA4, gfx1201), 31 ГБ ОЗУ - Mesa 26.1.8-alt1 -> 26.1.8-alt2 (задача 435943), LLVM 21.1.5 - Откат до Mesa 26.1.8-alt1 выполнил после теста с Doom: Ethernal PS: Готов протестировать и предоставить нужные логи :) ## Итог: просадки HL2 вызваны не Mesa, а i586-`memcpy` в 32-битной glibc; вылет Doom Eternal исправлен в Mesa 26.1.8-alt2 Дополняю предыдущий комментарий (Doom Eternal с alt2). После дальнейшей проверки картина такая: ### 1. Doom Eternal (Vulkan, Proton): исправлено Вылет с `vk_buffer_range: Assertion 'range + offset <= buffer->size' failed` происходил из-за включённых assert в сборке alt1. В сборке alt2 (задача 435943) используется `-Db_ndebug=true` (видно в логе сборки); игра работает без вылета. По этому пункту Mesa больше ничего не требуется. Для справки: проверка наличия строки условия assert в `libvulkan_radeon.so`: | Сборка | `grep -a -c "range + offset <= buffer->size" libvulkan_radeon.so` | | ALT p11, Mesa 26.1.8-alt1 | **1** (assert включён) | | ALT p11, Mesa 26.1.8-alt2 / 26.2.4-alt2 | 0 | | Fedora 44, Mesa 26.2.3 (x86_64 и i686) | 0 | | Flatpak runtime freedesktop 26.08, Mesa 26.2.2 | 0 | То есть другие дистрибутивы собирают Mesa без assert; alt2 приведён к тому же виду. ### 2. Просадки FPS в нативном HL2 (OpenGL, 32-бит): к Mesa не относятся Я ранее считал причиной Mesa. Это неверно, прошу не учитывать мои прежние предположения про Mesa 26.1.x и «нужно обновление до 26.2.x»: - Mesa 26.2.4-alt2 (задача 435925) просадок не убрала (20–30 FPS остались), как и 26.1.8-alt1/alt2. - На том же ПК и ядре ALT: Flatpak Steam и контейнер Fedora 44 дают стабильные 180 FPS. - Профиль потоков (gdb, 600 снимков) в «плохом» месте: на ALT поток драйвера `gl0` проводит 68–83 % времени в одной инструкции `libc.so.6` = `memcpy+0x2c`, код Mesa занимает 2–3 %; в Fedora `memcpy` в профиле отсутствует. - Подмена только `memcpy`/`memmove` через `LD_PRELOAD` убирает просадки полностью (FPS как в Fedora) на неизменённой Mesa 26.1.8-alt1. Причина — реализация `memcpy` в `i586-glibc-core-2.38.0.223.f053ff-alt1.p11.1` (классический код для Pentium, читающий приёмник; в этом libc `memcpy/memmove/memset/strlen` — обычные `FUNC`, а не `IFUNC`, как в Fedora и Flatpak). Подробности вынесены в *отдельный баг на пакет glibc-core* (https://bugzilla.altlinux.org/60883). ### Что требуется от Mesa Ничего. По Doom Eternal исправлено, проблема в сущестововании assert и фикс есть в alt2, а вот проблема FPS в HL2 относится к glibc. Спасибо за помощь. |

Description
mail 2026-10-08 18:47:59 MSK