<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>60875</bug_id>
          
          <creation_ts>2026-10-08 18:47:59 +0300</creation_ts>
          <short_desc>Mesa 26.1.8 (p11): сильные просадки FPS в 32-битных OpenGL-играх (HL2, L4D2) на Radeon RX 9070 XT (RDNA4); в Mesa 26.2.x проблемы нет</short_desc>
          <delta_ts>2026-10-09 10:43:06 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p11</product>
          <component>Mesa</component>
          <version>unspecified</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>MOVED</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=60851</see_also>
    
    <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=60883</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mail</reporter>
          <assigned_to name="Sergey Zhidkih">rx1513</assigned_to>
          <cc>amakeenk</cc>
    
    <cc>mail</cc>
    
    <cc>zerg</cc>
          
          <qa_contact name="qa-p11@altlinux.org">qa-p11</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301541</commentid>
    <comment_count>0</comment_count>
    <who name="">mail</who>
    <bug_when>2026-10-08 18:47:59 +0300</bug_when>
    <thetext>В нативных Half-Life 2 и Left 4 Dead 2 (Steam, 32-битный OpenGL, слой ToGL) на RX 9070 XT
FPS падает до ~5 в сценах с большим числом объектов (много draw call&apos;ов). В сценах с небом
или пустым пространством FPS нормальный.

Через Proton (DXVK/Vulkan, RADV) проблемы нет. На Fedora 44 на том же ПК (Mesa 26.2.3) проблемы нет.
В Flatpak Steam (runtime org.freedesktop.Platform 26.08, Mesa 26.2.2) на том же ПК с ALT HL2
работает в несколько раз быстрее и плавнее.

Значит, регрессия или проблема именно в сборке Mesa 26.1.8 из p11 (32-битный radeonsi/OpenGL),
а не в железе, ядре, звуке, диске или кодеках.

## Окружение
- ALT Workstation K 11.4 (Nemorosa), ядро 6.18.52-6.18-alt1, KDE Plasma, сессия Wayland (игры через XWayland)
- CPU: 16 потоков, 31 ГБ ОЗУ
- GPU: AMD Radeon RX 9070 XT (gfx1201, RDNA4), драйвер amdgpu
- Mesa 26.1.8-alt1 (mesa-dri-drivers, libGLX-mesa, i586-libGLX-mesa, i586-libEGL-mesa), LLVM 21.1.5
- Steam: i586-steam 1.0.0.87-alt3, игры запускаются в Steam Linux Runtime
- gamemode 1.8.2, mangohud 0.7.2 (на результат не влияют)

## Шаги воспроизведения
1. Установить Steam и Half-Life 2 (или Left 4 Dead 2), запустить нативную версию (не Proton).
2. Параметры запуска: `+fps_max 180`.
3. Загрузить уровень и посмотреть на место с большим числом объектов в кадре.

## Фактический результат
FPS около 5. Ни CPU в целом (около 7 %), ни GPU (9–26 %, частота ядра прыгает 0–1660 МГц) не загружены.

## Ожидаемый результат
Плавный FPS, как в Mesa 26.2.x / Fedora 44.

## Диагностика
- Мониторинг потоков процесса `hl2_linux`: поток **`gl0`** (рабочий поток glthread драйвера Mesa)
  занят на 66–94 %, в худших сценах почти упирается в 100 %. Рядом `MatQueue0` на 40–60 %.
  GPU простаивает, ждёт команд. Общая загрузка CPU мала, потому что узкое место — один поток.
- `mesa_glthread=false` делает хуже, `mesa_glthread=true` лучше, но проблема остаётся.
- Не помогают: `MESA_NO_ERROR=1`, отключение шейдерного кэша, `-vulkan`, переход на X11-сессию,
  отключение gamemode/mangohud.
- Исключены: звук, диск (iowait 0 %), media-кодеки (openh264).
- Признаков отладочной сборки (assertions) в libgallium не найдено.

## Что хотелось бы
Обновить Mesa в p11 до 26.2.x (в Sisyphus уже 26.2.4-alt1), либо найти и бэкпортировать
исправление, устраняющее эту регрессию в 32-битном OpenGL-пути radeonsi.
Если нужны логи, `perf`/gdb-трассы потока gl0 или проверка конкретных патчей, готов протестировать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301547</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Makeenkov">amakeenk</who>
    <bug_when>2026-10-08 21:07:31 +0300</bug_when>
    <thetext>Скорее всего, та же причина, что и в https://bugzilla.altlinux.org/60851</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301556</commentid>
    <comment_count>2</comment_count>
    <who name="">mail</who>
    <bug_when>2026-10-08 23:23:19 +0300</bug_when>
    <thetext>## Итог проверки: 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 &lt;= buffer-&gt;size&apos; failed.
```

Сообщений ядра нет (нет сброса GPU, нет OOM), память в норме (VRAM ~9,4 из 16 ГБ, свободной RAM ~21 ГБ).
Строка условия присутствовала в бинарниках, то есть пакет был собран с включёнными assert:

```
grep -a -c &quot;range + offset &lt;= buffer-&gt;size&quot; /usr/lib64/libvulkan_radeon.so   -&gt; 1
grep -a -c &quot;range + offset &lt;= buffer-&gt;size&quot; /usr/lib/libvulkan_radeon.so     -&gt; 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 -&gt; 26.1.8-alt2 (задача 435943), LLVM 21.1.5  - Откат до Mesa 26.1.8-alt1 выполнил после теста с Doom: Ethernal 

PS: Готов протестировать и предоставить нужные логи :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301575</commentid>
    <comment_count>3</comment_count>
    <who name="">mail</who>
    <bug_when>2026-10-09 10:22:01 +0300</bug_when>
    <thetext>## Итог: просадки 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 &apos;range + offset &lt;= buffer-&gt;size&apos; failed` происходил из-за включённых assert в сборке alt1.
В сборке alt2 (задача 435943) используется `-Db_ndebug=true` (видно в логе сборки); игра работает без вылета. По этому пункту Mesa больше ничего не требуется.

Для справки: проверка наличия строки условия assert в `libvulkan_radeon.so`:

| Сборка | `grep -a -c &quot;range + offset &lt;= buffer-&gt;size&quot; 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.

Спасибо за помощь.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>