Для OpenGL существует расширение Nvidia NV_shader_atomic_float [1], которое позволяет выполнять атомарные операции чтения-изменения-записи в буферную или текстурную память с компонентами с плавающей запятой в шейдерах GLSL.

Эта функция также существует с Vulkan? Я не смог найти информацию о каком-либо расширении, которое бы это позволило Эта функция не предоставляется через расширение Vulkan?

[1] https://www.khronos.org/registry/OpenGL/ extension / NV / NV_shader_atomic_float.txt

5
j00hi 5 Дек 2018 в 19:11

2 ответа

Лучший ответ

Нет, нет расширения Vulkan, которое предоставляет атомарные операции с плавающей запятой (пока?). Предположительно Nvidia могла бы создать такое расширение, если бы увидела достаточный спрос на него со стороны разработчиков.

SPIR-V поддерживает атомарные инструкции с типами с плавающей запятой, но модули SPIR-V, содержащие их, в настоящее время запрещены Спецификация среды Vulkan SPIR-V:

Атомарные инструкции должны объявлять скалярный 32-разрядный целочисленный тип или скалярный 64-разрядный целочисленный тип, если включена возможность Int64Atomics, для значения, на которое указывает Pointer .

5
Jesse Hall 6 Дек 2018 в 23:24