LINUX.ORG.RU

Видеокарта Intel HD Graphics 4000 с Linux-драйверами i915 криво считает функцию арктангенса

 , , , ,


1

1

Linux в очередной раз меня подвел.

На моем ноуте HP450 стоит карточка Intel HD Graphics 4000. Информация о чипсете и драйверах:

Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
        Kernel driver in use: i915
        Kernel modules: i915
filename:       /lib/modules/4.9.0-4-amd64/kernel/drivers/gpu/drm/i915/i915.ko
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
vermagic:       4.9.0-4-amd64

Так вот, наткнулся я на проблему в шейдерах GLSL локально в Bonzomatic, а потом увидел ее же в браузере в ShaderToy. Проблема в том, что функция atan() выдает дикую дичь.

Ссылка на пример: https://www.shadertoy.com/view/NljSzV

В телеграмканале «Newskool demomakers' chat» мне подтвердили, что на карточках других производителей такой проблемы не наблюдается.

Вначале думал, что проблема аппаратная. Но заморочился и на этом же оборудовании запустил Windows. И что я вижу? Все прекрасно работает, atan() считается как положено.

Пока что сделал workaround через арксинус, хорошо что хоть он вычисляется правильно:
float arctangens(float a)
{
    return asin(a/sqrt(1.0+a*a));
}

Но вообще прошу владельцев Intel-серии заглянуть по вышеуказанной ссылке и сказать, как двигается верхняя линия, с указанием модели своей карты и версии драйвера. Если atan() считается правильно, то линия должна плавно двигаться справа-налево. Если неправильно, то будет двигаться в разные стороны, иногда пропадать с экрана.

Возможно, в более новых модулях ядра эту проблему пофиксили. Но перед тем как заморачиваться с обновленем системы, хотелось бы понять, как обстоят дела с более свежими дровами.

★★★★★

В каких браузерах и конфигурациях эта хрень заведомо работает? Как можно убедиться, что она действительно задействует GPU, а не какой-нибудь софтварный рендеринг?

Intel HD 620 (KBL GT2), Linux 5.13.5 (i915), Mesa 21.1.6 (iris), GNOME 40.3 Wayland, Firefox 92 Nightly — всё ок.

intelfx ★★★★★ ()
Intel Corporation WhiskeyLake-U GT2 [UHD Graphics 620] [8086:3ea0] (rev 02)
kernel 5.13.7
mesa 21.1.5
gnome-shell 40.3, wayland
firefox 90.0.2

^ всё ок, линия плавно двигается справа налево.

Компилятор шейдеров в нативную для GPU ISA находится в месе, так что твоя проблема скорее всего там. Ядро вряд ли виновато.

vermagic: 4.9.0-4-amd64

Боюсь спросить, а меса у тебя из той же эры? Если да, то попробуй потестить на live-системе с более свежим софтом. Если на свежем так же, то пиши багрепорт разработчикам месы.

anonymous ()

У меня тоже не воспроизводится ошибка.

# inxi -GCS
System:    Host: OSAD Kernel: 5.4.0-80-generic x86_64 bits: 64 Desktop: Gnome 3.36.9 Distro: Ubuntu 20.04.2 LTS (Focal Fossa) 
CPU:       Topology: Dual Core model: Intel Core i3-2100 bits: 64 type: MT MCP L2 cache: 3072 KiB 
           Speed: 1606 MHz min/max: 1600/3100 MHz Core speeds (MHz): 1: 1599 2: 1596 3: 1597 4: 1598 
Graphics:  Device-1: Intel 2nd Generation Core Processor Family Integrated Graphics driver: i915 v: kernel 
           Display: server: X.Org 1.20.9 driver: i915 resolution: 1920x1080~60Hz 
           OpenGL: renderer: Mesa DRI Intel HD Graphics 2000 (SNB GT1) v: 3.3 Mesa 20.2.6
anonymous ()

ошибки нет

$ inxi -GCS
System:    Host: HPC Kernel: 5.10.54-sky x86_64 bits: 64 Desktop: Xfce 4.16.0 Distro: Ubuntu 20.04.2 LTS (Focal Fossa) 
CPU:       Topology: Dual Core model: Intel Core i3-7100 bits: 64 type: MT MCP L2 cache: 3072 KiB 
           Speed: 2459 MHz min/max: 800/3900 MHz Core speeds (MHz): 1: 2459 2: 2902 3: 3549 4: 3528 
Graphics:  Device-1: Intel HD Graphics 630 driver: i915 v: kernel 
           Display: x11 server: X.Org 1.20.11 driver: intel resolution: 1920x1080~60Hz 
           OpenGL: renderer: Mesa Intel HD Graphics 630 (KBL GT2) v: 4.6 Mesa 21.0.3

superuser ★★★ ()

Битые драйвера (тебя взломали, и следят через дыры в шейдерах!) Проверь контрольные суммы, пересобери, переставь, обнови.

anonymous ()
Ответ на: комментарий от BceM_IIpuBeT

Благодарю всех отписавшихся, похоже надо будет обновить операционку, и проблема решится. Коль именно на hd4000 в nixos 21.05 работает (а это в районе ядра 5.10), а у комментаторов на 5.4-5.13 проблем нет, значит должно сработать.

Xintrea ★★★★★ ()
Ответ на: комментарий от anonymous

Встройка давно находится в процессоре, а не в чипсете.

В данном случае вроде как в чипсете:

https://www.ixbt.com/mainboard/intel/intel-d915gux-i915g.shtml

Но вообще я не слежу за технологиями, может сейчас уже и чипсет и видеокарта в процессор вставляется.

Xintrea ★★★★★ ()
Последнее исправление: Xintrea (всего исправлений: 1)
Ответ на: комментарий от Xintrea

У тебя ноутбук, а ты какую-то десктопную плату притащил, зачем?

Вон выше у тебя lspci пишет «Intel Corporation 3rd Gen Core processor Graphics Controller», в 3rd Gen (ivy bridge) встройка в процессоре.

Гугл пишет что в HP 450 ставили Core i5 3210M, это точно ivy bridge.

anonymous ()
Ответ на: комментарий от Xintrea

Да, видеокарточка в процессоре:

https://ark.intel.com/content/www/ru/ru/ark/products/71670/intel-core-i7-3632...

Вопрос в том, что во что вставлено. Если раньше видеокарту вставляли в чипсет i915g, то теперь толи чипсет встроен в процессор, а видеокарта в чипсет, толи видеокарта напрямую в процессор без «матрешки» в виде чипсета. Но если напрямую, то при чем тут драйвер i915, его просто исторически так продолжили называть?

Xintrea ★★★★★ ()

В общем, обновился до Debian 10, ядерный модуль обновился:

filename:       /lib/modules/4.19.0-17-amd64/kernel/drivers/gpu/drm/i915/i915.ko
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
vermagic:       4.19.0-17-amd64 SMP mod_unload modversions

А так же обновилась Mesa с 13.0.6 до 18.3.6. В месте с ней обновилась, что неплохо, и версия OpenGL: была Max core profile version 3.3, а стала 4.2
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
    Max core profile version: 4.2
    Max compat profile version: 3.0
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.0
OpenGL core profile version string: 4.2 (Core Profile) Mesa 18.3.6
OpenGL core profile shading language version string: 4.20
OpenGL version string: 3.0 Mesa 18.3.6
OpenGL shading language version string: 1.30

Проблема с неправильным расчетом арктангенса через функцию atan() исчезла.

Xintrea ★★★★★ ()
Ответ на: комментарий от anonymous

Позволил себя поиграть в эту игру чуть-чуть тщательнее.Точно воспроизводится в Debian Stretch (9.13). После установки mesa 18.2.8 из stretch-backports вместо родной mesa 13.0.6 ошибка не проявляется. Ядро Linux, вроде, не влияет.

Toxo2 ()