Что такое vulkan run time libraries и для чего он нужен
Что такое Vulkan Runtime Libraries, которые вы видите в установленных программах?
Что такое библиотеки Vulkan Run Time
Что это за библиотека времени выполнения Vulkan, которую я вижу на панели управления или в настройках? Должен ли я удалить его?
Поскольку инструмент устанавливается на ваш компьютер без каких-либо уведомлений, беспокоиться о нем очевидно, так как это может быть и вредоносная программа. Прочитав этот пост, вы можете проверить, установлено ли это на вашем компьютере.
Для этого перейдите на Панель управления вашего компьютера и нажмите Удалить программу. Прокрутите список программ и посмотрите, есть ли инструмент под названием Vulcan Runtime Libraries.
Vulcan Run Time Libraries, как упоминалось ранее, является инструментом, используемым в 3D играх. Хотя не все игры используют его, некоторые очень популярные игры, такие как Dota 2, Talos Principle, Star Citizen, CryEngine, Unity и т. Д., Требуют этого. Поэтому, если вы не используете ни одну из этих игр, вы можете удалить ее с ПК, не оказывая никакого влияния на производительность.
Просто имейте в виду, что вы не сможете снова установить инструмент вручную, поэтому проверьте еще раз, прежде чем удалить его, потому что некоторые из ваших игр на ПК могут работать некорректно без Vulcan Runtime Libraries.
Если вы удалили программу с вашего ПК и вам снова понадобится играть в игры, вам необходимо переустановить графический драйвер на вашем ПК.
Vulkan Run Time Libraries в Windows (10, 8, 7) – что это?
Порой многие замечали, что после обновления или установки драйверов на графический адаптер, в разделе программ создается ярлык Vulkan Run Time Libraries. И возникает резонный вопрос: «Что же это за программа?». Давайте подробнее рассмотрим, что из себя представляет это приложение, и нужно ли его использовать обычному пользователю.
Vulkan Run Time Libraries — интерфейс API, который позволяет разработчикам получить больше возможностей для управления производительностью графического процессора, в работе с двух и трехмерной графикой (API — интерфейс для разработки приложений). Одной из особенностей этой утилиты является возможность использовать ее как на операционных системах Windows так и на Linux с Android.
Изначально Vulkan Run Time назывался «glNext» («следующий GL»), и по мнению разработчиков, должен был прийти на замену Open GL и DirectX. Разработчиками является компания Khronos Group. Vulkan был представлен на Game Developers Conference три года назад. В его разработке принимали участие специалисты, которые работали в AMD.
Vulkan Run Time Libraries – это инструмент, который способен вывести производительность современных компьютеров на новый уровень
Зачем используется Vulkan Run Time Libraries?
Vulkan Run Time разработан для того, чтобы обеспечить большую производительность графических процессоров для работы в 2D и 3D пространстве. Целью разработчиков является обеспечение высоких показателей при наименьшем расходе ресурсов. Обладая более простыми и легковесными драйверами, Vulkan меньше расходует ресурсов и с большей скоростью производит процесс обработки графических команд по сравнении с OpenGL и DirectX. Данный API хорошо оптимизирован для работы на многоядерных процессорах. Из-за его уникальных особенностей, он отлично взаимодействует с играми, в которых используется 3D графика, позволяет получить более детализированную картинку. Также подходит и для других приложений, требующих выполнения тяжелых графических задач.
Хотелось бы отметить, какие преимущества имеет Vulkan перед аналогичными интерфейсами для пользователей.
Для разработчиков тоже есть интересные моменты:
Но ко всем плюсам есть и небольшой недостаток — приложения, которые традиционно используют DirectX, могут конфликтовать с софтом Vulkan.
Как Vulkan попадает на компьютеры?
Как правило, API Vulkan устанавливается в систему пользователя вместе с установкой драйверов для видеокарт Nvidia. Представители компании Nvidia начали выпуск драйверов с поддержкой Vulkan Run Time не только для операционной системы Windows, но и для Linux с Android. При этом указывается, что при его использовании пользователи получат прирост в FPS, более глубокую детализацию графики и увеличение производительности во многих играх. Другой крупный поставщик видеокарт — AMD Radeon, открыто не производит распространение, но по заявлению разработчиков, поддерживает данную утилиту на основе ядра CGN.
Если по каким-либо причинам на компьютере нет данного API, утилиту можно скачать с официального сайта Nvidia. Либо проверить актуальные обновления драйверов видеоадаптера через утилиту GeForce Experience. Vulkan не устанавливается в систему при использовании встроенной видеокарты с интегрированной графикой.
Где находится на компьютере?
Проверить, установлен ли Vulkan в системе, достаточно просто.
Для операционной системы Windows 10 необходимо пройти по следующему пути: Пуск → Параметры → Приложения и возможности и найти его в списке установленных приложений.
Для Windows 7 или операционных систем ниже классом, можно зайти в Панель управления → Программы и компоненты → Удаление программ. В появившемся списке можно будет найти данную программу.
Одним из альтернативных вариантов, можно напрямую попасть в папку, где установлена данная программа. Через путь C:\Program Files \VulkanRT. Для операционных систем 32 битной разрядности, она может быть в C:\Program Files (x86)\VulkanRT.
Зачем он нужен пользователю и как его удалить?
Как правило, Vulkan подходит тем пользователям, которые любят играть в игры или используют компьютер для сложных графических задач. Из-за того, что API Vulkan обеспечивает лучшую производительность и совместимость приложений, без него может произойти замедление скорости работы программ, либо некоторые приложения могут не запуститься без его поддержки. Присутствие данной библиотеки на компьютере пользователя не несет критической нагрузки на систему. Если же вы удалили данную утилиту, придется заново переустанавливать весь пакет графических драйверов.
Для пользователей, которые решили, что нет необходимости в данном API, Vulkan можно удалить стандартными методами. Нужно также зайти в Панель управления → Программы и компоненты → Удаление программ, правой кнопкой кликнуть по приложению и выбрать удалить.
Какие игры поддерживает?
Vulkan Run Time Libraries достаточно молодой проект и еще не все игры его полностью используют. Первым примером интеграции API Vulkan была игра The Talos Principles, в которой утилита показала более рациональное использование оперативной памяти видеокарты. Так же его поддержку реализовали в таких популярных играх как Doom, Dota 2, Need for Speed. Полный список игр, которые его поддерживают, можно найти на этой странице в Википедии. Кроме игр Vulkan поддерживают эмуляторы — Dolphin и игровые движки Source 2, Unity и CryEngine.
Подведем итог. Какие возможности предоставляет данная программа?
API Vulkan используется разработчикам для повышения уровня производительности GPU процессоров в современных графических задачах. Это позволяет пользователям увидеть более качественную и детализированную картинку при более скромном использовании ресурсов системы.
Время от времени вы прокручиваете список программ, просматриваете установленные приложения, рабочие процессы в диспетчере задач, и наверняка натыкались на не известную вам программу, процесс. Одной из таких программ с которой вы столкнетесь это Vulkan Run Time Libraries. Давайте выясним, что это такое, цель программы и что вы должны с этим делать. Заранее скажу, что это не вирус и не программа от казино «Вулкан».
Для чего нужен Vulkan?
Vulkan находится на моем компьютере?
Вы можете легко проверить, есть ли у вас библиотеки Vulkan Run Time Libraries, установленные на вашем компьютере или ноутбуке.
В Windows 10 откройте «Все параметры» > «Приложения» > «Приложении и Возможности«. Если вы видите запись Vulkan Run Time Libraries 1.0.54.0 или другую версию, значит он установлен уже в вашей системе Windows 10.
В Windows 7 зайдите в «Панель управления» > «Программы и компоненты» или «Удаление программ». Прокрутите страницу вниз, чтобы найти запись.
Еще можно просто зайти на локальный системный диск, где установлена сама windows, по следующему пути C:\Program Files (x86)\VulkanRT. Она может быть в папке и без (x86).
Как Vulkan попал на мой компьютер?
Если вы не помните установку Vulkan, то не переживайте. Когда вы обновили или установили новейшие драйвера видеокарты, то Vulkan Run Time Libraries установится автоматически. Обе графические карты NVIDIA и AMD теперь включают в себя Vulkan с обновлением драйверов. Поскольку Vulkan был выпущен только в начале 2016 года, старые видеокарты могут его не поддерживать.
Какие игры поддерживает Vulkan?
Помимо этих игр, эмуляторы поддерживают Vulkan, такие как Dolphin (который эмулирует Nintendo GameCube) и игровые движки, такие как Source 2, Unity и CryEngine. Таким образом, мы можем ожидать больше игр с помощью Vulkan в будущем.
Должен ли я удалить Vulcan?
Если у вас установлен Vulkan на вашем компьютере, то вы скорее всего геймер или любитель поиграть в игры. Поскольку он загружается только с новейшими драйверами видеокарты. Вы не получите Vulkan при использовании встроенной видеокарты с интегрированной графикой.
Вы обязательно должны оставить и не удалять Vulkan с компьютера. Поскольку это новейший графический API, без помощи которого вы не сможете запускать более новые игры. Кроме того, нет возможности установить отдельно программу Vulkan Run Time Libraries. Если вы удалите ее, и решили потом снова установить, то вам придется переустановить графические драйверы видеокарт. Наличие этой библиотеки на вашем компьютере не приведет ни к каким поломкам. Он занимает мало места, не отвлекает вас разными уведомлениями и не является вирусом, как многие думают.
Теперь вы знаете, что такое Vulkan Run Time Libraries, почему они находятся на вашем компьютере и что они делают для вас. Любой компьютерный геймер должен иметь этот набор библиотек в своей системе, чтобы последние игры шли гладко. Вы должны получать обновления для Vulkan, когда вы обновляете свои графические драйверы, поэтому вам не о чем беспокоиться.
Vulkan Run Time Libraries – что это за программа и для чего она нужна
Доверив установку Windows друзьям или спецам из сервисного центра, в списке установленных десктопных приложений нередко можно будет обнаружить нежданчик – странную программу под названием Vulkan Run Time Libraries. При этом она почти нигде не фигурирует, ни в меню Пуск, ни на Рабочем столе нет ее ярлыков. Что же это такое Vulkan Run Time Libraries, откуда берется и зачем вообще нужно?
Назначение приложения
Надо сказать, что обнаружить данную программу на компьютере можно не только после установки системы, но также и после инсталляции/обновления графических драйверов NVIDIA. Отсюда сразу возникает мысль, что странная софтина каким-то образом связана с графическим пакетом. Так оно и есть. Vulkan Run Time Libraries – это интерфейс прикладного программирования или иначе API низкого уровня, предоставляющего разработчикам широкие возможности в управлении графическим процессором. Говоря простым языком, Vulkan Run Time позволяет оптимизировать работу видеокарты, а также улучшать качество двухмерной и трехмерной графики в играх и других приложениях.
Инструмент этот относительно новый, создан он был в 2015 году компанией Khronos Group при содействии производителя AMD и изначально именовался glNext.
По замыслу разработчиков, программное обеспечение должно стать более современной альтернативой DirectX, а в будущем, возможно, вытеснить последний, причем шансы на успех у Vulkan Run Time Libraries довольно высоки. В отличие от совместимого только с Windows пакета DirectX, данный API может быть использован на разных операционных системах, есть также у него и другие преимущества и особенности. Среди них:
Как установить или удалить
Программа Vulkan Run Time Libraries, как правило, устанавливается на ПК вместе с драйверами NVIDIA. Если вы вдруг встретите ее как отдельный компонент на сторонних сайтах, не скачивайте и не устанавливайте оттуда. Если же API вам так нужен, качайте соответствующие драйвера с официального ресурса developer.nvidia.com/vulkan-driver. Файлы Vulkan Run Time хранятся обычно в расположении C:/Program Files (x86)/VulkanRT/№версии.
Графического интерфейса приложение не имеет, при запуске исполняемого файла vulkaninfo.exe открывается консольное окно с указанием версии API и служебной информации.
И последнее. Можно ли удалить Vulkan Run Time Libraries и если да, как это скажется на работе системы и драйвера NVIDIA? Да, удалить компонент можно как обычное приложение, запустив апплет «Установка и удаление программ».
На работе Windows и драйверов NVIDIA это никак не отразится, но мы бы не стали рекомендовать вам избавляться от Vulkan Run Time без особой нужды, особенно если вы причисляете себя к любителям компьютерных игр.
VulkanRT: для чего нужна программа и какие у нее функции?
Относительно недавно вышел новый Vulkan API — можно сказать, наследник OpenGL, хотя основан Vulkan на API Mantle от AMD. Конечно, развитие и поддержка OpenGL не прекратилось, а также в свет вышел и DirectX 12. Что там с DirectX 12 и почему его поставили только на Windows 10 — я, к сожалению (а может и к счастью) не знаю. Но вот кроссплатформенный Vulkan меня заинтересовал. В чём же особенности Vulkan и как правильно его использовать я постараюсь рассказать вам в этой статье.
Итак, для чего нужен Vulkan и где он может быть использован? В играх и приложениях, работающие с графикой? Конечно! Вычислять, как это делает CUDA или OpenCL? Без проблем. Обязательно ли для этого нам нужно окно или дисплей? Конечно нет, вы можете сами указать, куда транслировать ваш результат или не транслировать его вообще. Но обо всём по порядку.
Оформление API и основы
Пожалуй, стоит начать с самого простого. Так как над Vulkan API работали Khronous Group, синтаксис весьма похож на OpenGL. Во всём API есть префикс vk. К примеру функции (порой даже с очень длинными названиями) выглядят так: vkDoSomething(…), имена структур или хэндлов: VkSomething, а все константные выражения (макросы, макровызовы и элементы перечислений): VK_SOMETHING. Также, есть особый вид функций — команды, которым добавляется префикс Cmd: vkCmdJustDoIt(…).
Писать на Vulkan можно как на C, так и на C++. Но второй вариант даст, конечно же, больше удобства. Есть (и будут создаваться) порты на другие языки. Кто-то уже сделал порт на Delphi, кто-то желает (зачем?) порт на Python.
Итак, как же создать рендер контекст? Никак. Здесь его нет. Вместо это придумали другие вещи с другими названиями, которые даже будут напоминать DirectX.
Какие игры поддерживает Vulkan?
Помимо этих игр, эмуляторы поддерживают Vulkan, такие как Dolphin (который эмулирует Nintendo GameCube) и игровые движки, такие как Source 2, Unity и CryEngine. Таким образом, мы можем ожидать больше игр с помощью Vulkan в будущем.
Начало работы и основные понятия
Vulkan разделяет два понятия — это устройство
(
device
) и
хост
(
host
). Устройство будет выполнять все команды, отправленные ему, а хост будет их отправлять. Фактически, наше приложение и есть хост — у Vulkan такая терминология.
Для работы с Vulkan нам понадобится хэндлы на его экземпляр
(
instance
), и может быть даже не один, а также на
устройство
(
device
), опять же, не всегда может хватать одного.
Vulkan может быть легко загружен динамически. В SDK (разработали LunarG), если был объявлен макрос VK_NO_PROTOTYPES и загружать библиотеку Vulkan своими руками (не линковщиком, а определёнными средствами в коде), то прежде всего нужна будет функция vkGetInstanceProcAddr, с помощью которой можно узнать адреса основных функций Vulkan — те которые работают без экземпляра, включая функцию его создания, и функции, которые работают с экземпляром, включая функцию его разрушения и функцию создания устройства. После создания устройства можно получить функции, которые работают с ним (а также его дочерними хэндлами) через vkGetDeviceProcAddr.
Интересный факт: в Vulkan всегда нужно заполнить определённую структуру данными, чтобы создать какой-либо объект. И всё в Vulkan работает примерно таким образом: заранее подготовил — можно использовать часто и с высокой производительностью. В информацию об экземпляре можно также поместить информацию о вашем приложении, версии движка, версии используемого API и другую информацию.
Как удалить Vulcan Runtime Libraries
Если вас интересует, как удалить Vulcan Runtime Libraries, то, прежде всего, замечу, что данную программу удалять не рекомендуется, так как она способствует приросту производительности и улучшению качества графики на вашем компьютере. Если же вы решили её удалить, то необходимо перейти в стандартное удаление программ, найти там программу (программы) Вулкан и удалить её.
Также можно перейти по пути, описанном в предыдущем разделе, и в данной директории запустить находящийся там деинсталлятор продукта (UninstallVulkanRT).
Слои и расширения
В чистом Vulkan нет сильных проверок входящих данных на правильность. Ему сказали что-то сделать — он сделает. Даже если это приведёт к ошибке приложения, драйвера или видеокарты. Это сделали ради производительности. Тем не менее, можно без проблем подключить проверочные слои
, а также
расширения
к экземпляру и/или устройству, если это необходимо.
Слои (layers)
В основном, предназначение слоёв — проверить входящие данные на ошибки и отслеживать работу Vulkan. Работают они очень просто: допустим, вызываем функцию, и попадает она в самый верхний слой, заданный при создании устройства или экземпляра ранее. Он всё проверяет на правильность, после этого передаёт вызов в следующий. И так будет, пока дело не дойдёт до ядра Vulkan. Конечно же, можно создать собственные слои. Например, Steam выпустила слой SteamOverlay (хотя и не знаю, что он вообще делает). Тем не менее, слои будут молчать, но не доведут до краха приложения. Как узнать, правильно ли всё сделано? Для этого есть специальное расширение!
Расширения (extensions)
Как следует из названия, они расширяют работу Vulkan дополнительным функционалом. Например, одно расширение (debug report) будет выводить ошибки (и не только) со всех слоёв. Для этого нужно будет указать необходимую Callback функцию, а что делать с информацией, поступившей в эту функцию — решать уже вам. Учтите, что это Callback и задержка может вам дорого обойтись, особенно если выводить всю полученную информацию прямиком в консоль. После обработки сообщения, можно указать, передавать ли вызов функции дальше (в следующий слой) или нет — так можно избежать критических ошибок, но постараться работать дальше с менее опасными ошибками. Есть также и другие расширения, о некоторых я расскажу позже в этой статье.
Мои рекомендации
Гуглил инфу — нашел такую информацию, просто скриншот результатов поиска:
Намекаю:
Первое что нужно сделать — найти VulkanInfo на локальном диске, если будет несколько копий — советую каждую проверить ВирусТоталом.
Как искать:
Что делать после поиска? Каждый найденный файл нужно проанализировать и отправить на проверку:
Если была угроза найдена, что делать? В таком случае:
Устройство
Vulkan разделяет понятия физического устройства и логического. Физическим устройством
может быть ваша видеокарта (и не одна) или процессор, поддерживающий графику.
Логическое устройство
создаётся на основе физического: собирается информацию о физических устройствах, выбирается нужное, подготавливается другая необходимая информация и создаётся устройство. Может быть несколько логических устройств на основе одного физического, но вот объединять для единой работы физические устройства (пока?) нельзя.
Итак, что же за информацию мы собираем? Это, конечно же, поддерживаемые форматы, память, возможности и, конечно же, семейства очередей.
Что это за программа?
Новое поколение видеокарт от GeForce Nvidia для обработки широкополигональных игровых текстур использует новый тип драйверов. – это продолжение традиций OpenGL в новом исполнении. Появилась эта технология с релизом Windows 10. Поэтому сегодня все больше пользователей сталкиваются с одноименным процессом в диспетчере задач и системными папками с аналогичным названием.
VulkanRT Nvidia — кроссплатформенное приложение. Софт оказался удачным, и подходит для компьютера, для мобильных устройств и консолей. Разработчики считают технологию удачной за счет оптимизации ресурсов, и потенциала, поэтому в ближайшем будущем она будет применяться в новых устройствах и окончательно заменит устаревшую технологию OpenGL.
Очереди (queue) и семейства очередей (queue family)
Устройство может (или не может) делать следующие 4 вещи: рисовать графику, производить разные вычисления, копировать данные, а также работать с разреженной памятью (sparse memory management). Эти возможности представлены в виде семейств очередей: каждое семейство поддерживает определённые (может быть все сразу) возможности. И если идентичные семейства были разделены, Vulkan всё равно представит их как одно семейство, чтобы мы не так сильно страдали с кодом и выбирали нужное семейство.
После того, как вы выбрали нужное (или нужные) семейства, из них можно получить очереди. Очереди — это место, куда будут поступать команды для устройства (потом устройство их будет брать из очередей и выполнять). Очередей и семейств, кстати, не сильно много. У NVIDIA обычно 1 семейство со всеми возможностями на 16 очередей. После того, как вы закончили с подбором семейств и количеством очередей, можно создавать устройство.
Вулкан AMD
В 2020 году Kronos Group разработала свой собственный API. Vulkan – это низкоуровневый API, используемый для разработки графически требующих приложений. Его первая стабильная версия дебютировала в августе 2020 года.
Следует четко указать, что «низкий уровень» не относится к качеству. Вместо этого этот термин описывает способность Вулкана работать на аппаратном уровне.
Хронос окружает себя одними из самых больших имен в ИТ-индустрии. Некоторые из них – Google, Intel, Sony, Nvidia и AMD. Последние два дали API, свести к минимуму время разработки Vulkan.
OpenGL – популярный API среди графических дизайнеров. Фактически он был разработан Хроносом, и он также включает в себя многие характеристики Вулкана. Однако его прием игровыми дизайнерами был непредвиденным.
Одним из самых сильных активов Vulkan является тот факт, что он с открытым исходным кодом. Кроме того, совместимость Vulkan с несколькими платформами вместе с общей производительностью – это два дополнительных актива, которые делают его более прибыльным, чем DirectX.
Здесь вы можете найти полный список с именами, которые содержат Khronos. Мантия обеспечила основную базу, на которой был разработан Вулкан. Наконец Vulkan в настоящее время находится в версии 1.1.
Команды, их исполнение и синхронизация
Все команды для устройства помещаются в специальный контейнер — командный буфер. Т.е. не существует ни одной функции в Vulkan, которая сказала бы устройству сделать что-либо сразу, и при завершении операции вернуть управление приложению. Есть только функции заполнения командного буфера определёнными командами (например, нарисовать что-либо или скопировать изображение). Только после записи командного буфера на хосте мы можем его отправить в очередь, которая, как уже известно, находится в устройстве.
Командный буфер бывает двух видов: первичный и вторичный. Первичный отправляется прямо в очередь. Вторичный же не может быть отправлен — он запускается в первичном. Записываются команды в таком же порядке, в каком были вызваны функции. В очередь они поступают в таком же порядке. А вот исполнятся они могут почти в «хаотичном» порядке. Чтобы не было полного хаоса в приложении разработчики Vulkan предусмотрели средства синхронизации.
Теперь, самое важное: хост не
ожидает завершения исполнения команд и командных буферов. По крайней мере до того момента, пока не укажете это явным способом. После отправления командных буферов в очередь управление сразу возвращается приложению.
Есть 4 примитива синхронизации: забор (fence), семафор (semaphore), событие (event) и барьер (barrier).
самый простой метод синхронизации — он позволяет хосту ожидать выполнение определённых вещей. Например, завершения выполнения командного буфера. Но используется забор редко.
— способ синхронизации внутри устройства. Никак нельзя посмотреть его состояние или подождать его на хосте, нельзя также ждать его внутри командного буфера, но можем указать, какой семафор должен подать сигнал при завершении исполнения всех команд буфера, и какой семафор ждать перед тем, как начать выполнение команд в буфере. Только ждать будет не весь буфер, а его определённая стадия.
Стадии конвейера (pipeline stages) и зависимости исполнения
Как уже было сказано, не обязательно команды в очереди будут исполнятся по порядку. Если быть точнее, то последующие команды не будут ждать завершения предыдущих. Они могут выполнятся параллельно, или исполнение предыдущей команды может завершиться намного позже последующих. И это вполне нормально. Но некоторые команды
зависят
от исполнения других. Вы можете разделить их на два берега: «до» и «после», и также указать, какие стадии берега «до» должны обязательно выполнится (т.е. команды могут завершиться не полностью или не все), прежде чем начнут выполняться указанные стадии команд берега «после». Например, отрисовка изображения может приостановиться, чтобы сделать определённые вещи, а потом снова продолжить делать рисовать. Также может быть и цепочка зависимостей, но не будем уходить глубоко в леса Сибири Vulkan.
— элемент «тонкой» настройки. Подать сигнал можно как с хоста, так и с устройства, ждать можно также и на устройстве, и на хосте. Событие определяет зависимость двух сетов команд (до и после) в командном буфере. И для события есть также специальная псевдо-стадия, которая позволяет ждать хост.
опять может быть использован только в устройстве, а ещё точнее — в командном буфере, объявляя зависимости первого и второго сета команд. Также можно дополнительно указать барьеры памяти, которые бывают трёх видов:
глобальный
барьер, барьер
буфера
и барьер
изображения
. Они не дадут ненароком прочитать данные, которые в данный момент записываются и/или наоборот, в зависимости от указанных параметров.
Конвейеры
Ниже показаны два конвейера Vulkan:
Т.е. в Vulkan есть два конвейера: графический
и
вычислительный
. С помощью графического, мы, конечно же, можем рисовать, а вычислительный… вычислять. Что же ещё? Результаты вычислений могут потом отправится в графический конвейер. Так можно с лёгкостью сэкономить время на системе частиц, например.
Изменить порядок или изменить сами стадии конвейера нельзя. Исключение составляют программируемые стадии (шейдеры). Также можно отправлять разновидные данные в шейдеры (и не только) через дескрипторы.
Для конвейера можно создать кэш, который может быть использован (снова и снова) и в других конвейерах и даже после перезапуска приложения.
Конвейер необходимо настроить и ассоциировать с командным буфером, прежде чем последний будет использовать команды конвейера.
Так как конвейер, это фактически вся информация о том, как нужно работать с поступающими данными, то смена конвейера (а это информация о шейдерах, дескрипторах, растеризации и прочее) может дорого обойтись по времени. Поэтому разработчики предоставили возможность наследования конвейера. При смене конвейера на дочерний, родительский или между дочерними уйдёт меньше затрат производительности. Но это также и удобство для разработчиков, как например ООП.
Проход отрисовки, графический конвейер и фреймбуфер
Итак, получаем следующую матрёшку:
Для того, чтобы можно было использовать команды отрисовки, нужен графический конвейер. В графическом конвейере необходимо указать проход отрисовки
(
Render Pass
), который содержит информацию о
подпроходах
(
subpass
), их зависимостей друг от друга и
прикреплениях
(
attachment
). Прикрепление — информация о изображении, которое будет использоваться во framebuffer’ах. Framebuffer создаётся специально для определённого прохода отрисовки. Чтобы начать проход, нужно указать как сам проход (а также, если нужно, подпроход), так и framebuffer. После начала прохода можно рисовать. Можно также переключаться между подпроходами. После того, как рисование завершено, можно завершить проход.
Управление памятью и ресурсы
Память в Vulkan распределяется хостом и только хостом (за исключением swapchain). Если изображение (или другие данные) нужно поместить в устройство — выделяется память. Сначала создаётся ресурс определённых размеров, затем запрашивается его требования к памяти, выделяется для него память, затем ресурс ассоциируется с участком этой памяти и только потом можно копировать в этот ресурс необходимые данные. Также, есть память, которая может быть непосредственно изменена с хоста (host visible), есть локальная память устройства (память видеокарты, например) ну и также другие виды памяти, по своему влияющие на скорость доступа к ним.
В Vulkan можно также написать своё распределение памяти хоста, настроив Callback функции. Но учтите, что требования к памяти, это не только её размер, но и выравнивание (alignment
Сами ресурсы бывают двух видов: буферы
(
buffers
) и
изображения
(
images
). И те и другие разделяются по назначению, но если буфер — просто коллекция различных данных (вершинный, индексный или буфер констант), то изображение всегда имеет свой формат.
Наставление тем, кто пишет на Vulkan
Выделяйте участок памяти, в который можете поместить сразу несколько ресурсов. Количество выделений ограничено, и вам может не хватить. Зато количество ассоциаций не ограничено.
Шейдеры
Vulkan поддерживает 6 видов шейдеров: вершинный
,
контроль тесселяции
,
анализ тесселяции
,
геометрический
,
фрагментный
(он же
пиксельный
) и
вычислительный
. Написать их можно на читаемом SPIR-V, а потом собрать в байт код, который в приложении мы запечатаем в модуль, т.е. создадим shader-модуль из этого кода. Конечно же, мы можем написать его на привычном GLSL и потом конвертировать в SPIR-V (транслятор уже есть). И, конечно же, вы можете написать свой транслятор и даже ассемблер — исходники и спецификации выложены в OpenSource, ничто не мешает написать вам сборщик для своего High Level SPIR-V. А может кто-то уже написал. Байт код потом транслируется в команды, специфичные для каждой видеокарты, но делается это намного быстрее, чем из сырого GLSL кода. Подобная практика применяется и в DirectX — HLSL сначала преобразуются в байт код, и этот байт код может быть сохранён и потом использован, чтобы не компилировать шейдеры снова и снова.
Окна и дисплеи
А закончит эту статью рассказ о WSI (Window System Integration) и цепочке переключений (swapchain). Для того, чтобы выводить что-либо в окно или на экран — нужны специальные расширения.
Для окон это базовое расширение плоскости и расширение плоскости, специфичной для каждой из систем (win32, xlib, xcb, android, mir, wayland). Для дисплея (т.е. FullScreen) нужно расширение display, но в целом и то и другое используют расширение swapchain.
Цепочка переключений не связана с графическим конвейером, поэтому простой Clear Screen выходит без настройки всего этого. Всё достаточно просто. Есть определённый движок показа (presentation engine), в котором есть очередь изображений. Одно изображение показывается на экран, другие дожидаются своей очереди. Количество изображений мы также можем указать. Есть также несколько режимов, которые позволят дождаться сигнала вертикальной синхронизации.
Метод работы примерно таков: мы запрашиваем индекс свободного изображения, вызываем командный буфер, который скопирует результат из Framebuffer в это изображение, и отправляем команду о отправки изображения в очередь. Звучит легко, но с учётом того, что потребуется синхронизация — всё чуточку сложнее, так как единственное, чего ожидает хост — это индекс изображения, которое вскоре будет доступно. Командный буфер ждёт сигнала семафора, который будет свидетельствовать о доступности изображения, и потом сам подать сигнал через семафор о том, что выполнение буфера, в следствии и копирование, завершено. И изображение действительно поступит в очередь по сигналу последнего семафора. Всего два семафора: о доступности изображения для копирования и о доступности изображения для показа (т.е. о завершении копирования).
Кстати говоря, я проверил, что один и тот же командный буфер действительно отправлялся в очередь несколько раз. Можете подумать сами, что это значит.
В этой статье я попытался рассказать о наиболее важных частях Vulkan API, но многое всё ещё не рассказано и это вы можете узнать сами. Стабильного вам FPS и приятного кодинга.
Мои рекомендации
Гуглил инфу — нашел такую информацию, просто скриншот результатов поиска:
Намекаю:
Первое что нужно сделать — найти VulkanInfo на локальном диске, если будет несколько копий — советую каждую проверить ВирусТоталом.
Как искать:
Что делать после поиска? Каждый найденный файл нужно проанализировать и отправить на проверку:
Если была угроза найдена, что делать? В таком случае:
Теперь немного картинок-подсказок.
Открытый веб-сайт ВирусТотал:
Когда файл опасен, картина будет примерно следующая:
Окно с результатами поиска, у меня на ПК отсутствует VulkanInfo, вместо, в качестве примера, использовал svchost.. вы делаете аналогично. Короче результат поиска:
Важно — проверьте где обитает каждый файл. Если он, оказывается — вирус, то в папке могут быть и другие, потенциально опасные товарищи
Свойства файла, важная инфа — графа Расположение:
Повторюсь — svchost.exe только в качестве примера. У вас будет указано VulkanInfo.exe.
Какими антивирусными утилитами лучше просканировать ПК?
Мной рекомендуемые антивирусные утилиты
Название (ссылка на офф сайт) | Короткое описание |
Dr.Web CureIt! | Мощная утилита по нахождению и удалению опасных вирусов, троянов, ботнетов и остальной заразы. Реально лучшая. Скачивается уже с вшитыми антивирусными базами. Скорость проверки зависит от количества файлов на вашем диске. |
AdwCleaner | Утилита предназначена для поиска рекламной заразы, та которая прописывается в автозагрузке, в реестре, ярлыках браузеров, встраивается в сам браузер в виде левых расширений, дополнений, короче AdwCleaner — мастер по удалению рекламной заразы. Также удаляет шпионское ПО, всякие левые модули, которые рекламируют всякую дичь. |
HitmanPro | Коллега AdwCleaner, но имеет немного другой принцип работы, сканирует компьютер более тщательно, выискивает угрозы даже там, где AdwCleaner не смогла найти (например в куки-файлах браузеров). В связи с тем, что механизм работы утилит разный — советую использовать обоих. |
Настоятельно рекомендую просканировать комп всеми тремя утилитами — эффект будет максимальный. Принцип действия каждой утилиты — разный. Две — очистят рекламную заразу, а одна — против опасных вирусов, типа троянов, которые могут украсть ваши пароли, логины, почту взломать и даже личные файлы отправить хакеру.. почитайте в нете про тип вируса троян..