LINUX.ORG.RU

Vulkan

 , ,


1

1

Какие книжки надо прочитать, чтобы понять, как программировать для Vulkan API на языке C?

В генте, какие пакеты надо промёржить? https://wiki.gentoo.org/wiki/Vulkan

Правильно ли я понимаю, что это API должно реализовываться в двух местах - как модуль ядра (как он называется?) и как часть библиотеки mesa?

меня, разумеется, не интересуют всякие там блобы, я хочу всё опенсорсное.

как модуль ядра (как он называется?) и как часть библиотеки mesa?

Ядро тут совсем не при делах. В линуксе вулкан реализован в Mesa.

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

Оно же не в Mesa!

Кокой ужос! Бывшая проприентарная реализация вулкана, ныне открытая - и не в Mesa!

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

Не только. Никто тебе не запрещает накатить (например) amdvlk, причем можно и в хомяк. Только ICD поправить

Stil ★★★★★ ()

Читать особо нечего

Есть плохой vulkan-tutorial

Есть гора хороших примеров https://github.com/SaschaWillems/Vulkan

Есть какие-то кроносовские примеры, их я совсем не смотрел

Ииии это примерно всё. Дальше бложики, чатики, здравый смысл и профилирование

Stil ★★★★★ ()

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

список движков есть на https://ru.wikipedia.org/wiki/Vulkan_(API)

Ford_Focus ★★★★★ ()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: Читать особо нечего от Stil

Ииии это примерно всё.

А книжки, книжки? Вот википедия, например, рекомендует книжку
Graham Sellers & John Kessenich, Vulkan Programming Guide

Идём на сайт libgen.is и там её скачиваем.

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

Понятия не имею. Из книжек я листал только «Vulkan Cookbook» (или как-то так), и она – говно.

Но вообще книжки не особо нужны, вулкан – это просто АПИшка уровнем пониже дефолтных опенгл/дх11, всё что ты знаешь про рендеринг применимо в вулкане, просто больше кода.

// нового там вроде только рендерпассы и фрэймбуферы, что немного усложняет дефолтное SetRenderTargets, но при нежелании думать оно тоже костыляется

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

всё что ты знаешь про рендеринг применимо

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

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

Ядро тут совсем не при делах. В линуксе вулкан реализован в Mesa

Чтобы вулкан работал на системе он должен поддерживаться:
- пользовательскими библиотеками;
- драйвером ОС, с которым общаются пользовательские библиотеки;
- видеокартой, с которой общаются драйвера ОС, с которыми общаются пользовательские библиотеки.

Собсна, так работают все аппаратные фичи в современных многозадачных ОС.

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

Я ничего не знаю про рендеринг, я знаю, что загрузить явно вычислениями несколько графических сопроцессоров можно только через вулкан

OpenCL же.

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

Чтобы вулкан работал на системе он должен поддерживаться

В линуксе он реализован в юзерспейсе. Юзерспейсная реализация (что OpenGL, что Vulkan) общается c ядерным модулем через DRM. DRM пофигу, что там обращается к оборудованию.

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

Мне надо рисовать, но всеми процессорами изо всех сил параллельно. Это мне нужно для того, чтобы разогнать отрисовку карты в freeciv, потому что она тормозит при прорисовке торговых путей.

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

Юзерспейсная реализация (что OpenGL, что Vulkan) общается c ядерным модулем через DRM. DRM пофигу, что там обращается к оборудованию

Да, только DRM - это протокол.

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

фрэймбуферы

Окааай. А FBO (ну, которые glBindFramebuffer) тогда кто? :D

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

Ну так ты можешь сказать, что и рендер пассы были

Stil ★★★★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей