#094 Vulkan API: Адрес буферного устройства, часть 2

00:00 Введение • Приветствие и анонс продолжения рубрики «Обучение CUDA». • Объяснение темы видео: использование адресов буфера устройства для эффективного доступа к данным в памяти графического процессора. 00:46 Использование 64-битных указателей • Замена дескрипторов в Vulkan на 64-битные указатели на графический процессор. • Указатели позволяют манипулировать памятью локального графического процессора. 01:28 Структура кода • Описание файла .cpp и шейдеров, написанных на GLSL. • Упоминание вершинного шейдера. 02:27 Функции адресации буфера устройства • Включение функций адресации буфера устройства в исходном коде и шейдерах. • Использование memcopy для записи данных в память устройства графического процессора. • Применение флагов VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT и VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT_COHERENT. 04:22 Пример работы приложения • Демонстрация вращения прямоугольников при включении анимации. • Объяснение, как центральный процессор обновляет память графического процессора. 05:21 Передача данных в шейдер • Передача адресов буферных устройств шейдеру с помощью push-констант. • Упрощение обработки дескрипторов благодаря использованию ссылок. 06:17 Роль memcopy • Объяснение работы memcopy для загрузки данных в графический процессор. • Проверка влияния отключения memcopy на работу приложения. 08:19 Использование флагов • Объяснение использования флагов для передачи адресов буферов в шейдер. • Значение свойства памяти VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT_COHERENT. 12:21 Отображение памяти • Объяснение необходимости указания флагов при отображении памяти. • Роль карты в обеспечении доступа центрального процессора к памяти графического процессора. 13:47 Расчёт вращения • Демонстрация расчёта поворота кубов. • Влияние комментирования фрагментов кода на вращение кубов. 16:16 Заключение • Подведение итогов: расчёт вращения по осям, запись данных в графический процессор, копирование и отображение данных. • Получение указателей устройства на данные в памяти графического процессора. 17:13 Получение адреса буфера устройства KHR • Использование функции VK get buffer device address KHR PFN для получения адреса буфера устройства. • Применение адреса буфера при подготовке унифицированных буферов для сцены и куба. • Эксперименты с получением адресов буферов в графическом процессоре. 19:26 Необходимость функции расширения • Функция расширения необходима для получения адреса буфера и передачи его в шейдер. • Отключение функции приводит к сбою при запуске кода. • Подчёркивается важность функции для корректной работы приложения. 21:32 Передача данных через push-константы • Указатели на ссылки на буферы передаются с помощью констант push. • Шейдер считывает данные с адреса буфера. • Объяснение структуры push-констант и их использования в конвейере. 22:49 Создание конвейера и использование push-констант • При создании конвейера объявляются константы push. • Флаг этапа указывает на вершинный шейдер. • Логика использования push-констант для передачи данных в шейдер. 26:00 Структура блока push-констант • Создание блока push-констант с ссылками на сцену и модель. • Формат команды strut для передачи данных в шейдер. • Передача структуры strut в графический процессор через VKCMD push constants. 30:44 Отправка констант в шейдер • Операция отправки констант через VKCMD происходит в командном буфере. • Загрузка адресов буферных устройств в командный буфер. • Передача указателей на буфер данных куба через адрес буферного устройства. 36:39 Работа шейдера с данными • Подключение расширения для буфера в вершинном шейдере. • Получение констант push-уведомлений и данных сцены и модели. • Вычисление позиции GL в шейдере на основе полученных данных. 39:01 Важность порядка запросов данных • Подчёркивается важность порядка запросов данных для корректной работы приложения. • Изменение порядка запросов может привести к проблемам. • Подтверждение необходимости соблюдения порядка запросов для успешного отображения данных. 39:18 Загрузка данных сцены и модели • Сначала загружаются данные сцены, затем данные модели. • Данные передаются в вершинный шейдер через VK CMD push constants. 40:29 Использование переменных в шейдере • Ссылка на матрицу данных сцены равна push constants. • Переменные используются для вычислений в шейдере. 41:14 Эксперименты с вычислениями • Демонстрация важности позиции GL через эксперименты с вычислениями. • Изменение размера блоков при удалении определённых фрагментов кода. 44:27 Работа шейдера на графическом процессоре • Шейдер работает на стороне графического процессора. • Возможность вычисления позиции в GL между операциями. 46:42 Ограничения и структуры данных • Ограничение на максимальное количество кадров. • Структура данных: блок констант VK, адрес сцены VK, адрес модели VK. 48:36 Адресация буферных устройств 49:58 Создание буфера и загрузка данных 52:13 Запросы буферов 54:32 Рекомендации по использованию 56:24 Структура кода 58:18 Заключение

Иконка канала Ленинский Букварь
254 подписчика
12+
5 просмотров
месяц назад
12+
5 просмотров
месяц назад

00:00 Введение • Приветствие и анонс продолжения рубрики «Обучение CUDA». • Объяснение темы видео: использование адресов буфера устройства для эффективного доступа к данным в памяти графического процессора. 00:46 Использование 64-битных указателей • Замена дескрипторов в Vulkan на 64-битные указатели на графический процессор. • Указатели позволяют манипулировать памятью локального графического процессора. 01:28 Структура кода • Описание файла .cpp и шейдеров, написанных на GLSL. • Упоминание вершинного шейдера. 02:27 Функции адресации буфера устройства • Включение функций адресации буфера устройства в исходном коде и шейдерах. • Использование memcopy для записи данных в память устройства графического процессора. • Применение флагов VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT и VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT_COHERENT. 04:22 Пример работы приложения • Демонстрация вращения прямоугольников при включении анимации. • Объяснение, как центральный процессор обновляет память графического процессора. 05:21 Передача данных в шейдер • Передача адресов буферных устройств шейдеру с помощью push-констант. • Упрощение обработки дескрипторов благодаря использованию ссылок. 06:17 Роль memcopy • Объяснение работы memcopy для загрузки данных в графический процессор. • Проверка влияния отключения memcopy на работу приложения. 08:19 Использование флагов • Объяснение использования флагов для передачи адресов буферов в шейдер. • Значение свойства памяти VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT_COHERENT. 12:21 Отображение памяти • Объяснение необходимости указания флагов при отображении памяти. • Роль карты в обеспечении доступа центрального процессора к памяти графического процессора. 13:47 Расчёт вращения • Демонстрация расчёта поворота кубов. • Влияние комментирования фрагментов кода на вращение кубов. 16:16 Заключение • Подведение итогов: расчёт вращения по осям, запись данных в графический процессор, копирование и отображение данных. • Получение указателей устройства на данные в памяти графического процессора. 17:13 Получение адреса буфера устройства KHR • Использование функции VK get buffer device address KHR PFN для получения адреса буфера устройства. • Применение адреса буфера при подготовке унифицированных буферов для сцены и куба. • Эксперименты с получением адресов буферов в графическом процессоре. 19:26 Необходимость функции расширения • Функция расширения необходима для получения адреса буфера и передачи его в шейдер. • Отключение функции приводит к сбою при запуске кода. • Подчёркивается важность функции для корректной работы приложения. 21:32 Передача данных через push-константы • Указатели на ссылки на буферы передаются с помощью констант push. • Шейдер считывает данные с адреса буфера. • Объяснение структуры push-констант и их использования в конвейере. 22:49 Создание конвейера и использование push-констант • При создании конвейера объявляются константы push. • Флаг этапа указывает на вершинный шейдер. • Логика использования push-констант для передачи данных в шейдер. 26:00 Структура блока push-констант • Создание блока push-констант с ссылками на сцену и модель. • Формат команды strut для передачи данных в шейдер. • Передача структуры strut в графический процессор через VKCMD push constants. 30:44 Отправка констант в шейдер • Операция отправки констант через VKCMD происходит в командном буфере. • Загрузка адресов буферных устройств в командный буфер. • Передача указателей на буфер данных куба через адрес буферного устройства. 36:39 Работа шейдера с данными • Подключение расширения для буфера в вершинном шейдере. • Получение констант push-уведомлений и данных сцены и модели. • Вычисление позиции GL в шейдере на основе полученных данных. 39:01 Важность порядка запросов данных • Подчёркивается важность порядка запросов данных для корректной работы приложения. • Изменение порядка запросов может привести к проблемам. • Подтверждение необходимости соблюдения порядка запросов для успешного отображения данных. 39:18 Загрузка данных сцены и модели • Сначала загружаются данные сцены, затем данные модели. • Данные передаются в вершинный шейдер через VK CMD push constants. 40:29 Использование переменных в шейдере • Ссылка на матрицу данных сцены равна push constants. • Переменные используются для вычислений в шейдере. 41:14 Эксперименты с вычислениями • Демонстрация важности позиции GL через эксперименты с вычислениями. • Изменение размера блоков при удалении определённых фрагментов кода. 44:27 Работа шейдера на графическом процессоре • Шейдер работает на стороне графического процессора. • Возможность вычисления позиции в GL между операциями. 46:42 Ограничения и структуры данных • Ограничение на максимальное количество кадров. • Структура данных: блок констант VK, адрес сцены VK, адрес модели VK. 48:36 Адресация буферных устройств 49:58 Создание буфера и загрузка данных 52:13 Запросы буферов 54:32 Рекомендации по использованию 56:24 Структура кода 58:18 Заключение

, чтобы оставлять комментарии