v1c
> Можно ли читать BC текстуры сразу в память имеджа на UMA архитектурах, минуя копирование через vkCmdCopyBufferToImage?
Ну можно миновать стейджинг буфер если поддерживается Host image copy:
https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyM… ImageEXT.html
/A\
Т. е. BC форматы в памяти GPU не хранятся в том же порядке как и на диске? Как это понимать "переехать далеко по памяти"?
HolyDel
Нет, тут всё равно копирование идёт.
Ребят у меня есть одна идея но так как я нуб в этом - нужна помощь с реализацией, я готов заплатить, проект вроде простой но в тоже время и сложный. Если кому интересно openxr vulkan напишите в личку
Сейчас проверил на integrated Intel UHD 6xx - можно загрузить текстуру как обычно, потом замапить память загруженной текстуры и записать образ на диск. При следующей загрузке ищем, есть ли GPU образ текстуры на диске - если да, то просто создаём пустую текстуру с нужным форматом и размерами и делаем fread() с диска прямо в память текстуры, сверху добавляем layout transition чтобы слои валидации не ругались. Работает :)
v1c
> Нет, тут всё равно копирование идёт.
Description
This extension allows applications to copy data between host memory and images on the host processor, without staging the data through a GPU-accessible buffer. This removes the need to allocate and manage the buffer and its associated memory. On some architectures it may also eliminate an extra copy operation. This extension additionally allows applications to copy data between images on the host.
Получаешь мемори маппед указатель на свой файл, через VkImportMemoryHostPointerInfoEXT создаешь VkMemory на этом указателе, далее копируешь из этой мемори в имэдж. Все. Ровно одно копирование.
НО! оно будет свизлить на ЦПУ, что может сожрать весь профит. Самое лучшее, если у тебя уже лежит картинка на диске пресвизленная для конкернтной железки (optimalTilingLayoutUUID)
v1c
> Работает :)
Кстати, так можно увидеть как именно засвизлилась текстура ))
Татарин
Если решишь все же пилить сам то вот очень простые и полезные примеры: https://github.com/KhronosGroup/OpenXR-Tutorials
В PTLAS надо сначала построить ускоряющую структуру через vkCmdBuildPartitionedAccelerationStructuresNV, дождаться завершения на ГПУ и только потом можно использовать ее в дескриптор сете, иначе падает в драйвере. Выглядит не очень удобно, раньше можно было пустую структуру забиндить как заглушку.
Не знаю будит ли такое в Вулкане.
Но в апреле 2025 для directx 12 нейрошейдеры сделают.
https://3dnews.ru/1119691/revolyutsiya-v-programmirovanii-grafiki… -uge-v-aprele
В новых драйверах (572.64.0) NV отключили VK_NV_partitioned_acceleration_structure и VK_NV_cluster_acceleration_structure на Turing.
На gpuinfo последняя рабочая версия 572.16.0.0.
/A\
Типа оно и не работало там и ошибочно репортило, что поддерживается, или они специально заблочили на старых картах, чтобы говенную пятую серию покупали?
HolyDel
Все работало, я запускал демки.
/A\
> Все работало, я запускал демки.
Раз не хотел покупать AMD, теперь будешь запускать когда это разрешит куртка.
/A\, откатить драйвера?
Microsoft dxr ускорение трассировкой пути.
https://3dnews.ru/1120117/microsoft-predstavila-directx-raytracin… idd0635135349
Microsoft оптимизировала производительность за счёт двух нововведений: микрокарт прозрачности (Opacity Micromaps, OMM) и оптимизации порядка исполнения шейдеров (Shader Execution Reordering, SER) — последнее решение Nvidia развернула для Portal RTX и Cyberpunk 2077 около двух лет назад. Эти решения предлагают существенный прирост производительности, особенно в играх с полной трассировкой лучей — трассировкой пути.
Микрокарты прозрачности дают значительную оптимизацию альфа-проверяемой геометрии, то есть метода отрисовки, при котором для определения видимости каждого пикселя используется альфа-канал текстуры. В играх с трассировкой пути этот метод обеспечивает 2,3-кратный рост производительности: эффективно управляя данными о прозрачности, OMM сокращают вызовы шейдеров, повышая тем самым эффективность отрисовки без ущерба для качества изображения.
Оптимизация порядка исполнения шейдеров в некоторых сценариях обеспечивает 2-кратный рост производительности рендеринга. Этот метод предполагает интеллектуальную группировку выполнения шейдеров, способствуя росту эффективности графического процессора за счёт уменьшения дивергенции, а также повышению частоты кадров.
Официальная предварительная версия DXR 1.2, как ожидается, выйдет в апреле.