Поддерживаются ли операции атомного плавания в шейдерах с помощью Vulkan? - PullRequest
0 голосов
/ 05 декабря 2018

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

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

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

1 Ответ

0 голосов
/ 05 декабря 2018

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

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

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

...