Блог
Названная видеокарта без WebGPU: почему сайт считает это подделкой
Команда ARMANOS6 мин
Сайт спрашивает о карте дважды
Первый вопрос простой: имя видеокарты страница читает у браузера сама, без всякого разрешения, и получает его в первую же секунду. Здесь профиль отвечает за всё, и ответ приходит ровно тот, что записан в его настройках.
Второй ответ странице в руки не даётся: свой опрос карты браузер держит при себе. Наружу выходит только следствие, и заметнее всего WebGPU.
- 1
Имя, которое вы выбрали
Производитель и рендерер WebGL: эту пару сайт читает прямо со страницы.
- 2
Состояние держит браузер
На каждое умение своя строка, и в ней состояние, а не имя.
- 3
Что сайт складывает сам
Названная карта, за которой нет WebGPU, стоит второго взгляда.
Что отвечает сервер без видеокарты
Профили часто живут на арендованном сервере Windows, а своей видеокарты у такого сервера нет: рисовать там некому и незачем, а место в стойке стоит денег. Именно поэтому его ответ стоит прочитать целиком.
Все строки таблицы умений приходят выключенными. Часть работы забирает программная отрисовка, а за остальными нет ничего вовсе. Таблица эта у браузера одна на всех, и рисуется она из того, что видит сама машина.
| Замерено на арендованной машине | Ответ |
|---|---|
| Строк умений отдал движок | 14 |
| Строк, которые ведёт видеокарта | 0 |
| Строк, ушедших на программный путь | 5 |
| Карт перечислила машина | 2, один и тот же простой драйвер |
| Записей о драйверах перечислила машина | 0 |
Какие пять строк ушли на программный путь
Из четырнадцати строк умений пять сервер отдал программной отрисовке: холст, сборка страницы, растеризация, раскодирование видео и его кодирование. Всё это делает процессор, медленно и честно, и по скорости отрисовки это тоже заметно.
Остальные девять выключены вовсе, и среди них две самые заметные для площадки: WebGL и WebGPU. Страница, которая просит нарисовать треугольник, получает отказ, а не картинку, и записывает этот отказ рядом с именем карты.
Что сервер пишет о себе сам
Рядом с таблицей умений браузер оставляет строку о том, кто рисует: «Microsoft Basic Render Driver» через ANGLE поверх Direct3D 11. Это стандартный программный отрисовщик Windows, и он подписан своим именем, так что гадать площадке не приходится.
Площадка читает эту же строку и делает свой вывод: перед ней сервер, а не ноутбук. Профиль здесь бессилен, потому что строку пишет не он, а сама система, у которой карты нет.
Имя от профиля, остальное от машины
Так на арендованном сервере складывается пара, которую площадка видит целиком: имя карты приходит от профиля и звучит как ноутбук, а состояние приходит от машины и звучит как сервер без карты. Каждая половина по отдельности обычна, вместе они спорят, и спор этот виден одним запросом.
Поэтому и совет один: имя карты подбирайте под ту машину, на которой профиль живёт. Профилю на сервере без карты имя ноутбучной карты только вредит: площадка сложит два ответа и получит машину, которой не бывает.
WebGPU на такой машине нет вовсе
WebGPU это вторая, более новая дорога к тому же железу, и площадки начинают спрашивать по ней всё чаще, особенно крупные. На такой машине она не узкая, её нет вовсе: спрашивать попросту не у чего.
Что при запуске без окна, что с настоящим окном на экране, видеокарта отвечает одно и то же: три способа запуска, каждый дважды, все 6 попыток совпали.
Запуск как есть
Входа нет вовсе.
Программный поставщик по просьбе
Входа нет, и просьбе не к чему прикрепиться.
Программная отрисовка целиком
Входа нет ни при запуске без окна, ни с окном.
Почему ключ запуска здесь не спасает
Ключ запуска выбирает, какой поставщик обслужит WebGPU, и на машине с картой это работает как задумано. Против выключенного умения он бессилен: браузер пометил его раньше, чем дело дошло до поставщика.
Эта пометка лежит слоем ниже того, чем ключи распоряжаются. Ни одно их сочетание её не сдвинуло, и дописывать ключи в профиль здесь незачем.
Имя карты это лёгкая половина
Имя карты приезжает к сайту парой: производитель и рендерер WebGL движутся вместе, и порознь их профиль не выдаёт. Это лёгкая половина, потому что её задаёт запись в профиле, а не железо под ним. У каждой платформы свой набор таких пар.
Выберите другую пару в поле «WebGL» («Отпечаток > Изменить значения»), и архитектура процессора у профиля перерисуется следом, без отдельной правки руками. Карта одного семейства рядом с процессором другого описывает машину, которую никто не продаёт.
- 1
Пара движется вместе
Производитель без своего рендерера это расхождение, видное любой проверке.
- 2
Набор выбирает платформа
Строка рендерера Windows совсем не похожа на ту, что даёт машина Linux.
- 3
Процессор следует за картой
Выбор другого рендерера перерисовывает архитектуру, о которой сообщает профиль.
Сколько карт бывает у профиля
Список карт свой у каждой платформы: у настольного профиля Windows их семь видов, у macOS десять, и списки эти не пересекаются. Выбор из списка падает профилю по его зерну, и два ваших профиля чаще всего получают разные карты, хотя стоят на одной машине.
Имя приходит парой: производитель и рендерер едут вместе и по отдельности не меняются. Пара из чужих половин была бы заметнее любой отдельной строки.
Ядра следуют за картой
Число ядер у чипа Apple задано самим чипом: M1 это восемь, M2 Max двенадцать, M3 Max четырнадцать или шестнадцать. Другого числа у такого чипа не бывает, и площадка это знает не хуже нас. Профиль берёт число из набора, положенного именно этой карте.
Общий набор на все чипы давал бы десять ядер у M2, которого не бывает, и площадка с таблицей чипов увидела бы это первой. Поэтому у каждого класса карт свой набор, и согласование идёт при сохранении правок.
Если сервер отвечает пусто
Ответ арендованного сервера без карты это не поломка профиля, а свойство самой машины, и переустановка программы его не изменит. Поменять его из профиля нельзя: страница читает состояние у браузера, а браузер у системы, и подменять эту цепочку мы не берёмся.
Если вам важна живая отрисовка, берите машину с картой: настольную, ноутбук или сервер с выделенной видеокартой. На такой машине те же строки таблицы умений оживают, и профиль отвечает уже не пустотой, а тем, что умеет настоящая карта.
Чего мы про Windows не обещаем
Снять картинку через WebGPU на этой машине не вышло, потому что снимать было не с чего: у сервера нет карты, а без неё нет и дороги. Непройденную строку мы считаем провалом, а не пропуском, и такую сборку не принимаем.
Поэтому про WebGPU на Windows вы услышите от нас ровно то, что показал замер на этой самой машине. Дорогу, по которой никто не проехал, открытой мы не называем.
Чего это не утверждает
- Это не значит, что WebGPU работает на машине Windows, у которой видеокарта есть. На такой машине дорога ещё не замерена, и до тех пор мы не говорим о ней ни того, ни другого.
- Числа выше сняты на одном арендованном сервере без видеокарты. Настольная машина с картой ответит иначе, и переносится отсюда вид ответа, а не сами числа.
- Это не значит, что сошедшиеся имя и состояние делают ваш профиль безопасным. Убрано одно противоречие из многих, а поведение, платёжные данные и история аккаунта остаются нетронутыми любым браузером.
- Таблица умений принадлежит той машине, на которой всё идёт. Профиль своей не носит, и ARMANOS Browser её не переписывает.
Где это можно увидеть самому
Каждое число выше выходит из файла, который можно открыть и прочитать.
- Таблица умений, которую отдала машина
- docs/замеры/gpu-status-windows-04-09.log
- 6 попыток WebGPU на той же машине
- docs/замеры/webgpu-windows-04-09.log
- Набор пар по платформам и с чем сверяют выбор
- packages/shared/src/index.js
- Неизмеренная строка WebGPU считается провалом
- engine/scripts/engine-invariants.js
- Выбранная рукой пара хранится вместе с профилем
- apps/desktop/src/main/main.js
Вопросы
- Почему не подогнать таблицу под имя карты?
- Это собственный ответ машины о её драйверах, а не значение, которое носит профиль. Подогнанная таблица изменила бы отрисовку сразу всем профилям на этом компьютере.
- Значит сервер плохое место для профилей?
- Значит сервер отвечает про видеокарту так, как отвечает сервер. Сайт, встретивший названную карту без WebGPU за ней, видит машину без карты, на которую он и смотрит.
- Программный отрисовщик заполнил бы таблицу?
- Он сдвинул бы часть строк, но не приговор. Умение помечено выключенным ещё до того, как дело дошло до поставщика.
- Имя карты где-нибудь хранится на диске?
- Пока имя выводится, нет: пара берётся из зерна профиля при каждом запуске. Выбранную вами пару программа хранит вместе с профилем, чтобы следующий запуск её не потерял.
- Меняет ли что-нибудь прокси?
- Нет. Адрес приходит со стороны, а каждый описанный здесь ответ рождается на машине перед вами.
Рядом с этим
Отпечаток WebGPU
Вторая дорога к тому же железу и что она отдаёт наружу.
Строка рендерера WebGL
Строка, которая называет карту, и насколько её можно сдвинуть.
Движок, который мы собираем
Что изменено внутри браузера и что на нём замерено.
Бесплатная проверка отпечатка
12 значений, прочитанных в вашем браузере, и ни одного запроса наружу.
Посмотрите, что отвечает ваш браузер
Проверка читает 12 значений и никуда их не отправляет.