imageAtomicExchange 无法编译
imageAtomicExchange won't compile
我正在尝试使用两个 opengl 图像,其中一个是稀疏的,另一个用作一种页面 table,我在其中跟踪实际提交的页面。
我有一个简单的小着色器,看起来像这样(不包括主要内容):
#version 450 core
#extension GL_ARB_shader_image_load_store : require
uniform float gridSize;
uniform float pageTableSize;
bool isPageInMemoryOrRequest (in ivec3 pos)
{
bool returnValue = false;
if ( 255u == imageAtomicExchange(pageTable, pos, 128u) )
{
returnValue = true;
}
return returnValue;
}
我的问题是这无法编译。我不断收到此消息:
错误 C1115:无法找到兼容的重载函数 "imageAtomicExchange(struct uimage3D1x8_bindless, ivec3, uint)"
我很确定我从未在规范中的任何地方看到过 _bindless 部分,而且我不确定编译器如何在编译时确定这是一个无绑定纹理(或者它们可能都是无绑定的在最新的驱动程序中)。
我有一个 GTX660TI,我正在使用 352.86 驱动程序。
我想知道是否有人以前遇到过此类问题,可以告诉我问题出在哪里。
提前致谢。
根据 ARB_shader_image_load_store 的扩展规范(第 8.X 节,图像函数),原子操作支持的格式非常有限:
Atomic memory operations
are supported on only a subset of all image variable types; must
be either:
an image variable with signed integer components (iimage*) and a
format qualifier of "r32i", or
an image variable with unsigned integer components (uimage*) and a
format qualifier of "r32ui".
根据错误消息,我假设您已尝试使用不受支持的 r8ui 格式。
我正在尝试使用两个 opengl 图像,其中一个是稀疏的,另一个用作一种页面 table,我在其中跟踪实际提交的页面。
我有一个简单的小着色器,看起来像这样(不包括主要内容):
#version 450 core
#extension GL_ARB_shader_image_load_store : require
uniform float gridSize;
uniform float pageTableSize;
bool isPageInMemoryOrRequest (in ivec3 pos)
{
bool returnValue = false;
if ( 255u == imageAtomicExchange(pageTable, pos, 128u) )
{
returnValue = true;
}
return returnValue;
}
我的问题是这无法编译。我不断收到此消息: 错误 C1115:无法找到兼容的重载函数 "imageAtomicExchange(struct uimage3D1x8_bindless, ivec3, uint)"
我很确定我从未在规范中的任何地方看到过 _bindless 部分,而且我不确定编译器如何在编译时确定这是一个无绑定纹理(或者它们可能都是无绑定的在最新的驱动程序中)。
我有一个 GTX660TI,我正在使用 352.86 驱动程序。 我想知道是否有人以前遇到过此类问题,可以告诉我问题出在哪里。
提前致谢。
根据 ARB_shader_image_load_store 的扩展规范(第 8.X 节,图像函数),原子操作支持的格式非常有限:
Atomic memory operations are supported on only a subset of all image variable types; must be either:
an image variable with signed integer components (iimage*) and a format qualifier of "r32i", or
an image variable with unsigned integer components (uimage*) and a format qualifier of "r32ui".
根据错误消息,我假设您已尝试使用不受支持的 r8ui 格式。