函数参数与变量
除了定义在常量地址空间的变量和定义在程序域的采样器之外, graphics和kernel函数的输入输出都需要通过函数参数, 函数参数可以是下面之一:
- 设备缓存(Device Buffer): 一个指向设备地址空间任意数据类型的指针或者引用
- 常量缓存(Constant Buffer): 一个指向常量地址空间任意数据类型的指针或者饮用
- 纹理对象(Texture)
- 采样器对象(Sampler)
- 被线程组内所有线程共享的对象:一个指向线程组地址空间任意数据类型的指针或者引用, 这种函数参数只能用于Kernel 函数
作为函数参数的
设备缓存和常量缓存不能重名(aliased). 这就是说, 同一个函数的不同缓存参数是不能有重名的.
着色函数的参数通常都有修饰符, 它们用来标示此参数应该被如何使用, 参数修饰符用来表示:
- 缓存资源是在哪里被分配的
- 内建变量, 用于在固定管线和可编程管线之间进行数据通讯
- 哪些数据是顺着Metal Pipeline, 从Vertex函数传递到Fragment函数的