对于OpenGL,存在Nvidia扩展NV_shader_atomic_float
1,它允许对GLSL着色器中具有浮点组件的缓冲区或纹理内存执行原子读取-修改-写入操作。
这个功能在Vulkan中也存在吗?我找不到任何支持这一功能的扩展的相关信息。该功能不是通过Vulkan扩展提供的吗?
发布于 2020-07-24 20:04:33
这就是:VK_EXT_shader_atomic_float
该扩展已于2020年7月由NVIDIA添加,并与所有Vulkan版本兼容。
引用说明书。描述:
此扩展允许着色器包含对缓冲区、工作组和图像内存的浮点原子操作。它还宣传SPIR-V AtomicFloat32AddEXT和AtomicFloat64AddEXT功能,允许对浮点数进行原子加法。支持的操作包括OpAtomicFAddEXT、OpAtomicExchange、OpAtomicLoad和OpAtomicStore。
gpuinfo.org上已经有一些条目表示支持该扩展。需要NVIDIA驱动程序451.79.0.0或更高版本之类的应用程序。
发布于 2018-12-06 02:10:12
不,没有提供原子浮点操作的Vulkan扩展(还没有?)。假设Nvidia可以创建这样的扩展,如果他们看到足够多的开发人员对它的需求。
SPIR-V支持浮点类型的原子指令,但包含浮点类型的SPIR-V模块目前被Vulkan's SPIR-V environment spec禁止
对于指针指向的值,
原子指令必须声明标量32位整数类型,或者如果启用了
Int64Atomics
功能,则声明标量64位整数类型。
https://stackoverflow.com/questions/53636376
复制相似问题