未知类型名称数组



我在macOS 2上有一个金属10.12着色器,我正在尝试将int数组传递到其中,但是XCodeUnknown type name 'array'给了我一个编译时错误。这是我正在使用的代码:

kernel void computeMandelbrot(texture2d<float, access::write> output [[texture(0)]], constant int &maxIterations [[buffer(1)]], const array<int, 10> &hist [[buffer(2)]], uint2 gid [[thread_position_in_grid]]) {
// Compute Mandelbrot
}

我也尝试使用关键字constant而不是const但随后我也收到错误Parameter may not be qualified with an address space.我读过 macOS 上的金属不支持纹理数组,但我不确定这是否适用于其他类型的数组。任何帮助将不胜感激,谢谢!

几件事:

  • Metal2在 macOS 10.12 中不可用。它是 10.13 的新功能。

  • array只能与纹理和采样器一起使用。
  • array在 macOS 上不可用 <=10.12。它在带有Metal 2的macOS 10.13 +上可用。

  • 您可以将参数声明为constant int *hist [[buffer(2)]]。它不会有明确的长度,而只是限制你引用的元素。

编辑:我错了array只能与纹理和采样器一起使用。该规范通过在标题为"纹理和采样器数组"的部分中介绍它并仅以这种方式说明其用法来建议这种情况,但模板类本身似乎通常很有用。

但是,在Metal 2之前,它在macOS上不可用。换句话说,它仅在macOS 10.13 +上可用。

相关内容

  • 没有找到相关文章

最新更新