#093 Vulkan API: Адрес буферного устройства, часть 1
00:03 Введение и требования • Приветствие и начало рубрики «Обучение CUDA». • Необходимость прохождения первого и тринадцатого уроков для запуска кода. • Требования к компьютеру: Windows с видеокартой, поддерживающей Vulcan. • Упоминание о поддержке трассировки лучей для примеров с трассировкой лучей. 01:11 Цель выпуска • Обсуждение алгоритма и приложения Buffer.cpp. • Демонстрация доступа к ресурсам в памяти графического процессора без использования дескрипторов. 02:43 Старый подход и новый метод • Краткое описание старого подхода с использованием дескрипторов. • Объяснение нового метода с использованием адреса буфера устройства. 03:34 Описание приложения • Два блока, расположенные рядом при запуске приложения. • Возможность включения анимации блоков. • Вращение блоков при включении анимации. 06:08 Традиционный подход с дескрипторами • Описание традиционного подхода с использованием пула дескрипторов и набора дескрипторов. • Сложность и абстрактность традиционного подхода. 09:07 Преимущества дескрипторного подхода • Удобство для отладки и захвата экрана. • Безопасность для критически важных приложений. • Ограничения метода адреса буферного устройства для сложных задач. • Недоступность метода на некоторых мобильных устройствах и старых аппаратных средствах. 14:13 Реализация метода адреса буферного устройства • Включение функций буферизации адресов устройств. • Копирование данных с центрального процессора в память графического процессора. • Отображение буфера между центральным и графическим процессором. 17:09 Работа с блоками • Два блока в памяти графического процессора. • Первый блок содержит первый набор данных, второй — второй набор данных. • Данные сопоставляются между центральным и графическим процессором. 19:06 Получение указателей графического процессора • Использование VK get buffer device address KHR для получения указателей на данные в памяти графического процессора. • Важность использования функций с маленькой буквы VK в Vulkan. 20:30 Передача указателей в буфер устройства • Передача указателей в виде констант в буфер устройства. • Размер каждого адреса — 64 бита на 8 байт. 21:37 Отправка пакета в графический процессор • Использование VK CMD push constants для отправки пакета в графический процессор. 22:26 Обработка данных в шейдере • В шейдере необходимо включить адресацию буферных устройств. • Использование GLSL для работы с данными. 25:12 Вычисление переменной GL_Position • Вычисление переменной GL_Position с учётом мирового, локального и экранного пространств. • Переменная GL_Position используется для корректного рендеринга и поворота блоков. 27:02 Различие между данными сцены и модели • Шейдер отличает данные сцены от данных модели по порядку передачи информации. • Пример с изменением порядка вызовов показывает, как это влияет на результаты. 30:58 Флаги для буферов • Необходимость использования флагов VK_Buffer_Usage_Shader_Bit и VK_Memory_host_visible_coherent для корректной работы буферов. • Эти флаги обеспечивают видимость памяти для процессора и графического процессора. 37:15 Указание шейдера при передаче данных • При вызове VK_Cmd_push_constants необходимо указать флаг VK_Shader_Stage_Vertex_Bit для определения шейдера, который будет получать данные. • В примере используется вершинный шейдер cube.vert. 38:24 Компиляция шейдеров и использование констант • Компиляция шейдеров для получения V-инструкций, которые выполняет графический процессор. • Объявление шейдерного этапа и использование констант CVKCMD push для передачи данных. 39:05 Включение поддержки буферных устройств • Необходимость включения поддержки адресации буферных устройств в приложении. • Использование флагов буферного устройства и расширения VK KHR buffer device address extension. 40:09 Использование констант push • Указание на использование констант push во время создания конвейера. 41:04 Принцип работы карты и обновление данных • Карта как «дорога» для подключения центрального процессора к графическому. • Постоянное копирование данных из памяти для обновления данных в графическом процессоре. • Обновление проекции модели, а не самих вершин. 43:38 Адреса буферных устройств и константы push • Адреса буферных устройств обычно не меняются от кадра к кадру. • Константы push передают небольшие фрагменты данных с центрального процессора на графический. 46:22 Роль шейдеров в Vulkan • Шейдеры GLSL важны для Vulkan, но не являются его частью. • Инновации в компьютерной графике часто связаны с шейдерными языками. 49:15 Процесс обновления данных • Получение указателей на данные в графическом процессоре и упаковка их в структуру Push constants. • Отправка пакета данных в графический процессор с помощью VKCMD push constants. • Установка флагов для корректной работы буферного устройства. 49:59 Запуск примера на графических процессорах NVIDIA
00:03 Введение и требования • Приветствие и начало рубрики «Обучение CUDA». • Необходимость прохождения первого и тринадцатого уроков для запуска кода. • Требования к компьютеру: Windows с видеокартой, поддерживающей Vulcan. • Упоминание о поддержке трассировки лучей для примеров с трассировкой лучей. 01:11 Цель выпуска • Обсуждение алгоритма и приложения Buffer.cpp. • Демонстрация доступа к ресурсам в памяти графического процессора без использования дескрипторов. 02:43 Старый подход и новый метод • Краткое описание старого подхода с использованием дескрипторов. • Объяснение нового метода с использованием адреса буфера устройства. 03:34 Описание приложения • Два блока, расположенные рядом при запуске приложения. • Возможность включения анимации блоков. • Вращение блоков при включении анимации. 06:08 Традиционный подход с дескрипторами • Описание традиционного подхода с использованием пула дескрипторов и набора дескрипторов. • Сложность и абстрактность традиционного подхода. 09:07 Преимущества дескрипторного подхода • Удобство для отладки и захвата экрана. • Безопасность для критически важных приложений. • Ограничения метода адреса буферного устройства для сложных задач. • Недоступность метода на некоторых мобильных устройствах и старых аппаратных средствах. 14:13 Реализация метода адреса буферного устройства • Включение функций буферизации адресов устройств. • Копирование данных с центрального процессора в память графического процессора. • Отображение буфера между центральным и графическим процессором. 17:09 Работа с блоками • Два блока в памяти графического процессора. • Первый блок содержит первый набор данных, второй — второй набор данных. • Данные сопоставляются между центральным и графическим процессором. 19:06 Получение указателей графического процессора • Использование VK get buffer device address KHR для получения указателей на данные в памяти графического процессора. • Важность использования функций с маленькой буквы VK в Vulkan. 20:30 Передача указателей в буфер устройства • Передача указателей в виде констант в буфер устройства. • Размер каждого адреса — 64 бита на 8 байт. 21:37 Отправка пакета в графический процессор • Использование VK CMD push constants для отправки пакета в графический процессор. 22:26 Обработка данных в шейдере • В шейдере необходимо включить адресацию буферных устройств. • Использование GLSL для работы с данными. 25:12 Вычисление переменной GL_Position • Вычисление переменной GL_Position с учётом мирового, локального и экранного пространств. • Переменная GL_Position используется для корректного рендеринга и поворота блоков. 27:02 Различие между данными сцены и модели • Шейдер отличает данные сцены от данных модели по порядку передачи информации. • Пример с изменением порядка вызовов показывает, как это влияет на результаты. 30:58 Флаги для буферов • Необходимость использования флагов VK_Buffer_Usage_Shader_Bit и VK_Memory_host_visible_coherent для корректной работы буферов. • Эти флаги обеспечивают видимость памяти для процессора и графического процессора. 37:15 Указание шейдера при передаче данных • При вызове VK_Cmd_push_constants необходимо указать флаг VK_Shader_Stage_Vertex_Bit для определения шейдера, который будет получать данные. • В примере используется вершинный шейдер cube.vert. 38:24 Компиляция шейдеров и использование констант • Компиляция шейдеров для получения V-инструкций, которые выполняет графический процессор. • Объявление шейдерного этапа и использование констант CVKCMD push для передачи данных. 39:05 Включение поддержки буферных устройств • Необходимость включения поддержки адресации буферных устройств в приложении. • Использование флагов буферного устройства и расширения VK KHR buffer device address extension. 40:09 Использование констант push • Указание на использование констант push во время создания конвейера. 41:04 Принцип работы карты и обновление данных • Карта как «дорога» для подключения центрального процессора к графическому. • Постоянное копирование данных из памяти для обновления данных в графическом процессоре. • Обновление проекции модели, а не самих вершин. 43:38 Адреса буферных устройств и константы push • Адреса буферных устройств обычно не меняются от кадра к кадру. • Константы push передают небольшие фрагменты данных с центрального процессора на графический. 46:22 Роль шейдеров в Vulkan • Шейдеры GLSL важны для Vulkan, но не являются его частью. • Инновации в компьютерной графике часто связаны с шейдерными языками. 49:15 Процесс обновления данных • Получение указателей на данные в графическом процессоре и упаковка их в структуру Push constants. • Отправка пакета данных в графический процессор с помощью VKCMD push constants. • Установка флагов для корректной работы буферного устройства. 49:59 Запуск примера на графических процессорах NVIDIA




