Safari Technology Preview 251: WebGPU загружает indexed PNG с неверными цветами при copyExternalImageToTexture. People-first проверка: карта палитры «source index → expected RGBA → uploaded RGBA → pixel coordinate»; синтетический стенд, опровержимый контроль, один обратимый шаг, stop-line и минимизированный handoff.
Ответ и граница: WebGPU
Этот запрос решается сравнением двух воспроизводимых веток на синтетическом стенде. Запрос «как проверить indexed PNG через copyExternalImageToTexture в Safari Technology Preview 251» относится только к ситуации: WebGPU загружает indexed PNG с неверными цветами при copyExternalImageToTexture. Условие успеха записывается до запуска: каждый readback pixel совпадает с palette expectation, а row order совпадает с RGBA-control. Внешне похожая ошибка сама по себе ничего не доказывает; отдельно проверяется ловушка «color-management conversion, ошибочно принятая за ошибку indexed upload в WebGPU». Граница намеренно узкая: один механизм, один synthetic fixture и одна версия. Любой соседний сбой получает отдельную гипотезу, а не подгоняется под этот commit. Производственный сайт, реальный аккаунт и пользовательские данные исключены.
Что подтверждают Release 251 и 318952@main
Официальные WebKit Release Notes датированы 26 августа 2026 года и для Safari Technology Preview 251 сообщают: исправлена неверная загрузка indexed PNG через GPUQueue.copyExternalImageToTexture. Строка релиза ведёт к первичной записи 318952@main; её commit title и доступность перепроверены 29 августа. Документы WebKit отвечают на вопрос «что изменено в ветке», но не на вопросы «как часто» и «у кого проявится». Публичные обсуждения используются лишь для обнаружения темы. Технический предел статьи совпадает с формулировкой 318952@main и не расширяется поисковым заголовком.
Стенд и рабочий артефакт 318952
Стенд: встроенный 2×2 indexed PNG с палитрой четырёх цветов, ImageBitmap и readback texture без файлов пользователя. До воздействия без интерпретации запишите: palette entries, source pixel indices, destination format, bytesPerRow, readback RGBA и row order. Рабочий артефакт — карта палитры «source index → expected RGBA → uploaded RGBA → pixel coordinate». В таблице оставляют expected/observed, единицу, build и timestamp. IP, cookie, токены, Authorization, реальные query, пути и пользовательские файлы запрещены; недоступное поле остаётся пустым с причиной. Наблюдение не интерпретируется до прохождения control и финального cleanup.
Контроль, который может опровергнуть гипотезу
Отрицательная ветка нужна, чтобы одинаковый внешний результат не подменил одинаковую причину. Для этой боли используется: RGBA PNG с теми же четырьмя цветами и прямой decode исходной indexed картинки. Он проходит тот же порядок запуска, settle-событие и набор полей, что основная ветка. Риск «color-management conversion, ошибочно принятая за ошибку indexed upload в WebGPU» получает отдельный признак. Сравнение готовят заранее и не переписывают после результата. Только раздельная реакция canary/control позволяет связать наблюдение с проверяемым условием. Такой дизайн делает тезис опровержимым и не требует доступа к исходным данным пользователя.
Одно обратимое воздействие
Разрешён один шаг: загрузить одно синтетическое indexed image в texture, скопировать обратно и уничтожить ресурсы. Сначала снимите baseline, затем выполните только указанную операцию, дождитесь заранее выбранного события завершения и повторите поля «palette entries, source pixel indices, destination format, bytesPerRow, readback RGBA и row order». Протокол имеет три точки: before, one-change и after-rollback. Различие засчитывается только между сопоставимыми снимками; невосстановившееся состояние закрывает опыт. PASS допустим, когда каждый readback pixel совпадает с palette expectation, а row order совпадает с RGBA-control. Результат не усиливают словами о массовости; production, VPN, маршрутизация, чужие сайты и реальные media остаются вне опыта.
Stop-line, решение и минимальный handoff
Любое расхождение сначала проверяют повтором baseline после rollback. Остановитесь, если decoder меняет color profile, texture format другой, alpha premultiplication не зафиксирована или adapter недоступен. Финальная запись хранит карта палитры «source index → expected RGBA → uploaded RGBA → pixel coordinate», результат контроля, отметку rollback и ссылку на 318952@main. Финальный статус не бинарный: отдельно различаются воспроизведение, отсутствие воспроизведения, отсутствие поддержки, блок среды, невалидность и нехватка данных. Воспроизводимость обеспечивают короткий fixture и рабочий артефакт, а не полный лог машины. Добавьте commit, expected, actual и отметку успешного возврата. PASS означает только условие «каждый readback pixel совпадает с palette expectation, а row order совпадает с RGBA-control». Материал не обещает индексацию, позиции, поисковый спрос, stable-поддержку или автоматическое исправление.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318952@main, техническая граница, независимый контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318952@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.