LINUX.ORG.RU

Опубликован графический стандарт Vulkan 1.4

 , ,


0

2

После почти трёх лет работы консорциум Khronos, занимающийся разработкой графических стандартов, опубликовал спецификацию Vulkan 1.4, определяющую API для доступа к графическим и вычислительным возможностям GPU. Новая спецификация вобрала в себя накопившиеся расширения, которые ранее позиционировались как опциональные, а также предоставила ряд новых возможностей и повысила минимальные требования к оборудованию. Инструментарий Vulkan SDK планируют опубликовать в январе 2025 года.

Продукты с поддержкой Vulkan 1.4 готовятся выпустить компании AMD, Arm, Imagination, Intel, NVIDIA, Qualcomm и Samsung. Открытые драйверы для GPU AMD (radv), Apple M1/M2 (honeykrisp), Intel (anv), NVIDIA (nvk) и Qualcomm (tu), развиваемые проектом Mesa, уже прошли все тесты совместимости с Vulkan 1.4 из набора CTS (Khronos Conformance Test Suite) и включены в список сертифицированных драйверов. В список также включены драйверы Samsung и Qualcomm для платформы Android, а также драйверы для GPU PowerVR D-Series DXT* от компании Imagination Technologies и проприетарные драйверы NVIDIA.

Основные новшества:

  • Добавлена поддержка механизма «Streaming Transfers», предназначенного для обеспечения потоковой передачи больших объёмов данных между основной системой (хостом) и графическим устройством, не прерывая при этом рендеринг и не замедляя его производительность. Механизм реализован при помощи нового расширения VK_EXT_host_image_copy, поддержка которого является опциональной.

  • Переведены в разряд обязательных возможности, нацеленные на повышение производительности:

    • Push Descriptors — возможность записывать обновления дескрипторов непосредственно в буфер команд, вместо создания отдельных наборов дескрипторов и их привязки к буферу команд.
    • VK_KHR_dynamic_rendering_local_readпозволяет выполнять чтение из вложенных буферов (attachments) и ресурсов, записанных предыдущими фрагментными шейдерами, в рамках динамических проходов рендеринга (render pass).
    • VK_EXT_scalar_block_layout — позволяет использовать Си-подобную структуру для блоков SPIR-V, в которой можно выравнивать не скалярные типы на основе размера их компонентов.
  • В состав включены расширения VK_KHR_maintenance5 и VK_KHR_maintenance6, предоставляющее вспомогательные команды и структуры для упрощения управления ресурсами и шейдерами.

  • Гарантирована поддержка рендеринга с разрешением 8K (7680 x 4320 пикселей) и с использованием до 8 независимых буферов рендеринга.

  • В состав включены расширения:

    • VK_KHR_global_priority
    • VK_KHR_index_type_uint8
    • VK_KHR_line_rasterization
    • VK_KHR_load_store_op_none
    • VK_KHR_map_memory2
    • VK_KHR_push_descriptor
    • VK_KHR_shader_expect_assume
    • VK_KHR_shader_float_controls2
    • VK_KHR_shader_subgroup_rotate
    • VK_KHR_vertex_attribute_divisor
    • VK_EXT_pipeline_protected_access
    • VK_EXT_pipeline_robustness
  • Переведены в разряд обязательных многие возможности, ранее являвшиеся опциональными.

  • Добавлена большая порция новых команд и структур.

API Vulkan примечателен кардинальным упрощением драйверов, выносом генерации команд GPU на сторону приложения, возможностью подключения отладочных слоёв, унификацией API для различных платформ и применением предкомпилированного промежуточного представления кода для выполнения на стороне GPU.

Для обеспечения высокой производительности и предсказуемости, Vulkan предоставляет приложениям средства для прямого управления операциями GPU и встроенную поддержку многопоточной обработки команд GPU, что минимизирует накладные расходы, вносимые драйвером, а реализуемые на стороне драйвера возможности заметно упрощаются и становятся более предсказуемыми. Например, такие операции, как управление памятью и обработка ошибок, реализуемые в OpenGL на стороне драйвера, в Vulkan вынесены на уровень приложения.

Vulkan охватывает все доступные платформы и предоставляет единый API для настольных, мобильных систем и Web, позволяя использовать один общий API для различных графических процессоров и областей применения. Благодаря многослойной архитектуре Vulkan, подразумевающей создание инструментов, работающих с любыми GPU, производители оборудования могут использовать при разработке типовые инструменты для проверки кода, отладки и профилирования.

Для создания шейдеров предлагается переносимое промежуточное представление SPIR-V, основанное на LLVM и использующее общие с OpenCL базовые технологии. C Vulkan также можно использовать язык шейдеров HLSL, применяемый в DirectX, через его трансляцию в SPIR-V. Для управления устройствами и экранами в Vulkan предлагается интерфейс WSI (Window System Integration), решающий примерно те же задачи, что и EGL в OpenGL ES. Поддержка WSI из коробки доступна в Wayland — все приложения, использующие Vulkan, могут запускаться в окружении немодифицированных серверов Wayland. Возможность работы через WSI также обеспечена для Android, X11 (c DRI3), Windows, Tizen, macOS и iOS.

>>> Подробности (opennet)



Проверено: hobbit ()
Последнее исправление: CrX (всего исправлений: 3)

А вы заметили какую им js-кодеры сделали тормозную документацию? Я считаю это новый уровень веба. Приятнее info листать с помощью зажатия обоих Ctrl чем это.

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

Каким js’ом, норкоман? Там нет ни одной точки с запятой от js. Дока тормозная, потому что это один html-файл размером в 30 мегабайт, и браузер слегка призадумывается, когда его парсит.

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

Насколько я помню, js еще лет 15 назад стал самым быстрым скриптовым языком, обогнав даже луа. Где там может быть тормознутость в принципе?

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

Не хватало. Вулкан стал лучшим, что происходило в игроделе за последние лет 40. По крайней мере для линукса. Производительность игр виндовых стала неотличима от запуска на винде.

С опенгл же одни проблемы были все время.

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

JS есть, просто снимает loading pleas wait при загрузке страницы.

    function unhideLoadableContent(){
        hideElement( document.getElementById("loading_msg") );
        for( var loadable of document.getElementsByClassName("loadable") ) unhideElement(loadable);
    }

    window.addEventListener("load", unhideLoadableContent);
Попробовал убрать, загружается сразу же. Так что даже в таком крошечном коде js опять все тормозит и портит.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 4)

integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Попробовал убрать, загружается сразу же.

Попробуй поскроллить полоску слева сразу при открытии в новой вкладке.

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

Нафига вообще этот вулкан нужен, чем обычного OpenGL не хватало?

Целью Vulkan было превзойти другие API, включая его предшественника OpenGL, в части снижения накладных расходов, повышения степени прямого контроля над GPU и уменьшения нагрузки на CPU.

Ваш Кэп и Википедия (с).

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

Без JS все ок.

Да, действительно скроллинг - ок, но текст у документа навсегда остаётся «Loading… please wait.», лол. Ты прав - js тут прикрутили ни к селу, ни к городу.

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

OpenGL создавался под другую архитектуру железа хрен знает сколько лет назад и был не эффективен для работы современного железа. Вместо него теперь Vulkan

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

JS-кодеры? Там три мегабайта HTML зачем-то. Они грузят всё и сразу! Могли бы просто дать скачать PDF.

Тут как раз яркий пример того, что бывает, если дать бакенд-инженеру разрабатывать фронтенд.

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

JS-кодеры?

Да, HTML поддерживает постепенную загрузку как jpeg.

Тут как раз яркий пример того, что бывает, если дать бакенд-инженеру разрабатывать фронтенд.

Какой бекенд, это страничка с документацией!!!

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

Именно! Следи за руками.

  1. Человек выгрузил документацию в HTML файл на 3.2 мегабайта.
  2. Ему показалось отличной идеей показать процесс загрузки (как ты сказал, постепенная загрузка могла бы иметь место), но!
  3. Но вместо этого он решил накинуть JS-а, чтобы что?

Это абсолютное незнание матчасти со стороны того, кто делал документацию. Потому я и привёл аналогию про «фронтенд, сделанный бакендом».

Alinaki
()
Последнее исправление: Alinaki (всего исправлений: 1)

Новая спецификация вобрала в себя накопившиеся расширения, которые ранее позиционировались как опциональные

Казалось бы, при чём тут вяленый?.. Правильно, ни при чём. :D

pr849
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.