summaryrefslogtreecommitdiff
path: root/source/slang/glsl.meta.slang
diff options
context:
space:
mode:
authorArielG-NV <159081215+ArielG-NV@users.noreply.github.com>2024-04-19 23:18:40 -0400
committerGitHub <noreply@github.com>2024-04-19 20:18:40 -0700
commitf9bcad35562c1f08638e6d3eb397d370d7d2f8f8 (patch)
tree4e2a993689209bd5b597263922af03cb87d07c3d /source/slang/glsl.meta.slang
parent2da28c50d9c3699692eccde4b86d0b8d2323e55c (diff)
Initial pass to add capability declarations to stdlib intrinsics. (#3912)
Diffstat (limited to 'source/slang/glsl.meta.slang')
-rw-r--r--source/slang/glsl.meta.slang1675
1 files changed, 1040 insertions, 635 deletions
diff --git a/source/slang/glsl.meta.slang b/source/slang/glsl.meta.slang
index e2c1d25bd..d04dfe8b9 100644
--- a/source/slang/glsl.meta.slang
+++ b/source/slang/glsl.meta.slang
@@ -9,8 +9,6 @@
#define VECTOR_MAP_TRINARY(TYPE, COUNT, FUNC, A, B, C) \
vector<TYPE,COUNT> result; for(int i = 0; i < COUNT; ++i) { result[i] = FUNC(A[i], B[i], C[i]); } return result
-#define REQUIRE_KHRONOS [require(glsl)] [require(spirv)]
-
//
// OpenGL 4.60 spec
//
@@ -107,11 +105,11 @@ public in uvec3 gl_WorkGroupID : SV_GroupID;
public in uvec3 gl_LocalInvocationIndex : SV_GroupIndex;
public in uvec3 gl_LocalInvocationID : SV_GroupThreadID;
-[require(glsl)]
-[require(spirv)]
public property uint3 gl_NumWorkGroups {
- get {
+ [require(glsl_spirv, GLSL_430_SPIRV_1_0_compute)]
+ get
+ {
__target_switch
{
case glsl:
@@ -128,6 +126,7 @@ public property uint3 gl_NumWorkGroups {
public property uint3 gl_WorkGroupSize
{
[__unsafeForceInlineEarly]
+ [require(glsl_spirv, GLSL_430_SPIRV_1_0_compute)]
get
{
return WorkgroupSize();
@@ -153,6 +152,7 @@ public in int gl_ViewportIndex : SV_ViewportArrayIndex;
[OverloadRank(15)]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public matrix<float, N, N> operator*<let N:int>(matrix<float, N, N> m1, matrix<float, N, N> m2)
{
return mul(m2, m1);
@@ -160,6 +160,7 @@ public matrix<float, N, N> operator*<let N:int>(matrix<float, N, N> m1, matrix<f
[OverloadRank(15)]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public matrix<half, N, N> operator*<let N:int>(matrix<half, N, N> m1, matrix<half, N, N> m2)
{
return mul(m2, m1);
@@ -167,6 +168,7 @@ public matrix<half, N, N> operator*<let N:int>(matrix<half, N, N> m1, matrix<hal
[OverloadRank(15)]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public matrix<double, N, N> operator*<let N:int>(matrix<double, N, N> m1, matrix<double, N, N> m2)
{
return mul(m2, m1);
@@ -174,6 +176,7 @@ public matrix<double, N, N> operator*<let N:int>(matrix<double, N, N> m1, matrix
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public matrix<T, R, L> operator*<T:__BuiltinFloatingPointType, let L : int, let C : int, let R : int>(matrix<T, C, L> m1, matrix<T, R, C> m2)
{
return mul(m2, m1);
@@ -181,6 +184,7 @@ public matrix<T, R, L> operator*<T:__BuiltinFloatingPointType, let L : int, let
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, R> operator*<T:__BuiltinFloatingPointType, let C : int, let R : int>(vector<T, C> v, matrix<T, R, C> m)
{
return mul(m, v);
@@ -188,6 +192,7 @@ public vector<T, R> operator*<T:__BuiltinFloatingPointType, let C : int, let R :
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, C> operator*<T:__BuiltinFloatingPointType, let C : int, let R : int>(matrix<T, R, C> m, vector<T, R> v)
{
return mul(v, m);
@@ -224,6 +229,7 @@ public extension vector<T, 3>
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator==<T:__BuiltinArithmeticType, let N:int>(vector<T, N> left, vector<T, N> right)
{
return all(equal(left, right));
@@ -231,6 +237,7 @@ public bool operator==<T:__BuiltinArithmeticType, let N:int>(vector<T, N> left,
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator!=<T:__BuiltinArithmeticType, let N:int>(vector<T, N> left, vector<T, N> right)
{
return any(notEqual(left, right));
@@ -238,6 +245,7 @@ public bool operator!=<T:__BuiltinArithmeticType, let N:int>(vector<T, N> left,
[ForceInline]
[OverloadRank(14)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator==<T:__BuiltinFloatingPointType, let N:int>(vector<T, N> left, vector<T, N> right)
{
return all(equal(left, right));
@@ -245,6 +253,7 @@ public bool operator==<T:__BuiltinFloatingPointType, let N:int>(vector<T, N> lef
[ForceInline]
[OverloadRank(14)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator!=<T:__BuiltinFloatingPointType, let N:int>(vector<T, N> left, vector<T, N> right)
{
return any(notEqual(left, right));
@@ -252,6 +261,7 @@ public bool operator!=<T:__BuiltinFloatingPointType, let N:int>(vector<T, N> lef
[ForceInline]
[OverloadRank(14)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator==<T:__BuiltinLogicalType, let N:int>(vector<T, N> left, vector<T, N> right)
{
return all(equal(left, right));
@@ -259,6 +269,7 @@ public bool operator==<T:__BuiltinLogicalType, let N:int>(vector<T, N> left, vec
[ForceInline]
[OverloadRank(14)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator!=<T:__BuiltinLogicalType, let N:int>(vector<T, N> left, vector<T, N> right)
{
return any(notEqual(left, right));
@@ -271,6 +282,7 @@ for (auto type : kBaseTypes) {
}}}}
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator==<let N:int>(vector<$(typeName), N> left, vector<$(typeName), N> right)
{
return all(equal(left, right));
@@ -278,6 +290,7 @@ public bool operator==<let N:int>(vector<$(typeName), N> left, vector<$(typeName
[ForceInline]
[OverloadRank(15)]
+[require(cpp_cuda_glsl_hlsl_spirv)]
public bool operator!=<let N:int>(vector<$(typeName), N> left, vector<$(typeName), N> right)
{
return any(notEqual(left, right));
@@ -293,6 +306,7 @@ ${{{{
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public T atan(T y, T x)
{
return atan2(y, x);
@@ -301,6 +315,7 @@ public T atan(T y, T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T,N> atan(vector<T,N> y, vector<T,N> x)
{
return atan2(y, x);
@@ -311,6 +326,7 @@ __target_intrinsic(cuda, "$P_asinh($0)")
__target_intrinsic(cpp, "$P_asinh($0)")
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public T asinh(T x)
{
return log(x + sqrt(x * x + T(1)));
@@ -319,6 +335,7 @@ public T asinh(T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public vector<T,N> asinh(vector<T,N> x)
{
VECTOR_MAP_UNARY(T, N, asinh, x);
@@ -329,6 +346,7 @@ __target_intrinsic(cuda, "$P_acosh($0)")
__target_intrinsic(cpp, "$P_acosh($0)")
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public T acosh(T x)
{
return log(x + sqrt( x * x - T(1)));
@@ -337,6 +355,7 @@ public T acosh(T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public vector<T,N> acosh(vector<T,N> x)
{
VECTOR_MAP_UNARY(T, N, acosh, x);
@@ -347,6 +366,7 @@ __target_intrinsic(cuda, "$P_atanh($0)")
__target_intrinsic(cpp, "$P_atanh($0)")
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public T atanh(T x)
{
return T(0.5) * log((T(1) + x) / (T(1) - x));
@@ -355,6 +375,7 @@ public T atanh(T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T,N> atanh(vector<T,N> x)
{
VECTOR_MAP_UNARY(T, N, atanh, x);
@@ -367,6 +388,7 @@ public vector<T,N> atanh(vector<T,N> x)
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public T inversesqrt(T x)
{
return rsqrt(x);
@@ -375,6 +397,7 @@ public T inversesqrt(T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public vector<T, N> inversesqrt(vector<T, N> x)
{
return rsqrt(x);
@@ -387,6 +410,7 @@ public vector<T, N> inversesqrt(vector<T, N> x)
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public T roundEven(T x)
{
T i;
@@ -404,6 +428,7 @@ public T roundEven(T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_130)]
public vector<T,N> roundEven(vector<T,N> x)
{
VECTOR_MAP_UNARY(T, N, roundEven, x);
@@ -412,6 +437,7 @@ public vector<T,N> roundEven(vector<T,N> x)
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public T fract(T x)
{
return frac(x);
@@ -420,6 +446,7 @@ public T fract(T x)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, N> fract(vector<T, N> x)
{
return frac(x);
@@ -428,6 +455,7 @@ public vector<T, N> fract(vector<T, N> x)
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public T mod(T x, T y)
{
return fmod(x, y);
@@ -436,6 +464,7 @@ public T mod(T x, T y)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, N> mod(vector<T, N> x, T y)
{
return fmod(x, vector<T, N>(y));
@@ -444,6 +473,7 @@ public vector<T, N> mod(vector<T, N> x, T y)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, N> mod(vector<T, N> x, vector<T, N> y)
{
return fmod(x, y);
@@ -452,6 +482,7 @@ public vector<T, N> mod(vector<T, N> x, vector<T, N> y)
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public T mix(T x, T y, T a)
{
return lerp(x, y, a);
@@ -460,6 +491,7 @@ public T mix(T x, T y, T a)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, N> mix(vector<T, N> x, vector<T, N> y, T a)
{
return lerp(x, y, vector<T, N>(a));
@@ -468,6 +500,7 @@ public vector<T, N> mix(vector<T, N> x, vector<T, N> y, T a)
__generic<T : __BuiltinFloatingPointType, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, N> mix(vector<T, N> x, vector<T, N> y, vector<T, N> a)
{
return lerp(x, y, a);
@@ -476,6 +509,7 @@ public vector<T, N> mix(vector<T, N> x, vector<T, N> y, vector<T, N> a)
__generic<T>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public T mix(T x, T y, bool a)
{
return (a ? y : x);
@@ -484,6 +518,7 @@ public T mix(T x, T y, bool a)
__generic<T, let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, sm_2_0_GLSL_140)]
public vector<T, N> mix(vector<T, N> x, vector<T, N> y, vector<bool, N> a)
{
vector<T, N> result;
@@ -496,6 +531,7 @@ public vector<T, N> mix(vector<T, N> x, vector<T, N> y, vector<bool, N> a)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public int floatBitsToInt(highp float x)
{
return asint(x);
@@ -504,6 +540,7 @@ public int floatBitsToInt(highp float x)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vector<int, N> floatBitsToInt(highp vector<float, N> x)
{
return asint(x);
@@ -511,6 +548,7 @@ public vector<int, N> floatBitsToInt(highp vector<float, N> x)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uint floatBitsToUint(highp float x)
{
return asuint(x);
@@ -519,6 +557,7 @@ public uint floatBitsToUint(highp float x)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vector<uint, N> floatBitsToUint(highp vector<float, N> x)
{
return asuint(x);
@@ -526,6 +565,7 @@ public vector<uint, N> floatBitsToUint(highp vector<float, N> x)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public float intBitsToFloat(highp int x)
{
return asfloat(x);
@@ -534,6 +574,7 @@ public float intBitsToFloat(highp int x)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vector<float, N> intBitsToFloat(highp vector<int, N> x)
{
return asfloat(x);
@@ -541,6 +582,7 @@ public vector<float, N> intBitsToFloat(highp vector<int, N> x)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public float uintBitsToFloat(highp uint x)
{
return asfloat(x);
@@ -549,6 +591,7 @@ public float uintBitsToFloat(highp uint x)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vector<float, N> uintBitsToFloat(highp vector<uint, N> x)
{
return asfloat(x);
@@ -616,6 +659,7 @@ float unpackSnorm1x8(uint p)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
uint float2half(float f)
{
uint u = floatBitsToUint(f);
@@ -632,6 +676,7 @@ uint float2half(float f)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uint packUnorm2x16(vec2 v)
{
return packUnorm1x16(v.x) | (packUnorm1x16(v.y) << uint(16));
@@ -640,6 +685,7 @@ public uint packUnorm2x16(vec2 v)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uint packSnorm2x16(vec2 v)
{
return packSnorm1x16(v.x) | (packSnorm1x16(v.y) << uint(16));
@@ -648,6 +694,7 @@ public uint packSnorm2x16(vec2 v)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uint packUnorm4x8(vec4 v)
{
return packUnorm1x8(v.x) | (packUnorm1x8(v.y) << uint(8)) | (packUnorm1x8(v.z) << uint(16)) | (packUnorm1x8(v.w) << uint(24));
@@ -656,6 +703,7 @@ public uint packUnorm4x8(vec4 v)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uint packSnorm4x8(vec4 v)
{
return packSnorm1x8(v.x) | (packSnorm1x8(v.y) << uint(8)) | (packSnorm1x8(v.z) << uint(16)) | (packSnorm1x8(v.w) << uint(24));
@@ -664,6 +712,7 @@ public uint packSnorm4x8(vec4 v)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vec2 unpackUnorm2x16(uint p)
{
return vec2(unpackUnorm1x16(p & uint(0xffff)), unpackUnorm1x16(p >> uint(16)));
@@ -672,6 +721,7 @@ public vec2 unpackUnorm2x16(uint p)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vec2 unpackSnorm2x16(uint p)
{
return vec2(unpackSnorm1x16(p & uint(0xffff)), unpackSnorm1x16(p >> uint(16)));
@@ -680,6 +730,7 @@ public vec2 unpackSnorm2x16(uint p)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vec4 unpackUnorm4x8(highp uint p)
{
return vec4(unpackUnorm1x8(p & uint(0xffff)), unpackUnorm1x8(p >> uint(8)), unpackUnorm1x8(p >> uint(16)), unpackUnorm1x8(p >> uint(24)));
@@ -688,6 +739,7 @@ public vec4 unpackUnorm4x8(highp uint p)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vec4 unpackSnorm4x8(highp uint p)
{
return vec4(unpackSnorm1x8(p & uint(0xffff)), unpackSnorm1x8(p >> uint(8)), unpackSnorm1x8(p >> uint(16)), unpackSnorm1x8(p >> uint(24)));
@@ -696,6 +748,7 @@ public vec4 unpackSnorm4x8(highp uint p)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uint packHalf2x16(vec2 v)
{
return float2half(v.x) | (float2half(v.y) << uint(16));
@@ -704,6 +757,7 @@ public uint packHalf2x16(vec2 v)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public float half2float(uint h)
{
uint s = ((h & uint(0x8000)) << uint(16));
@@ -719,6 +773,7 @@ public float half2float(uint h)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public vec2 unpackHalf2x16(uint p)
{
return vec2(half2float(p & uint(0xffff)), half2float(p >> uint(16)));
@@ -727,6 +782,7 @@ public vec2 unpackHalf2x16(uint p)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public double packDouble2x32(uvec2 v)
{
// TODO: there is no "asdouble()"
@@ -737,6 +793,7 @@ public double packDouble2x32(uvec2 v)
__target_intrinsic(glsl)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_4_0)]
public uvec2 unpackDouble2x32(double v)
{
// TODO: there is no "asuint64()"
@@ -751,6 +808,7 @@ public uvec2 unpackDouble2x32(double v)
__generic<T : __BuiltinFloatingPointType>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_400)]
public T faceforward(T n, T i, T ng)
{
return dot(ng, i) < T(0.0f) ? n : -n;
@@ -782,6 +840,7 @@ public matrix<T, C, R> outerProduct(vector<T, C> c, vector<T, R> r)
__generic<T : __BuiltinFloatingPointType, let N : int>
__target_intrinsic(hlsl)
__target_intrinsic(glsl)
+[require(cpp_cuda_glsl_hlsl_spirv, GLSL_400)]
matrix<T,N,N> inverse(matrix<T,N,N> m);
//
@@ -987,27 +1046,35 @@ public vector<uint,N> bitfieldReverse(highp vector<uint,N> value)
VECTOR_MAP_UNARY(int, N, bitfieldReverse, value);
}
-[__readNone] [ForceInline] REQUIRE_KHRONOS
+[__readNone]
+[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public uint bitCount(uint value)
{
return countbits(value);
}
__generic<let N:int>
-[__readNone] [ForceInline] REQUIRE_KHRONOS
+[__readNone]
+[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public vector<uint,N> bitCount(vector<uint,N> value)
{
VECTOR_MAP_UNARY(uint, N, countbits, value);
}
-[__readNone] [ForceInline] REQUIRE_KHRONOS
+[__readNone]
+[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public int bitCount(int value)
{
return countbits(uint(value));
}
__generic<let N:int>
-[__readNone] [ForceInline] REQUIRE_KHRONOS
+[__readNone]
+[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public vector<int,N> bitCount(vector<int,N> value)
{
VECTOR_MAP_UNARY(int, N, countbits, value);
@@ -1015,6 +1082,7 @@ public vector<int,N> bitCount(vector<int,N> value)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public int findLSB(int v)
{
return firstbitlow(v);
@@ -1023,6 +1091,7 @@ public int findLSB(int v)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public vector<int,N> findLSB(vector<int,N> value)
{
return firstbitlow(value);
@@ -1030,6 +1099,7 @@ public vector<int,N> findLSB(vector<int,N> value)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public uint findLSB(uint v)
{
return firstbitlow(v);
@@ -1038,6 +1108,7 @@ public uint findLSB(uint v)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public vector<uint,N> findLSB(vector<uint,N> value)
{
return firstbitlow(value);
@@ -1045,6 +1116,7 @@ public vector<uint,N> findLSB(vector<uint,N> value)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public int findMSB(int value)
{
return firstbithigh(value);
@@ -1053,6 +1125,7 @@ public int findMSB(int value)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public vector<int,N> findMSB(vector<int,N> value)
{
return firstbithigh(value);
@@ -1060,6 +1133,7 @@ public vector<int,N> findMSB(vector<int,N> value)
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public uint findMSB(uint value)
{
return firstbithigh(value);
@@ -1068,6 +1142,7 @@ public uint findMSB(uint value)
__generic<let N:int>
[__readNone]
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, shader5_sm_5_0)]
public vector<uint,N> findMSB(vector<uint,N> value)
{
return firstbithigh(value);
@@ -1243,6 +1318,7 @@ public typealias usamplerBuffer = SamplerBuffer<uint4>;
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public int textureSize(Sampler1D<vector<T,N>> sampler, int lod)
{
int result;
@@ -1253,6 +1329,7 @@ public int textureSize(Sampler1D<vector<T,N>> sampler, int lod)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec2 textureSize(Sampler2D<vector<T,N>> sampler, int lod)
{
vector<int,2> result;
@@ -1263,6 +1340,7 @@ public ivec2 textureSize(Sampler2D<vector<T,N>> sampler, int lod)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec3 textureSize(Sampler3D<vector<T,N>> sampler, int lod)
{
vector<int,3> result;
@@ -1273,6 +1351,7 @@ public ivec3 textureSize(Sampler3D<vector<T,N>> sampler, int lod)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec2 textureSize(SamplerCube<vector<T,N>> sampler, int lod)
{
vector<int,2> result;
@@ -1282,6 +1361,7 @@ public ivec2 textureSize(SamplerCube<vector<T,N>> sampler, int lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public int textureSize(sampler1DShadow sampler, int lod)
{
int result;
@@ -1291,6 +1371,7 @@ public int textureSize(sampler1DShadow sampler, int lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec2 textureSize(sampler2DShadow sampler, int lod)
{
vector<int,2> result;
@@ -1300,6 +1381,7 @@ public ivec2 textureSize(sampler2DShadow sampler, int lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec2 textureSize(samplerCubeShadow sampler, int lod)
{
vector<int,2> result;
@@ -1308,6 +1390,7 @@ public ivec2 textureSize(samplerCubeShadow sampler, int lod)
return result;
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
public ivec3 textureSize(SamplerCubeArray<vector<T,N>> sampler, int lod)
@@ -1319,6 +1402,7 @@ public ivec3 textureSize(SamplerCubeArray<vector<T,N>> sampler, int lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec3 textureSize(samplerCubeArrayShadow sampler, int lod)
{
vector<int,3> result;
@@ -1327,6 +1411,7 @@ public ivec3 textureSize(samplerCubeArrayShadow sampler, int lod)
return result;
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
public ivec2 textureSize(Sampler2DRect<vector<T,N>> sampler)
@@ -1338,6 +1423,7 @@ public ivec2 textureSize(Sampler2DRect<vector<T,N>> sampler)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec2 textureSize(sampler2DRectShadow sampler)
{
vector<int,2> result;
@@ -1346,6 +1432,7 @@ public ivec2 textureSize(sampler2DRectShadow sampler)
return result;
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
public ivec2 textureSize(Sampler1DArray<vector<T,N>> sampler, int lod)
@@ -1357,6 +1444,7 @@ public ivec2 textureSize(Sampler1DArray<vector<T,N>> sampler, int lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec2 textureSize(sampler1DArrayShadow sampler, int lod)
{
vector<int,2> result;
@@ -1365,6 +1453,7 @@ public ivec2 textureSize(sampler1DArrayShadow sampler, int lod)
return result;
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
public ivec3 textureSize(Sampler2DArray<vector<T,N>> sampler, int lod)
@@ -1376,6 +1465,7 @@ public ivec3 textureSize(Sampler2DArray<vector<T,N>> sampler, int lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_size)]
public ivec3 textureSize(sampler2DArrayShadow sampler, int lod)
{
vector<int,3> result;
@@ -1384,6 +1474,7 @@ public ivec3 textureSize(sampler2DArrayShadow sampler, int lod)
return result;
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int, let format:int>
[ForceInline]
public int textureSize(SamplerBuffer<vector<T,N>,format> sampler)
@@ -1393,6 +1484,7 @@ public int textureSize(SamplerBuffer<vector<T,N>,format> sampler)
return int(result);
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int, let sampleCount:int>
[ForceInline]
public ivec2 textureSize(Sampler2DMS<vector<T,N>,sampleCount> sampler)
@@ -1404,6 +1496,7 @@ public ivec2 textureSize(Sampler2DMS<vector<T,N>,sampleCount> sampler)
return result;
}
+[require(glsl_hlsl_spirv, texture_size)]
__generic<T:__BuiltinArithmeticType, let N:int, let sampleCount:int>
[ForceInline]
public ivec3 textureSize(Sampler2DMSArray<vector<T,N>,sampleCount> sampler)
@@ -1421,6 +1514,7 @@ public ivec3 textureSize(Sampler2DMSArray<vector<T,N>,sampleCount> sampler)
__generic<T:IFloat, let isArray:int, let sampleCount:int, let isShadow:int, let format:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylod)]
public vec2 textureQueryLod(__TextureImpl<
T,
__Shape1D,
@@ -1441,6 +1535,7 @@ public vec2 textureQueryLod(__TextureImpl<
__generic<T:IFloat, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let isShadow:int, let format:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylod)]
public vec2 textureQueryLod(__TextureImpl<T,
Shape,
isArray,
@@ -1464,6 +1559,7 @@ public vec2 textureQueryLod(__TextureImpl<T,
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(Sampler1D<vector<T,N>> sampler)
{
int width;
@@ -1474,6 +1570,7 @@ public int textureQueryLevels(Sampler1D<vector<T,N>> sampler)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(Sampler2D<vector<T,N>> sampler)
{
vector<int,2> dim;
@@ -1484,6 +1581,7 @@ public int textureQueryLevels(Sampler2D<vector<T,N>> sampler)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(Sampler3D<vector<T,N>> sampler)
{
vector<int,3> dim;
@@ -1494,6 +1592,7 @@ public int textureQueryLevels(Sampler3D<vector<T,N>> sampler)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(SamplerCube<vector<T,N>> sampler)
{
vector<int,2> dim;
@@ -1504,6 +1603,7 @@ public int textureQueryLevels(SamplerCube<vector<T,N>> sampler)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(Sampler1DArray<vector<T,N>> sampler)
{
vector<int,2> dim;
@@ -1514,6 +1614,7 @@ public int textureQueryLevels(Sampler1DArray<vector<T,N>> sampler)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(Sampler2DArray<vector<T,N>> sampler)
{
vector<int,3> dim;
@@ -1524,6 +1625,7 @@ public int textureQueryLevels(Sampler2DArray<vector<T,N>> sampler)
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(SamplerCubeArray<vector<T,N>> sampler)
{
vector<int,3> dim;
@@ -1533,6 +1635,7 @@ public int textureQueryLevels(SamplerCubeArray<vector<T,N>> sampler)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(sampler1DShadow sampler)
{
int dim;
@@ -1542,6 +1645,7 @@ public int textureQueryLevels(sampler1DShadow sampler)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(sampler2DShadow sampler)
{
vector<int,2> dim;
@@ -1551,6 +1655,7 @@ public int textureQueryLevels(sampler2DShadow sampler)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(samplerCubeShadow sampler)
{
vector<int,2> dim;
@@ -1560,6 +1665,7 @@ public int textureQueryLevels(samplerCubeShadow sampler)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(sampler1DArrayShadow sampler)
{
vector<int,2> dim;
@@ -1569,6 +1675,7 @@ public int textureQueryLevels(sampler1DArrayShadow sampler)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(sampler2DArrayShadow sampler)
{
vector<int,3> dim;
@@ -1578,6 +1685,7 @@ public int textureQueryLevels(sampler2DArrayShadow sampler)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_querylevels)]
public int textureQueryLevels(samplerCubeArrayShadow sampler)
{
vector<int,3> dim;
@@ -1592,6 +1700,7 @@ public int textureQueryLevels(samplerCubeArrayShadow sampler)
__generic<T:__BuiltinArithmeticType, let N:int, let sampleCount:int>
[ForceInline]
+[require(glsl_hlsl_spirv, image_samples)]
public int textureSamples(Sampler2DMS<vector<T,N>,sampleCount> sampler)
{
vector<int,2> dim;
@@ -1603,6 +1712,7 @@ public int textureSamples(Sampler2DMS<vector<T,N>,sampleCount> sampler)
__generic<T:__BuiltinArithmeticType, let N:int, let sampleCount:int>
[ForceInline]
+[require(glsl_hlsl_spirv, image_samples)]
public int textureSamples(Sampler2DMSArray<vector<T,N>,sampleCount> sampler)
{
vector<int,3> dim;
@@ -1622,6 +1732,7 @@ public int textureSamples(Sampler2DMSArray<vector<T,N>,sampleCount> sampler)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> texture(Sampler1D<vector<T,N>> sampler, float p)
{
return __vectorReshape<4>(sampler.Sample(p));
@@ -1629,6 +1740,7 @@ public vector<T,4> texture(Sampler1D<vector<T,N>> sampler, float p)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> texture(Sampler1D<vector<T,N>> sampler, float p, constexpr float bias)
{
return __vectorReshape<4>(sampler.SampleBias(p, bias));
@@ -1636,6 +1748,7 @@ public vector<T,4> texture(Sampler1D<vector<T,N>> sampler, float p, constexpr fl
__generic<T:__BuiltinFloatingPointType, let N:int, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> texture(__TextureImpl<
vector<T,N>,
Shape,
@@ -1653,6 +1766,7 @@ public vector<T,4> texture(__TextureImpl<
__generic<T:__BuiltinFloatingPointType, let N:int, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> texture(__TextureImpl<
vector<T,N>,
Shape,
@@ -1669,12 +1783,14 @@ public vector<T,4> texture(__TextureImpl<
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler1DShadow sampler, vec3 p)
{
return sampler.SampleCmp(p.x, p.z);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler1DShadow sampler, vec3 p, float bias)
{
// TODO: Need to apply bias
@@ -1682,24 +1798,28 @@ public float texture(sampler1DShadow sampler, vec3 p, float bias)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler2DShadow sampler, vec3 p)
{
return sampler.SampleCmp(p.xy, p.z);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler2DShadow sampler, vec3 p, float bias)
{
// TODO: Need to apply bias
return sampler.SampleCmp(p.xy, p.z);
}
+[require(glsl_hlsl_spirv, texture_shadowlod_cube)]
[ForceInline]
public float texture(samplerCubeShadow sampler, vec4 p)
{
return sampler.SampleCmp(p.xyz, p.w);
}
+[require(glsl_hlsl_spirv, texture_shadowlod_cube)]
[ForceInline]
public float texture(samplerCubeShadow sampler, vec4 p, float bias)
{
@@ -1708,12 +1828,14 @@ public float texture(samplerCubeShadow sampler, vec4 p, float bias)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler1DArrayShadow sampler, vec3 p)
{
return sampler.SampleCmp(p.xy, p.z);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler1DArrayShadow sampler, vec3 p, float bias)
{
// TODO: Need to apply bias
@@ -1721,12 +1843,14 @@ public float texture(sampler1DArrayShadow sampler, vec3 p, float bias)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float texture(sampler2DArrayShadow sampler, vec4 p)
{
return sampler.SampleCmp(p.xyz, p.w);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod_cube)]
public float texture(samplerCubeArrayShadow sampler, vec4 p, float compare)
{
return sampler.SampleCmp(p, compare);
@@ -1738,6 +1862,7 @@ public float texture(samplerCubeArrayShadow sampler, vec4 p, float compare)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec2 p)
{
return texture(sampler, p.x / p.y);
@@ -1745,6 +1870,7 @@ public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec2 p)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec2 p, float bias)
{
return texture(sampler, p.x / p.y, bias);
@@ -1752,6 +1878,7 @@ public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec2 p, float bia
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec4 p)
{
return texture(sampler, p.x / p.w);
@@ -1759,6 +1886,7 @@ public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec4 p)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec4 p, float bias)
{
return texture(sampler, p.x / p.w, bias);
@@ -1766,6 +1894,7 @@ public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec4 p, float bia
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec3 p)
{
return texture(sampler, p.xy / p.z);
@@ -1773,6 +1902,7 @@ public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec3 p)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec3 p, float bias)
{
return texture(sampler, p.xy / p.z, bias);
@@ -1780,6 +1910,7 @@ public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec3 p, float bia
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec4 p)
{
return texture(sampler, p.xy / p.w);
@@ -1787,6 +1918,7 @@ public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec4 p)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec4 p, float bias)
{
return texture(sampler, p.xy / p.w, bias);
@@ -1794,6 +1926,7 @@ public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec4 p, float bia
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler3D<vector<T,N>> sampler, vec4 p)
{
return texture(sampler, p.xyz / p.w);
@@ -1801,30 +1934,35 @@ public vector<T,4> textureProj(Sampler3D<vector<T,N>> sampler, vec4 p)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProj(Sampler3D<vector<T,N>> sampler, vec4 p, float bias)
{
return texture(sampler, p.xyz / p.w, bias);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProj(sampler1DShadow sampler, vec4 p)
{
return texture(sampler, p.xyz / p.w);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProj(sampler1DShadow sampler, vec4 p, float bias)
{
return texture(sampler, p.xyz / p.w, bias);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProj(sampler2DShadow sampler, vec4 p)
{
return texture(sampler, p.xyz / p.w);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProj(sampler2DShadow sampler, vec4 p, float bias)
{
return texture(sampler, p.xyz / p.w, bias);
@@ -1836,6 +1974,7 @@ public float textureProj(sampler2DShadow sampler, vec4 p, float bias)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureLod(Sampler1D<vector<T,N>> sampler, float p, float lod)
{
return __vectorReshape<4>(sampler.SampleLevel(p, lod));
@@ -1843,6 +1982,7 @@ public vector<T,4> textureLod(Sampler1D<vector<T,N>> sampler, float p, float lod
__generic<T:__BuiltinFloatingPointType, let N:int, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureLod(__TextureImpl<
vector<T,N>,
Shape,
@@ -1859,6 +1999,7 @@ public vector<T,4> textureLod(__TextureImpl<
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureLod(sampler2DShadow sampler, vec3 p, float lod)
{
// TODO: Need to apply lod
@@ -1866,6 +2007,7 @@ public float textureLod(sampler2DShadow sampler, vec3 p, float lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureLod(sampler1DShadow sampler, vec3 p, float lod)
{
// TODO: Need to apply lod
@@ -1873,6 +2015,7 @@ public float textureLod(sampler1DShadow sampler, vec3 p, float lod)
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureLod(sampler1DArrayShadow sampler, vec3 p, float lod)
{
// TODO: Need to apply lod
@@ -1885,6 +2028,7 @@ public float textureLod(sampler1DArrayShadow sampler, vec3 p, float lod)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureOffset(Sampler1D<vector<T,N>> sampler, float p, constexpr int offset, float bias = 0.0)
{
return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
@@ -1892,6 +2036,7 @@ public vector<T,4> textureOffset(Sampler1D<vector<T,N>> sampler, float p, conste
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureOffset(Sampler2D<vector<T,N>> sampler, vec2 p, constexpr ivec2 offset, float bias = 0.0)
{
return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
@@ -1899,12 +2044,14 @@ public vector<T,4> textureOffset(Sampler2D<vector<T,N>> sampler, vec2 p, constex
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureOffset(Sampler3D<vector<T,N>> sampler, vec3 p, constexpr ivec3 offset, float bias = 0.0)
{
return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureOffset(sampler2DShadow sampler, vec3 p, constexpr ivec2 offset, float bias = 0.0)
{
// TODO: Need to apply bias
@@ -1912,6 +2059,7 @@ public float textureOffset(sampler2DShadow sampler, vec3 p, constexpr ivec2 offs
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureOffset(sampler1DShadow sampler, vec3 p, constexpr int offset, float bias = 0.0)
{
// TODO: Need to apply bias
@@ -1920,6 +2068,7 @@ public float textureOffset(sampler1DShadow sampler, vec3 p, constexpr int offset
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureOffset(Sampler1DArray<vector<T,N>> sampler, vec2 p, constexpr int offset, float bias = 0.0)
{
return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
@@ -1927,12 +2076,14 @@ public vector<T,4> textureOffset(Sampler1DArray<vector<T,N>> sampler, vec2 p, co
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureOffset(Sampler2DArray<vector<T,N>> sampler, vec3 p, constexpr ivec2 offset, float bias = 0.0)
{
return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureOffset(sampler1DArrayShadow sampler, vec3 p, constexpr int offset, float bias = 0.0)
{
// TODO: Need to apply bias
@@ -1940,6 +2091,7 @@ public float textureOffset(sampler1DArrayShadow sampler, vec3 p, constexpr int o
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureOffset(sampler2DArrayShadow sampler, vec4 p, constexpr ivec2 offset)
{
return sampler.SampleCmp(p.xyz, p.w, offset);
@@ -1951,6 +2103,7 @@ public float textureOffset(sampler2DArrayShadow sampler, vec4 p, constexpr ivec2
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetch(Sampler1D<vector<T,N>> sampler, int p, int lod)
{
return __vectorReshape<4>(sampler.Load(int2(p, lod)));
@@ -1958,6 +2111,7 @@ public vector<T,4> texelFetch(Sampler1D<vector<T,N>> sampler, int p, int lod)
__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetch(__TextureImpl<
vector<T,N>,
Shape,
@@ -1975,6 +2129,7 @@ public vector<T,4> texelFetch(__TextureImpl<
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetch(Sampler2DRect<vector<T,N>> sampler, ivec2 p)
{
return __vectorReshape<4>(sampler.Load(int3(p.xy,0)));
@@ -1982,6 +2137,7 @@ public vector<T,4> texelFetch(Sampler2DRect<vector<T,N>> sampler, ivec2 p)
__generic<T:__BuiltinArithmeticType, let N:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetch(SamplerBuffer<vector<T,N>,format> sampler, int p)
{
return __vectorReshape<4>(sampler.Load(p));
@@ -1989,6 +2145,7 @@ public vector<T,4> texelFetch(SamplerBuffer<vector<T,N>,format> sampler, int p)
__generic<T:__BuiltinArithmeticType, let N:int, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetch(__TextureImpl<
vector<T,N>,
__Shape2D,
@@ -2010,6 +2167,7 @@ public vector<T,4> texelFetch(__TextureImpl<
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetchOffset(Sampler1D<vector<T,N>> sampler, int p, int lod, constexpr int offset)
{
return texelFetch(sampler, p + offset, lod);
@@ -2017,6 +2175,7 @@ public vector<T,4> texelFetchOffset(Sampler1D<vector<T,N>> sampler, int p, int l
__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetchOffset(__TextureImpl<
vector<T,N>,
Shape,
@@ -2034,6 +2193,7 @@ public vector<T,4> texelFetchOffset(__TextureImpl<
__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetchOffset(__TextureImpl<
vector<T,N>,
Shape,
@@ -2051,6 +2211,7 @@ public vector<T,4> texelFetchOffset(__TextureImpl<
__generic<T:__BuiltinArithmeticType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
public vector<T,4> texelFetchOffset(Sampler2DRect<vector<T,N>> sampler, ivec2 p, constexpr ivec2 offset)
{
return texelFetch(sampler, p + offset);
@@ -2062,6 +2223,7 @@ public vector<T,4> texelFetchOffset(Sampler2DRect<vector<T,N>> sampler, ivec2 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec2 p, constexpr int offset, float bias = 0.0)
{
return textureOffset(sampler, p.x / p.y, offset, bias);
@@ -2069,6 +2231,7 @@ public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec2 p, con
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, constexpr int offset, float bias = 0.0)
{
return textureOffset(sampler, p.x / p.w, offset, bias);
@@ -2076,6 +2239,7 @@ public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, con
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec3 p, constexpr ivec2 offset, float bias = 0.0)
{
return textureOffset(sampler, p.xy / p.z, offset, bias);
@@ -2083,6 +2247,7 @@ public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec3 p, con
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, constexpr ivec2 offset, float bias = 0.0)
{
return textureOffset(sampler, p.xy / p.w, offset, bias);
@@ -2090,18 +2255,21 @@ public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, con
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjOffset(Sampler3D<vector<T,N>> sampler, vec4 p, constexpr ivec3 offset, float bias = 0.0)
{
return textureOffset(sampler, p.xyz / p.w, offset, bias);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjOffset(sampler1DShadow sampler, vec4 p, constexpr int offset, float bias = 0.0)
{
return textureOffset(sampler, p.xyz / p.w, offset, bias);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjOffset(sampler2DShadow sampler, vec4 p, constexpr ivec2 offset, float bias = 0.0)
{
return textureOffset(sampler, p.xyz / p.w, offset, bias);
@@ -2113,6 +2281,7 @@ public float textureProjOffset(sampler2DShadow sampler, vec4 p, constexpr ivec2
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureLodOffset(Sampler1D<vector<T,N>> sampler, float p, float lod, constexpr int offset)
{
return __vectorReshape<4>(sampler.SampleLevel(p, lod, offset));
@@ -2120,6 +2289,7 @@ public vector<T,4> textureLodOffset(Sampler1D<vector<T,N>> sampler, float p, flo
__generic<T:__BuiltinFloatingPointType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureLodOffset(__TextureImpl<
vector<T,N>,
Shape,
@@ -2136,6 +2306,7 @@ public vector<T,4> textureLodOffset(__TextureImpl<
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureLodOffset(sampler1DShadow sampler, vec3 p, float lod, constexpr int offset)
{
// TODO: Need to apply lod
@@ -2143,6 +2314,7 @@ public float textureLodOffset(sampler1DShadow sampler, vec3 p, float lod, conste
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureLodOffset(sampler2DShadow sampler, vec3 p, float lod, constexpr ivec2 offset)
{
// TODO: Need to apply lod
@@ -2150,6 +2322,7 @@ public float textureLodOffset(sampler2DShadow sampler, vec3 p, float lod, conste
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureLodOffset(sampler1DArrayShadow sampler, vec3 p, float lod, constexpr int offset)
{
// TODO: Need to apply lod
@@ -2162,6 +2335,7 @@ public float textureLodOffset(sampler1DArrayShadow sampler, vec3 p, float lod, c
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec2 p, float lod)
{
return textureLod(sampler, p.x / p.y, lod);
@@ -2169,6 +2343,7 @@ public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec2 p, float
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec4 p, float lod)
{
return textureLod(sampler, p.x / p.w, lod);
@@ -2176,6 +2351,7 @@ public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec4 p, float
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec3 p, float lod)
{
return textureLod(sampler, p.xy / p.z, lod);
@@ -2183,6 +2359,7 @@ public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec3 p, float
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec4 p, float lod)
{
return textureLod(sampler, p.xy / p.w, lod);
@@ -2190,18 +2367,21 @@ public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec4 p, float
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLod(Sampler3D<vector<T,N>> sampler, vec4 p, float lod)
{
return textureLod(sampler, p.xyz / p.w, lod);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjLod(sampler1DShadow sampler, vec4 p, float lod)
{
return textureLod(sampler, p.xyz / p.w, lod);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjLod(sampler2DShadow sampler, vec4 p, float lod)
{
return textureLod(sampler, p.xyz / p.w, lod);
@@ -2213,6 +2393,7 @@ public float textureProjLod(sampler2DShadow sampler, vec4 p, float lod)
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec2 p, float lod, constexpr int offset)
{
return textureLodOffset(sampler, p.x / p.y, lod, offset);
@@ -2220,6 +2401,7 @@ public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec2 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec4 p, float lod, constexpr int offset)
{
return textureLodOffset(sampler, p.x / p.w, lod, offset);
@@ -2227,6 +2409,7 @@ public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec4 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec3 p, float lod, constexpr ivec2 offset)
{
return textureLodOffset(sampler, p.xy / p.z, lod, offset);
@@ -2234,6 +2417,7 @@ public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec3 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec4 p, float lod, constexpr ivec2 offset)
{
return textureLodOffset(sampler, p.xy / p.w, lod, offset);
@@ -2241,18 +2425,21 @@ public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec4 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vector<T,4> textureProjLodOffset(Sampler3D<vector<T,N>> sampler, vec4 p, float lod, constexpr ivec3 offset)
{
return textureLodOffset(sampler, p.xyz / p.w, lod, offset);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjLodOffset(sampler1DShadow sampler, vec4 p, float lod, constexpr int offset)
{
return textureLodOffset(sampler, p.xyz / p.w, lod, offset);
}
[ForceInline]
+[require(glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjLodOffset(sampler2DShadow sampler, vec4 p, float lod, constexpr ivec2 offset)
{
return textureLodOffset(sampler, p.xyz / p.w, lod, offset);
@@ -2262,8 +2449,10 @@ public float textureProjLodOffset(sampler2DShadow sampler, vec4 p, float lod, co
// textureGrad
// -------------------
+
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureGrad(Sampler1D<vector<T,N>> sampler, float p, float dPdx, float dPdy)
{
return __vectorReshape<4>(sampler.SampleGrad(p, dPdx, dPdy));
@@ -2271,6 +2460,7 @@ public vector<T,4> textureGrad(Sampler1D<vector<T,N>> sampler, float p, float dP
__generic<T:__BuiltinFloatingPointType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureGrad(__TextureImpl<
vector<T,N>,
Shape,
@@ -2287,6 +2477,7 @@ public vector<T,4> textureGrad(__TextureImpl<
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGrad(sampler1DShadow sampler, vec3 p, float dPdx, float dPdy)
{
// TODO: Not implemented
@@ -2294,6 +2485,7 @@ public float textureGrad(sampler1DShadow sampler, vec3 p, float dPdx, float dPdy
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGrad(sampler1DArrayShadow sampler, vec3 p, float dPdx, float dPdy)
{
// TODO: Not implemented
@@ -2301,6 +2493,7 @@ public float textureGrad(sampler1DArrayShadow sampler, vec3 p, float dPdx, float
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGrad(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 dPdy)
{
// TODO: Not implemented on HLSL side yet.
@@ -2308,6 +2501,7 @@ public float textureGrad(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 dPdy)
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_shadowlod_cube)]
public float textureGrad(samplerCubeShadow sampler, vec4 p, vec3 dPdx, vec3 dPdy)
{
// TODO: Not implemented on HLSL side yet.
@@ -2315,6 +2509,7 @@ public float textureGrad(samplerCubeShadow sampler, vec4 p, vec3 dPdx, vec3 dPdy
}
[ForceInline]
+[require(cpp_cuda_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGrad(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy)
{
// TODO: Not implemented on HLSL side yet.
@@ -2327,12 +2522,14 @@ public float textureGrad(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx, vec2 d
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureGradOffset(Sampler1D<vector<T,N>> sampler, float p, float dPdx, float dPdy, constexpr int offset)
{
return __vectorReshape<4>(sampler.SampleGrad(p, dPdx, dPdy, offset));
}
__generic<T:__BuiltinFloatingPointType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
[ForceInline]
public vector<T,4> textureGradOffset(__TextureImpl<
vector<T,N>,
@@ -2350,6 +2547,7 @@ public vector<T,4> textureGradOffset(__TextureImpl<
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGradOffset(sampler1DShadow sampler, vec3 p, float dPdx, float dPdy, constexpr int offset)
{
// TODO: Not implemented on HLSL side yet.
@@ -2357,6 +2555,7 @@ public float textureGradOffset(sampler1DShadow sampler, vec3 p, float dPdx, floa
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGradOffset(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
// TODO: Not implemented on HLSL side yet.
@@ -2364,6 +2563,7 @@ public float textureGradOffset(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGradOffset(sampler1DArrayShadow sampler, vec3 p, float dPdx, float dPdy, constexpr int offset)
{
// TODO: Not implemented on HLSL side yet.
@@ -2371,6 +2571,7 @@ public float textureGradOffset(sampler1DArrayShadow sampler, vec3 p, float dPdx,
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureGradOffset(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
// TODO: Not implemented on HLSL side yet.
@@ -2383,6 +2584,7 @@ public float textureGradOffset(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec2 p, float dPdx, float dPdy)
{
return textureGrad(sampler, p.x / p.y, dPdx, dPdy);
@@ -2390,6 +2592,7 @@ public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec2 p, float
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec4 p, float dPdx, float dPdy)
{
return textureGrad(sampler, p.x / p.w, dPdx, dPdy);
@@ -2397,6 +2600,7 @@ public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec4 p, float
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec3 p, vec2 dPdx, vec2 dPdy)
{
return textureGrad(sampler, p.xy / p.z, dPdx, dPdy);
@@ -2404,6 +2608,7 @@ public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec3 p, vec2
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec4 p, vec2 dPdx, vec2 dPdy)
{
return textureGrad(sampler, p.xy / p.w, dPdx, dPdy);
@@ -2411,18 +2616,21 @@ public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec4 p, vec2
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGrad(Sampler3D<vector<T,N>> sampler, vec4 p, vec3 dPdx, vec3 dPdy)
{
return textureGrad(sampler, p.xyz / p.w, dPdx, dPdy);
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjGrad(sampler1DShadow sampler, vec4 p, float dPdx, float dPdy)
{
return textureGrad(sampler, p.xyz / p.w, dPdx, dPdy);
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjGrad(sampler2DShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy)
{
return textureGrad(sampler, p.xyz / p.w, dPdx, dPdy);
@@ -2434,6 +2642,7 @@ public float textureProjGrad(sampler2DShadow sampler, vec4 p, vec2 dPdx, vec2 dP
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec2 p, float dPdx, float dPdy, constexpr int offset)
{
return textureGradOffset(sampler, p.x / p.y, dPdx, dPdy, offset);
@@ -2441,6 +2650,7 @@ public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec2 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec4 p, float dPdx, float dPdy, constexpr int offset)
{
return textureGradOffset(sampler, p.x / p.w, dPdx, dPdy, offset);
@@ -2448,6 +2658,7 @@ public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec4 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec3 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
return textureGradOffset(sampler, p.xy / p.z, dPdx, dPdy, offset);
@@ -2455,6 +2666,7 @@ public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec3 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
return textureGradOffset(sampler, p.xy / p.w, dPdx, dPdy, offset);
@@ -2462,18 +2674,21 @@ public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec4 p,
__generic<T:__BuiltinFloatingPointType, let N:int>
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
public vector<T,4> textureProjGradOffset(Sampler3D<vector<T,N>> sampler, vec4 p, vec3 dPdx, vec3 dPdy, constexpr ivec3 offset)
{
return textureGradOffset(sampler, p.xyz / p.w, dPdx, dPdy, offset);
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjGradOffset(sampler1DShadow sampler, vec4 p, float dPdx, float dPdy, constexpr int offset)
{
return textureGradOffset(sampler, p.xyz / p.w, dPdx, dPdy, offset);
}
[ForceInline]
+[require(cpp_glsl_hlsl_spirv, texture_shadowlod)]
public float textureProjGradOffset(sampler2DShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
return textureGradOffset(sampler, p.xyz / p.w, dPdx, dPdy, offset);
@@ -2489,6 +2704,7 @@ public float textureProjGradOffset(sampler2DShadow sampler, vec4 p, vec2 dPdx, v
__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_gather)]
public vector<T,4> textureGather(__TextureImpl<
vector<T,N>,
Shape,
@@ -2512,6 +2728,7 @@ public vector<T,4> textureGather(__TextureImpl<
__generic<Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_gather)]
public vec4 textureGather(__TextureImpl<
float,
Shape,
@@ -2533,6 +2750,7 @@ public vec4 textureGather(__TextureImpl<
__generic<T:__BuiltinArithmeticType, let N:int, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_gather)]
public vector<T,4> textureGatherOffset(__TextureImpl<
vector<T,N>,
__Shape2D,
@@ -2556,6 +2774,7 @@ public vector<T,4> textureGatherOffset(__TextureImpl<
__generic<let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_gather)]
public vec4 textureGatherOffset(__TextureImpl<
float,
__Shape2D,
@@ -2577,6 +2796,7 @@ public vec4 textureGatherOffset(__TextureImpl<
__generic<T:__BuiltinArithmeticType, let N:int, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_gather)]
public vector<T,4> textureGatherOffsets(__TextureImpl<
vector<T,N>,
__Shape2D,
@@ -2600,6 +2820,7 @@ public vector<T,4> textureGatherOffsets(__TextureImpl<
__generic<let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
+[require(glsl_hlsl_spirv, texture_gather)]
public vec4 textureGatherOffsets(__TextureImpl<
float,
__Shape2D,
@@ -2619,196 +2840,235 @@ public vec4 textureGatherOffsets(__TextureImpl<
// Section 8.9.5. Compatibility Profile Texture Functions
//
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1D(sampler1D sampler, float coord)
{
return texture(sampler, coord);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1D(sampler1D sampler, float coord, float bias)
{
return texture(sampler, coord, bias);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DProj(sampler1D sampler, vec2 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DProj(sampler1D sampler, vec2 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DProj(sampler1D sampler, vec4 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DProj(sampler1D sampler, vec4 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DLod(sampler1D sampler, float coord, float lod)
{
return textureLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DProjLod(sampler1D sampler, vec2 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture1DProjLod(sampler1D sampler, vec4 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2D(sampler2D sampler, vec2 coord)
{
return texture(sampler, coord);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2D(sampler2D sampler, vec2 coord, float bias)
{
return texture(sampler, coord, bias);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DProj(sampler2D sampler, vec3 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DProj(sampler2D sampler, vec3 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DProj(sampler2D sampler, vec4 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DProj(sampler2D sampler, vec4 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DLod(sampler2D sampler, vec2 coord, float lod)
{
return textureLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture3D(sampler3D sampler, vec3 coord)
{
return texture(sampler, coord);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture3D(sampler3D sampler, vec3 coord, float bias)
{
return texture(sampler, coord, bias);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture3DProj(sampler3D sampler, vec4 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture3DProj(sampler3D sampler, vec4 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture3DLod(sampler3D sampler, vec3 coord, float lod)
{
return textureLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 texture3DProjLod(sampler3D sampler, vec4 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 textureCube(samplerCube sampler, vec3 coord)
{
return texture(sampler, coord);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 textureCube(samplerCube sampler, vec3 coord, float bias)
{
return texture(sampler, coord, bias);
}
+[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_fragment)]
public vec4 textureCubeLod(samplerCube sampler, vec3 coord, float lod)
{
return textureLod(sampler, coord, lod);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow1D(sampler1DShadow sampler, vec3 coord)
{
return texture(sampler, coord);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow1D(sampler1DShadow sampler, vec3 coord, float bias)
{
return texture(sampler, coord, bias);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow2D(sampler2DShadow sampler, vec3 coord)
{
return texture(sampler, coord);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow2D(sampler2DShadow sampler, vec3 coord, float bias)
{
return texture(sampler, coord, bias);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow1DProj(sampler1DShadow sampler, vec4 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow1DProj(sampler1DShadow sampler, vec4 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow2DProj(sampler2DShadow sampler, vec4 coord)
{
return textureProj(sampler, coord);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow2DProj(sampler2DShadow sampler, vec4 coord, float bias)
{
return textureProj(sampler, coord, bias);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow1DLod(sampler1DShadow sampler, vec3 coord, float lod)
{
return textureLod(sampler, coord, lod);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow2DLod(sampler2DShadow sampler, vec3 coord, float lod)
{
return textureLod(sampler, coord, lod);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow1DProjLod(sampler1DShadow sampler, vec4 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
}
+[require(glsl_spirv, texture_shadowlod)]
public vec4 shadow2DProjLod(sampler2DShadow sampler, vec4 coord, float lod)
{
return textureProjLod(sampler, coord, lod);
@@ -3010,10 +3270,10 @@ ${{{{
}}}}
// readonly writeonly in GLSL means an object only allows information queries.
- [require(spirv)]
- [require(glsl)]
[__readNone]
- [ForceInline] public $(imageSizeIntOrIVec) imageSize(readonly writeonly $(fullTypeName) image)
+ [ForceInline]
+ [require(glsl_spirv, image_size)]
+ public $(imageSizeIntOrIVec) imageSize(readonly writeonly $(fullTypeName) image)
{
__target_switch
{
@@ -3026,10 +3286,10 @@ ${{{{
};
}
}
- [require(spirv)]
- [require(glsl)]
[__NoSideEffect]
- [ForceInline] public $(targetType.prefix)vec4 imageLoad(readonly $(IMAGE_PARAMS))
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.prefix)vec4 imageLoad(readonly $(IMAGE_PARAMS))
{
__target_switch
{
@@ -3044,9 +3304,9 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public void imageStore(writeonly $(IMAGE_PARAMS), $(targetType.prefix)vec4 data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public void imageStore(writeonly $(IMAGE_PARAMS), $(targetType.prefix)vec4 data)
{
__target_switch
{
@@ -3067,10 +3327,10 @@ ${{{{
{
}}}}
// readonly writeonly in GLSL means an object only allows information queries.
- [require(spirv)]
- [require(glsl)]
[__readNone]
- [ForceInline] public int imageSamples(readonly writeonly $(fullTypeName) image)
+ [ForceInline]
+ [require(glsl_spirv, image_samples)]
+ public int imageSamples(readonly writeonly $(fullTypeName) image)
{
__target_switch
{
@@ -3086,9 +3346,9 @@ ${{{{
${{{{
}
}}}}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicAdd($(IMAGE_PARAMS), $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicAdd($(IMAGE_PARAMS), $(targetType.type) data)
{
typeRequireChecks_image_atomic_tier1<$(targetType.type)>();
__target_switch
@@ -3109,9 +3369,9 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicExchange($(IMAGE_PARAMS), $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicExchange($(IMAGE_PARAMS), $(targetType.type) data)
{
typeRequireChecks_image_atomic_tier1<$(targetType.type)>();
__target_switch
@@ -3132,9 +3392,9 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicMin($(IMAGE_PARAMS), $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicMin($(IMAGE_PARAMS), $(targetType.type) data)
{
typeRequireChecks_image_atomic_tier2<$(targetType.type)>();
__target_switch
@@ -3155,9 +3415,9 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicMax($(IMAGE_PARAMS), $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicMax($(IMAGE_PARAMS), $(targetType.type) data)
{
typeRequireChecks_image_atomic_tier2<$(targetType.type)>();
__target_switch
@@ -3182,9 +3442,9 @@ ${{{{
if (!targetType.isInt)
continue;
}}}}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicAnd($(IMAGE_PARAMS), $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicAnd($(IMAGE_PARAMS), $(targetType.type) data)
{
__target_switch
{
@@ -3204,9 +3464,9 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicOr($(IMAGE_PARAMS), $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicOr($(IMAGE_PARAMS), $(targetType.type) data)
{
__target_switch
{
@@ -3226,9 +3486,10 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicXor($(IMAGE_PARAMS), $(targetType.type) data)
+
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicXor($(IMAGE_PARAMS), $(targetType.type) data)
{
__target_switch
{
@@ -3248,9 +3509,9 @@ ${{{{
}
}
}
- [require(spirv)]
- [require(glsl)]
- [ForceInline] public $(targetType.type) imageAtomicCompSwap($(IMAGE_PARAMS), $(targetType.type) compare, $(targetType.type) data)
+ [ForceInline]
+ [require(glsl_spirv, image_loadstore)]
+ public $(targetType.type) imageAtomicCompSwap($(IMAGE_PARAMS), $(targetType.type) compare, $(targetType.type) data)
{
__target_switch
{
@@ -3287,6 +3548,7 @@ public typealias hitObjectNV = HitObject;
//GL_EXT_ray_tracing BuiltIn's
+[require(any_target, raytracing_allstages)]
void requireGLSLExtForRayTracingBuiltin()
{
__target_switch
@@ -3294,25 +3556,27 @@ void requireGLSLExtForRayTracingBuiltin()
case glsl:
__requireGLSLExtension("GL_EXT_ray_tracing");
__intrinsic_asm "";
+ default:
+ return;
}
}
__spirv_version(1.4)
+[require(any_target, raytracing_allstages)]
void setupExtForRayTracingBuiltIn()
{
__target_switch
{
case glsl:
requireGLSLExtForRayTracingBuiltin();
- case spirv:
+ default:
return;
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property uint3 gl_LaunchIDNV
{
+ [require(glsl_spirv, raytracing_allstages)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3333,10 +3597,9 @@ public property uint3 gl_LaunchIDNV
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property uint3 gl_LaunchIDEXT
{
+ [require(cuda_glsl_hlsl_spirv, raytracing_allstages)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3344,10 +3607,9 @@ public property uint3 gl_LaunchIDEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property uint3 gl_LaunchSizeNV
{
+ [require(glsl_spirv, raytracing_allstages)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3368,10 +3630,9 @@ public property uint3 gl_LaunchSizeNV
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property uint3 gl_LaunchSizeEXT
{
+ [require(cuda_glsl_hlsl_spirv, raytracing_allstages)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3379,10 +3640,10 @@ public property uint3 gl_LaunchSizeEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
+
public property int gl_PrimitiveID
{
+ [require(cuda_glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3390,10 +3651,9 @@ public property int gl_PrimitiveID
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property int gl_InstanceID
{
+ [require(cuda_glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3401,10 +3661,9 @@ public property int gl_InstanceID
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property int gl_InstanceCustomIndexEXT
{
+ [require(cuda_glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3412,10 +3671,9 @@ public property int gl_InstanceCustomIndexEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property int gl_GeometryIndexEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3423,10 +3681,9 @@ public property int gl_GeometryIndexEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property vec3 gl_WorldRayOriginEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection_miss)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3434,10 +3691,9 @@ public property vec3 gl_WorldRayOriginEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property vec3 gl_WorldRayDirectionEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection_miss)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3445,10 +3701,9 @@ public property vec3 gl_WorldRayDirectionEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property vec3 gl_ObjectRayOriginEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3456,10 +3711,9 @@ public property vec3 gl_ObjectRayOriginEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property vec3 gl_ObjectRayDirectionEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3467,10 +3721,9 @@ public property vec3 gl_ObjectRayDirectionEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property float gl_RayTminEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection_miss)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3478,10 +3731,9 @@ public property float gl_RayTminEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property float gl_RayTmaxEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection_miss)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3489,10 +3741,9 @@ public property float gl_RayTmaxEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property uint gl_IncomingRayFlagsEXT
{
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit_intersection_miss)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3500,10 +3751,9 @@ public property uint gl_IncomingRayFlagsEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property float gl_HitTEXT
{
+ [require(glsl_spirv, raytracing_anyhit_closesthit)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3524,10 +3774,10 @@ public property float gl_HitTEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property uint gl_HitKindEXT
{
+
+ [require(glsl_hlsl_spirv, raytracing_anyhit_closesthit)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3535,10 +3785,9 @@ public property uint gl_HitKindEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property mat4x3 gl_ObjectToWorldEXT
{
+ [require(glsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3560,10 +3809,9 @@ public property mat4x3 gl_ObjectToWorldEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property mat3x4 gl_ObjectToWorld3x4EXT
{
+ [require(glsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3584,10 +3832,9 @@ public property mat3x4 gl_ObjectToWorld3x4EXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property mat4x3 gl_WorldToObjectEXT
{
+ [require(glsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3609,10 +3856,9 @@ public property mat4x3 gl_WorldToObjectEXT
}
}
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
public property mat3x4 gl_WorldToObject3x4EXT
{
+ [require(glsl_spirv, raytracing_anyhit_closesthit_intersection)]
get
{
setupExtForRayTracingBuiltIn();
@@ -3635,9 +3881,8 @@ public property mat3x4 gl_WorldToObject3x4EXT
// GL_EXT_ray_tracing functions
-__glsl_extension(GL_EXT_ray_query)
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
+__glsl_extension(GL_EXT_ray_tracing)
+[require(glsl_spirv, raytracing_raygen_closesthit_miss)]
public void traceRayEXT(
accelerationStructureEXT topLevel,
uint rayFlags,
@@ -3689,17 +3934,15 @@ public void traceRayEXT(
}
}
-__glsl_extension(GL_EXT_ray_query)
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
+__glsl_extension(GL_EXT_ray_tracing)
+[require(glsl_spirv, raytracing_intersection)]
public bool reportIntersectionEXT(float hitT, uint hitKind)
{
return __reportIntersection(hitT, hitKind);
}
-__glsl_extension(GL_EXT_ray_query)
-[require(glsl, raytracing)]
-[require(spirv, raytracing)]
+__glsl_extension(GL_EXT_ray_tracing)
+[require(glsl_spirv, raytracing_raygen_closesthit_miss_callable)]
public void executeCallableEXT(
uint sbtRecordIndex,
int callable /*callableDataEXT and callableDataInEXT*/)
@@ -3748,9 +3991,8 @@ public static const uint gl_RayQueryCandidateIntersectionAABBEXT = 1U;
// GL_EXT_ray_query functions
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public void rayQueryInitializeEXT(
inout rayQueryEXT q,
accelerationStructureEXT topLevel,
@@ -3765,17 +4007,15 @@ public void rayQueryInitializeEXT(
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public bool rayQueryProceedEXT(inout rayQueryEXT q)
{
return q.Proceed();
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
+[require(glsl_spirv, rayquery)]
[mutating]
[ForceInline]
public void rayQueryTerminateEXT(inout rayQueryEXT q)
@@ -3784,28 +4024,25 @@ public void rayQueryTerminateEXT(inout rayQueryEXT q)
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public void rayQueryGenerateIntersectionEXT(inout rayQueryEXT q, float tHit)
{
q.CommitProceduralPrimitiveHit(tHit);
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public void rayQueryConfirmIntersectionEXT(inout rayQueryEXT q)
{
q.CommitNonOpaqueTriangleHit();
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public uint rayQueryGetIntersectionTypeEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3819,45 +4056,40 @@ public uint rayQueryGetIntersectionTypeEXT(rayQueryEXT q, bool committed)
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public float rayQueryGetRayTMinEXT(rayQueryEXT q)
{
return q.RayTMin();
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public uint rayQueryGetRayFlagsEXT(rayQueryEXT q)
{
return q.RayFlags();
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public vec3 rayQueryGetWorldRayOriginEXT(rayQueryEXT q)
{
return q.WorldRayOrigin();
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public vec3 rayQueryGetWorldRayDirectionEXT(rayQueryEXT q)
{
return q.WorldRayDirection();
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public float rayQueryGetIntersectionTEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3871,9 +4103,8 @@ public float rayQueryGetIntersectionTEXT(rayQueryEXT q, bool committed)
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public int rayQueryGetIntersectionInstanceCustomIndexEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3887,9 +4118,8 @@ public int rayQueryGetIntersectionInstanceCustomIndexEXT(rayQueryEXT q, bool com
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public int rayQueryGetIntersectionInstanceIdEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3903,9 +4133,8 @@ public int rayQueryGetIntersectionInstanceIdEXT(rayQueryEXT q, bool committed)
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public uint rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3919,9 +4148,8 @@ public uint rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(ray
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public int rayQueryGetIntersectionGeometryIndexEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3935,9 +4163,8 @@ public int rayQueryGetIntersectionGeometryIndexEXT(rayQueryEXT q, bool committed
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public int rayQueryGetIntersectionPrimitiveIndexEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3951,9 +4178,8 @@ public int rayQueryGetIntersectionPrimitiveIndexEXT(rayQueryEXT q, bool committe
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public vec2 rayQueryGetIntersectionBarycentricsEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3967,9 +4193,8 @@ public vec2 rayQueryGetIntersectionBarycentricsEXT(rayQueryEXT q, bool committed
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public bool rayQueryGetIntersectionFrontFaceEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -3983,17 +4208,15 @@ public bool rayQueryGetIntersectionFrontFaceEXT(rayQueryEXT q, bool committed)
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public bool rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQueryEXT q)
{
return q.CandidateProceduralPrimitiveNonOpaque();
}
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public vec3 rayQueryGetIntersectionObjectRayDirectionEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -4007,9 +4230,8 @@ public vec3 rayQueryGetIntersectionObjectRayDirectionEXT(rayQueryEXT q, bool com
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public vec3 rayQueryGetIntersectionObjectRayOriginEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -4023,9 +4245,8 @@ public vec3 rayQueryGetIntersectionObjectRayOriginEXT(rayQueryEXT q, bool commit
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public mat4x3 rayQueryGetIntersectionObjectToWorldEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -4039,9 +4260,8 @@ public mat4x3 rayQueryGetIntersectionObjectToWorldEXT(rayQueryEXT q, bool commit
}
__glsl_extension(GL_EXT_ray_query)
-[require(glsl, rayquery)]
-[require(spirv, rayquery)]
[ForceInline]
+[require(glsl_spirv, rayquery)]
public mat4x3 rayQueryGetIntersectionWorldToObjectEXT(rayQueryEXT q, bool committed)
{
if (committed)
@@ -4059,9 +4279,8 @@ public mat4x3 rayQueryGetIntersectionWorldToObjectEXT(rayQueryEXT q, bool commit
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectTraceRayNV(
inout hitObjectNV hitObject,
accelerationStructureEXT topLevel,
@@ -4120,9 +4339,8 @@ __glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
__glsl_extension(GL_NV_ray_tracing_motion_blur)
-[require(glsl, ser_motion)]
-[require(spirv, ser_motion)]
[ForceInline]
+[require(glsl_spirv, ser_motion_raygen_closesthit_miss)]
public void hitObjectTraceRayMotionNV(
inout hitObjectNV hitObject,
accelerationStructureEXT topLevel,
@@ -4185,9 +4403,8 @@ public void hitObjectTraceRayMotionNV(
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectRecordHitNV(
inout hitObjectNV hitObject,
accelerationStructureEXT topLevel,
@@ -4249,9 +4466,8 @@ __glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
__glsl_extension(GL_NV_ray_tracing_motion_blur)
-[require(glsl, ser_motion)]
-[require(spirv, ser_motion)]
[ForceInline]
+[require(glsl_spirv, ser_motion_raygen_closesthit_miss)]
public void hitObjectRecordHitMotionNV(
inout hitObjectNV hitObject,
accelerationStructureEXT topLevel,
@@ -4315,9 +4531,8 @@ public void hitObjectRecordHitMotionNV(
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectRecordHitWithIndexNV(
inout hitObjectNV hitObject,
accelerationStructureEXT topLevel,
@@ -4376,9 +4591,8 @@ __glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
__glsl_extension(GL_NV_ray_tracing_motion_blur)
-[require(glsl, ser_motion)]
-[require(spirv, ser_motion)]
[ForceInline]
+[require(glsl_spirv, ser_motion_raygen_closesthit_miss)]
public void hitObjectRecordHitWithIndexMotionNV(
inout hitObjectNV hitObject,
accelerationStructureEXT topLevel,
@@ -4441,9 +4655,8 @@ public void hitObjectRecordHitWithIndexMotionNV(
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectRecordMissNV(
inout hitObjectNV hitObject,
uint sbtRecordIndex,
@@ -4462,9 +4675,8 @@ __glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
__glsl_extension(GL_NV_ray_tracing_motion_blur)
-[require(glsl, ser_motion)]
-[require(spirv, ser_motion)]
[ForceInline]
+[require(glsl_spirv, ser_motion_raygen_closesthit_miss)]
public void hitObjectRecordMissMotionNV(
inout hitObjectNV hitObject,
uint sbtRecordIndex,
@@ -4484,9 +4696,8 @@ public void hitObjectRecordMissMotionNV(
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectRecordEmptyNV(hitObjectNV hitObject)
{
hitObject = HitObject::MakeNop();
@@ -4495,9 +4706,8 @@ public void hitObjectRecordEmptyNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectExecuteShaderNV(
inout hitObjectNV hitObject,
constexpr int payload)
@@ -4521,9 +4731,8 @@ public void hitObjectExecuteShaderNV(
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public bool hitObjectIsEmptyNV(hitObjectNV hitObject)
{
return hitObject.IsNop();
@@ -4532,9 +4741,8 @@ public bool hitObjectIsEmptyNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public bool hitObjectIsMissNV(hitObjectNV hitObject)
{
return hitObject.IsMiss();
@@ -4543,9 +4751,8 @@ public bool hitObjectIsMissNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public bool hitObjectIsHitNV(hitObjectNV hitObject)
{
return hitObject.IsHit();
@@ -4554,9 +4761,8 @@ public bool hitObjectIsHitNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public float hitObjectGetRayTMinNV(hitObjectNV hitObject)
{
return hitObject.GetRayDesc().TMin;
@@ -4565,9 +4771,8 @@ public float hitObjectGetRayTMinNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public float hitObjectGetRayTMaxNV(hitObjectNV hitObject)
{
return hitObject.GetRayDesc().TMax;
@@ -4576,9 +4781,8 @@ public float hitObjectGetRayTMaxNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public vec3 hitObjectGetWorldRayOriginNV(hitObjectNV hitObject)
{
return hitObject.GetRayDesc().Origin;
@@ -4587,9 +4791,8 @@ public vec3 hitObjectGetWorldRayOriginNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV hitObject)
{
return hitObject.GetRayDesc().Direction;
@@ -4598,9 +4801,8 @@ public vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public vec3 hitObjectGetObjectRayOriginNV(hitObjectNV hitObject)
{
return hitObject.GetObjectRayOrigin();
@@ -4609,9 +4811,8 @@ public vec3 hitObjectGetObjectRayOriginNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV hitObject)
{
return hitObject.GetObjectRayDirection();
@@ -4620,9 +4821,8 @@ public vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV hitObject)
{
return transpose(hitObject.GetObjectToWorld());
@@ -4631,9 +4831,8 @@ public mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV hitObject)
{
return transpose(hitObject.GetWorldToObject());
@@ -4642,9 +4841,8 @@ public mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public int hitObjectGetInstanceCustomIndexNV(hitObjectNV hitObject)
{
return hitObject.GetInstanceID();
@@ -4653,17 +4851,18 @@ public int hitObjectGetInstanceCustomIndexNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public int hitObjectGetInstanceIdNV(hitObjectNV hitObject)
{
return hitObject.GetInstanceIndex();
}
-[require(glsl, ser)]
-[require(spirv, ser)]
+__glsl_extension(GL_EXT_ray_tracing)
+__glsl_extension(GL_NV_shader_invocation_reorder)
+__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public int hitObjectGetGeometryIndexNV(hitObjectNV hitObject)
{
return hitObject.GetGeometryIndex();
@@ -4672,9 +4871,8 @@ public int hitObjectGetGeometryIndexNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public int hitObjectGetPrimitiveIndexNV(hitObjectNV hitObject)
{
return hitObject.GetPrimitiveIndex();
@@ -4683,9 +4881,8 @@ public int hitObjectGetPrimitiveIndexNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public uint hitObjectGetHitKindNV(hitObjectNV hitObject)
{
return hitObject.GetHitKind();
@@ -4694,9 +4891,8 @@ public uint hitObjectGetHitKindNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public void hitObjectGetAttributesNV(
inout hitObjectNV hitObject,
constexpr int attributeLocation)
@@ -4721,9 +4917,8 @@ public void hitObjectGetAttributesNV(
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV hitObject)
{
return hitObject.GetShaderRecordBufferHandle();
@@ -4732,9 +4927,8 @@ public uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV hitObject)
{
return hitObject.GetShaderTableIndex();
@@ -4743,9 +4937,8 @@ public uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen_closesthit_miss)]
public float hitObjectGetCurrentTimeNV(hitObjectNV hitObject)
{
return hitObject.GetCurrentTime();
@@ -4754,9 +4947,8 @@ public float hitObjectGetCurrentTimeNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen)]
public void reorderThreadNV(uint hint, uint bits)
{
ReorderThread(hint, bits);
@@ -4765,9 +4957,8 @@ public void reorderThreadNV(uint hint, uint bits)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen)]
public void reorderThreadNV(hitObjectNV hitObject)
{
ReorderThread(hitObject);
@@ -4776,9 +4967,8 @@ public void reorderThreadNV(hitObjectNV hitObject)
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_shader_invocation_reorder)
__glsl_extension(GLSL_EXT_buffer_reference_uvec2)
-[require(glsl, ser)]
-[require(spirv, ser)]
[ForceInline]
+[require(glsl_spirv, ser_raygen)]
public void reorderThreadNV(hitObjectNV hitObject, uint hint, uint bits)
{
ReorderThread(hitObject, hint, bits);
@@ -4786,10 +4976,9 @@ public void reorderThreadNV(hitObjectNV hitObject, uint hint, uint bits)
/// GL_NV_ray_tracing_motion_blur
-[require(glsl, raytracing_motionblur)]
-[require(spirv, raytracing_motionblur)]
public property float gl_CurrentRayTimeNV
{
+ [require(glsl_spirv, raytracing_motionblur_anyhit_closesthit_intersection_miss)]
get
{
__target_switch
@@ -4809,9 +4998,8 @@ public property float gl_CurrentRayTimeNV
__glsl_extension(GL_EXT_ray_tracing)
__glsl_extension(GL_NV_ray_tracing_motion_blur)
-[require(glsl, raytracing_motionblur)]
-[require(spirv, raytracing_motionblur)]
[ForceInline]
+[require(glsl_spirv, raytracing_motionblur_raygen_closesthit_miss)]
public void traceRayMotionNV(
accelerationStructureEXT topLevel,
uint rayFlags,
@@ -4901,7 +5089,7 @@ void shader_subgroup_preamble() {
{
case glsl:
typeRequireChecks_shader_subgroup_GLSL<T>();
- case spirv:
+ default:
return;
}
@@ -4909,50 +5097,57 @@ void shader_subgroup_preamble() {
// GL_KHR_shader_subgroup_basic Built-in Variables
+[require(cpp_cuda_glsl_hlsl_spirv, subgroup_basic)]
void requireGLSLExtForSubgroupBasicBuiltin() {
__target_switch
{
case glsl:
__requireGLSLExtension("GL_KHR_shader_subgroup_basic");
__intrinsic_asm "";
+ default:
+ return;
}
}
-__spirv_version(1.3)
+[require(cpp_cuda_glsl_hlsl_spirv, subgroup_basic)]
void setupExtForSubgroupBasicBuiltIn() {
__target_switch
{
case glsl:
requireGLSLExtForSubgroupBasicBuiltin();
- case spirv:
+ default:
return;
}
}
+__spirv_version(1.3)
+[require(cpp_cuda_glsl_hlsl_spirv, subgroup_ballot)]
void requireGLSLExtForSubgroupBallotBuiltin() {
__target_switch
{
case glsl:
__requireGLSLExtension("GL_KHR_shader_subgroup_ballot");
__intrinsic_asm "";
+ default:
+ return;
}
}
-__spirv_version(1.3)
+__spirv_version(1.3)
+[require(cpp_cuda_glsl_hlsl_spirv, subgroup_ballot)]
void setupExtForSubgroupBallotBuiltIn() {
__target_switch
{
case glsl:
requireGLSLExtForSubgroupBallotBuiltin();
- case spirv:
+ default:
return;
}
}
-[require(glsl)]
-[require(spirv)]
public property uint gl_NumSubgroups {
+ [require(glsl_spirv, subgroup_basic)]
get {
setupExtForSubgroupBasicBuiltIn();
__target_switch
@@ -4969,10 +5164,9 @@ public property uint gl_NumSubgroups {
}
}
-[require(glsl)]
-[require(spirv)]
public property uint gl_SubgroupID
{
+ [require(glsl_spirv, subgroup_basic)]
get {
setupExtForSubgroupBasicBuiltIn();
__target_switch
@@ -4988,30 +5182,27 @@ public property uint gl_SubgroupID
}
}
-[require(glsl)]
-[require(spirv)]
public property uint gl_SubgroupSize
{
+ [require(cpp_cuda_glsl_hlsl_spirv, subgroup_basic)]
get {
setupExtForSubgroupBasicBuiltIn();
return WaveGetLaneCount();
}
}
-[require(glsl)]
-[require(spirv)]
public property uint gl_SubgroupInvocationID
{
+ [require(cpp_cuda_glsl_hlsl_spirv, subgroup_basic)]
get {
setupExtForSubgroupBasicBuiltIn();
return WaveGetLaneIndex();
}
}
-[require(glsl)]
-[require(spirv)]
public property uvec4 gl_SubgroupEqMask
{
+ [require(glsl_spirv, subgroup_basic_ballot)]
get {
setupExtForSubgroupBasicBuiltIn();
setupExtForSubgroupBallotBuiltIn();
@@ -5028,10 +5219,9 @@ public property uvec4 gl_SubgroupEqMask
}
}
-[require(glsl)]
-[require(spirv)]
public property uvec4 gl_SubgroupGeMask
{
+ [require(glsl_spirv, subgroup_basic_ballot)]
get {
setupExtForSubgroupBasicBuiltIn();
setupExtForSubgroupBallotBuiltIn();
@@ -5048,10 +5238,9 @@ public property uvec4 gl_SubgroupGeMask
}
}
-[require(glsl)]
-[require(spirv)]
public property uvec4 gl_SubgroupGtMask
{
+ [require(glsl_spirv, subgroup_basic_ballot)]
get {
setupExtForSubgroupBasicBuiltIn();
setupExtForSubgroupBallotBuiltIn();
@@ -5068,10 +5257,9 @@ public property uvec4 gl_SubgroupGtMask
}
}
-[require(glsl)]
-[require(spirv)]
public property uvec4 gl_SubgroupLeMask
{
+ [require(glsl_spirv, subgroup_basic_ballot)]
get {
setupExtForSubgroupBasicBuiltIn();
setupExtForSubgroupBallotBuiltIn();
@@ -5088,10 +5276,9 @@ public property uvec4 gl_SubgroupLeMask
}
}
-[require(glsl)]
-[require(spirv)]
public property uvec4 gl_SubgroupLtMask
{
+ [require(glsl_spirv, subgroup_basic_ballot)]
get {
setupExtForSubgroupBasicBuiltIn();
setupExtForSubgroupBallotBuiltIn();
@@ -5110,9 +5297,11 @@ public property uvec4 gl_SubgroupLtMask
// GL_KHR_shader_subgroup_basic
-__glsl_extension(GL_KHR_shader_subgroup_basic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public void subgroupBarrier()
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_basic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_basic)]
+public void subgroupBarrier()
{
__target_switch
{
@@ -5131,9 +5320,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_basic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public void subgroupMemoryBarrier()
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_basic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_basic)]
+public void subgroupMemoryBarrier()
{
__target_switch
{
@@ -5152,9 +5343,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_basic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public void subgroupMemoryBarrierBuffer()
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_basic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_basic)]
+public void subgroupMemoryBarrierBuffer()
{
// the following implementation is NOT the same as DeviceMemoryBarrier
// HLSL lacks the same granularity of blocking on subgroup memory within a subgroup
@@ -5175,9 +5368,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_basic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public void subgroupMemoryBarrierImage()
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_basic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_basic)]
+public void subgroupMemoryBarrierImage()
{
__target_switch
{
@@ -5195,9 +5390,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_basic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public void subgroupMemoryBarrierShared()
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_basic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_basic)]
+public void subgroupMemoryBarrierShared()
{
__target_switch
{
@@ -5217,9 +5414,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_basic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupElect()
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_basic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_basic)]
+public bool subgroupElect()
{
__target_switch
{
@@ -5235,36 +5434,41 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_vote
-__glsl_extension(GL_KHR_shader_subgroup_vote) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupAll(bool value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_vote)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_vote)]
+public bool subgroupAll(bool value)
{
-
return WaveActiveAllTrue(value);
-
}
-__glsl_extension(GL_KHR_shader_subgroup_vote) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupAny(bool value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_vote)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_vote)]
+public bool subgroupAny(bool value)
{
return WaveActiveAnyTrue(value);
-
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_vote) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupAllEqual(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_vote)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_vote)]
+public bool subgroupAllEqual(T value)
{
shader_subgroup_preamble<T>();
return WaveActiveAllEqual(value);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_vote) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupAllEqual(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_vote)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_vote)]
+public bool subgroupAllEqual(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WaveActiveAllEqual(value);
@@ -5273,45 +5477,55 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_arithmetic
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupAdd(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public T subgroupAdd(T value)
{
shader_subgroup_preamble<T>();
return WaveActiveSum(value);
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupMul(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public T subgroupMul(T value)
{
shader_subgroup_preamble<T>();
return WaveActiveProduct(value);
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupMin(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public T subgroupMin(T value)
{
shader_subgroup_preamble<T>();
return WaveActiveMin(value);
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupMax(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public T subgroupMax(T value)
{
shader_subgroup_preamble<T>();
return WaveActiveMax(value);
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupAnd(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupAnd(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5334,9 +5548,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupOr(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupOr(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5359,9 +5575,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupXor(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupXor(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5384,9 +5602,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveAdd(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveAdd(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5403,9 +5623,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveMul(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveMul(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5422,9 +5644,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveMin(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveMin(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5443,9 +5667,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveMax(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveMax(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5464,9 +5690,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveAnd(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveAnd(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5489,9 +5717,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveOr(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveOr(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5514,9 +5744,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupInclusiveXor(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupInclusiveXor(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5531,9 +5763,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveAdd(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveAdd(T value)
{
shader_subgroup_preamble<T>();
return WavePrefixSum(value);
@@ -5541,18 +5775,22 @@ __spirv_version(1.3) [require(spirv)]
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveMul(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveMul(T value)
{
shader_subgroup_preamble<T>();
return WavePrefixProduct(value);
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveMin(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveMin(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5571,9 +5809,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveMax(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveMax(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5592,9 +5832,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveAnd(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveAnd(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5607,9 +5849,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveOr(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveOr(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5622,9 +5866,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupExclusiveXor(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public T subgroupExclusiveXor(T value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5640,45 +5886,55 @@ __spirv_version(1.3) [require(spirv)]
//note: this is a seperate section because it is so huge that the only reasonable way to implement this is to just regex replace code
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupAdd(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupAdd(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WaveActiveSum(value);
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupMul(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupMul(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WaveActiveProduct(value);
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupMin(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupMin(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WaveActiveMin(value);
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupMax(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupMax(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WaveActiveMax(value);
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupAnd(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupAnd(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5702,9 +5958,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupOr(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupOr(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5728,9 +5986,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupXor(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupXor(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5753,9 +6013,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveAdd(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveAdd(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5772,9 +6034,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveMul(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveMul(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5791,9 +6055,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveMin(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveMin(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5812,9 +6078,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveMax(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveMax(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5833,9 +6101,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveAnd(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveAnd(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5849,9 +6119,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveOr(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveOr(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5865,9 +6137,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupInclusiveXor(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupInclusiveXor(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5881,9 +6155,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveAdd(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveAdd(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WavePrefixSum(value);
@@ -5891,18 +6167,22 @@ __spirv_version(1.3) [require(spirv)]
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveMul(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveMul(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WavePrefixProduct(value);
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveMin(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveMin(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5921,9 +6201,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveMax(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveMax(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5942,9 +6224,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveAnd(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveAnd(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5957,9 +6241,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveOr(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveOr(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5972,9 +6258,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_arithmetic) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupExclusiveXor(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_arithmetic)
+[ForceInline]
+[require(glsl_spirv, subgroup_arithmetic)]
+public vector<T,N> subgroupExclusiveXor(vector<T,N> value)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -5989,45 +6277,55 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_ballot
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupBroadcast(T value, uint id)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public T subgroupBroadcast(T value, uint id)
{
shader_subgroup_preamble<T>();
return WaveMaskBroadcastLaneAt(WaveGetActiveMask(), value, id);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupBroadcast(vector<T,N> value, uint id)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public vector<T,N> subgroupBroadcast(vector<T,N> value, uint id)
{
shader_subgroup_preamble<T>();
return WaveMaskBroadcastLaneAt(WaveGetActiveMask(), value, id);
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupBroadcastFirst(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public T subgroupBroadcastFirst(T value)
{
shader_subgroup_preamble<T>();
return WaveMaskReadLaneFirst(WaveGetActiveMask(), value);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupBroadcastFirst(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public vector<T,N> subgroupBroadcastFirst(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return WaveMaskReadLaneFirst(WaveGetActiveMask(), value);
}
// WaveMaskBallot is not the same; it force trunc's
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public uvec4 subgroupBallot(bool value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public uvec4 subgroupBallot(bool value)
{
return WaveActiveBallot(value);
}
@@ -6042,9 +6340,11 @@ __spirv_version(1.3) [require(spirv)]
// note 2: we have a waveLaneCount check because based on wave lane count we can determine if we can do a
// fast path or slow path (know index is 0 or non 0)
// }
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupInverseBallot(uvec4 value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public bool subgroupInverseBallot(uvec4 value)
{
__target_switch
{
@@ -6075,9 +6375,11 @@ __spirv_version(1.3) [require(spirv)]
}
// same logic as subgroupInverseBallot
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public bool subgroupBallotBitExtract(uvec4 value, uint index)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_ballot)]
+public bool subgroupBallotBitExtract(uvec4 value, uint index)
{
__target_switch
{
@@ -6107,9 +6409,11 @@ __spirv_version(1.3) [require(spirv)]
// the count is only supposed to use uvec4 values within bottom bits of subgroup launched, not a simple countbits
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public uint subgroupBallotBitCount(uvec4 value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(glsl_spirv, subgroup_ballot)]
+public uint subgroupBallotBitCount(uvec4 value)
{
__target_switch
{
@@ -6123,9 +6427,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public uint subgroupBallotInclusiveBitCount(uvec4 value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(glsl_spirv, subgroup_ballot)]
+public uint subgroupBallotInclusiveBitCount(uvec4 value)
{
__target_switch
{
@@ -6139,9 +6445,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public uint subgroupBallotExclusiveBitCount(uvec4 value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(glsl_spirv, subgroup_ballot)]
+public uint subgroupBallotExclusiveBitCount(uvec4 value)
{
__target_switch
{
@@ -6155,9 +6463,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public uint subgroupBallotFindLSB(uvec4 value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(glsl_spirv, subgroup_ballot)]
+public uint subgroupBallotFindLSB(uvec4 value)
{
__target_switch
{
@@ -6171,9 +6481,11 @@ __spirv_version(1.3) [require(spirv)]
}
}
-__glsl_extension(GL_KHR_shader_subgroup_ballot) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public uint subgroupBallotFindMSB(uvec4 value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_ballot)
+[ForceInline]
+[require(glsl_spirv, subgroup_ballot)]
+public uint subgroupBallotFindMSB(uvec4 value)
{
__target_switch
{
@@ -6190,17 +6502,20 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_shuffle
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupShuffle(T value, uint index)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_shuffle)]
+public T subgroupShuffle(T value, uint index)
{
shader_subgroup_preamble<T>();
return WaveShuffle(value, index);
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle)
+[require(glsl_spirv, subgroup_shuffle)]
[ForceInline] public T subgroupShuffleXor(T value, uint mask)
{
shader_subgroup_preamble<T>();
@@ -6217,18 +6532,22 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupShuffle(vector<T,N> value, uint index)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle)
+[ForceInline]
+[require(cuda_glsl_hlsl_spirv, subgroup_shuffle)]
+public vector<T,N> subgroupShuffle(vector<T,N> value, uint index)
{
shader_subgroup_preamble<T>();
return WaveShuffle(value, index);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupShuffleXor(vector<T,N> value, uint mask)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle)
+[ForceInline]
+[require(glsl_spirv, subgroup_shuffle)]
+public vector<T,N> subgroupShuffleXor(vector<T,N> value, uint mask)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6247,9 +6566,11 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_shuffle_relative
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupShuffleUp(T value, uint delta)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative)
+[ForceInline]
+[require(glsl_spirv, subgroup_shufflerelative)]
+public T subgroupShuffleUp(T value, uint delta)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6265,9 +6586,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupShuffleDown(T value, uint delta)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative)
+[ForceInline]
+[require(glsl_spirv, subgroup_shufflerelative)]
+public T subgroupShuffleDown(T value, uint delta)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6284,9 +6607,11 @@ __spirv_version(1.3) [require(spirv)]
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupShuffleUp(vector<T,N> value, uint delta)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative)
+[ForceInline]
+[require(glsl_spirv, subgroup_shufflerelative)]
+public vector<T,N> subgroupShuffleUp(vector<T,N> value, uint delta)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6302,9 +6627,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupShuffleDown(vector<T,N> value, uint delta)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_shuffle_relative)
+[ForceInline]
+[require(glsl_spirv, subgroup_shufflerelative)]
+public vector<T,N> subgroupShuffleDown(vector<T,N> value, uint delta)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6321,9 +6648,11 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_clustered
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredAdd(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredAdd(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6340,9 +6669,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredMul(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredMul(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6359,9 +6690,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredMin(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredMin(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6380,9 +6713,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredMax(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredMax(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6401,9 +6736,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredAnd(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredAnd(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6417,9 +6754,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredOr(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredOr(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6435,9 +6774,11 @@ __spirv_version(1.3) [require(spirv)]
__generic<T : __BuiltinLogicalType>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupClusteredXor(T value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public T subgroupClusteredXor(T value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6453,9 +6794,11 @@ __spirv_version(1.3) [require(spirv)]
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredAdd(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredAdd(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6473,9 +6816,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredMul(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredMul(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6492,9 +6837,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredMin(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredMin(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6513,9 +6860,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinArithmeticType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredMax(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredMax(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6534,9 +6883,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredAnd(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredAnd(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6550,9 +6901,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredOr(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredOr(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6566,9 +6919,11 @@ __spirv_version(1.3) [require(spirv)]
}
__generic<T : __BuiltinLogicalType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_clustered) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupClusteredXor(vector<T,N> value, uint clusterSize)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_clustered)
+[ForceInline]
+[require(glsl_spirv, subgroup_clustered)]
+public vector<T,N> subgroupClusteredXor(vector<T,N> value, uint clusterSize)
{
shader_subgroup_preamble<T>();
__target_switch
@@ -6584,36 +6939,44 @@ __spirv_version(1.3) [require(spirv)]
// GL_KHR_shader_subgroup_quad
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupQuadBroadcast(T value, uint id)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public T subgroupQuadBroadcast(T value, uint id)
{
shader_subgroup_preamble<T>();
return QuadReadLaneAt(value, id);
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupQuadSwapHorizontal(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public T subgroupQuadSwapHorizontal(T value)
{
shader_subgroup_preamble<T>();
return QuadReadAcrossX(value);
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupQuadSwapVertical(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public T subgroupQuadSwapVertical(T value)
{
shader_subgroup_preamble<T>();
return QuadReadAcrossY(value);
}
__generic<T : __BuiltinType>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public T subgroupQuadSwapDiagonal(T value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public T subgroupQuadSwapDiagonal(T value)
{
shader_subgroup_preamble<T>();
return QuadReadAcrossDiagonal(value);
@@ -6621,36 +6984,44 @@ __spirv_version(1.3) [require(spirv)]
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupQuadBroadcast(vector<T,N> value, uint id)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public vector<T,N> subgroupQuadBroadcast(vector<T,N> value, uint id)
{
shader_subgroup_preamble<T>();
return QuadReadLaneAt(value, id);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupQuadSwapHorizontal(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public vector<T,N> subgroupQuadSwapHorizontal(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return QuadReadAcrossX(value);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupQuadSwapVertical(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public vector<T,N> subgroupQuadSwapVertical(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return QuadReadAcrossY(value);
}
__generic<T : __BuiltinType, let N : int>
-__glsl_extension(GL_KHR_shader_subgroup_quad) [require(glsl)]
-__spirv_version(1.3) [require(spirv)]
-[ForceInline] public vector<T,N> subgroupQuadSwapDiagonal(vector<T,N> value)
+__spirv_version(1.3)
+__glsl_extension(GL_KHR_shader_subgroup_quad)
+[ForceInline]
+[require(glsl_hlsl_spirv, subgroup_quad)]
+public vector<T,N> subgroupQuadSwapDiagonal(vector<T,N> value)
{
shader_subgroup_preamble<T>();
return QuadReadAcrossDiagonal(value);
@@ -6671,7 +7042,9 @@ public struct atomic_uint
// types and operations to enable the according ext needed for these operations
__generic<T : __BuiltinType>
-[ForceInline] void typeRequireChecks_atomic_using_float0_tier()
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+void typeRequireChecks_atomic_using_float0_tier()
{
__target_switch
{
@@ -6685,7 +7058,9 @@ __generic<T : __BuiltinType>
}
}
__generic<T : __BuiltinType>
-[ForceInline] void typeRequireChecks_atomic_using_float1_tier()
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+void typeRequireChecks_atomic_using_float1_tier()
{
__target_switch
{
@@ -6708,7 +7083,9 @@ __generic<T : __BuiltinType>
}
}
__generic<T : __BuiltinType>
-[ForceInline] void typeRequireChecks_atomic_using_float2_tier()
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+void typeRequireChecks_atomic_using_float2_tier()
{
__target_switch
{
@@ -6732,6 +7109,7 @@ __generic<T : __BuiltinType>
}
__generic<T : __BuiltinType>
+[require(glsl_spirv, atomic_glsl)]
void typeRequireChecks_atomic_using_add()
{
__target_switch
@@ -6777,6 +7155,7 @@ void typeRequireChecks_atomic_using_add()
}
}
__generic<T : __BuiltinType>
+[require(glsl_spirv, atomic_glsl)]
void typeRequireChecks_atomic_using_MinMax()
{
__target_switch
@@ -6822,7 +7201,9 @@ void typeRequireChecks_atomic_using_MinMax()
}
}
__generic<T : __BuiltinType>
-[ForceInline] void typeRequireChecks_atomic_using_Logical_CAS()
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+void typeRequireChecks_atomic_using_Logical_CAS()
{
__target_switch
{
@@ -6877,9 +7258,11 @@ for (const auto& item : atomics)
{
}}}}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicAdd(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicAdd(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float1_tier<$(item.name)>();
typeRequireChecks_atomic_using_add<$(item.name)>();
@@ -6894,9 +7277,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicMin(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicMin(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float2_tier<$(item.name)>();
typeRequireChecks_atomic_using_MinMax<$(item.name)>();
@@ -6911,9 +7296,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicMax(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicMax(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float2_tier<$(item.name)>();
typeRequireChecks_atomic_using_MinMax<$(item.name)>();
@@ -6928,9 +7315,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicExchange(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicExchange(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float1_tier<$(item.name)>();
__target_switch
@@ -6949,9 +7338,11 @@ if(item.isFloat)
continue;
}}}}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicAnd(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicAnd(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float0_tier<$(item.name)>();
typeRequireChecks_atomic_using_Logical_CAS<$(item.name)>();
@@ -6969,9 +7360,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicOr(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicOr(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float0_tier<$(item.name)>();
typeRequireChecks_atomic_using_Logical_CAS<$(item.name)>();
@@ -6986,9 +7379,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicXor(inout $(item.name) mem, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicXor(inout $(item.name) mem, $(item.name) data)
{
typeRequireChecks_atomic_using_float0_tier<$(item.name)>();
typeRequireChecks_atomic_using_Logical_CAS<$(item.name)>();
@@ -7003,9 +7398,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public $(item.name) atomicCompSwap(inout $(item.name) mem, $(item.name) compare, $(item.name) data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public $(item.name) atomicCompSwap(inout $(item.name) mem, $(item.name) compare, $(item.name) data)
{
typeRequireChecks_atomic_using_float0_tier<$(item.name)>();
typeRequireChecks_atomic_using_Logical_CAS<$(item.name)>();
@@ -7027,9 +7424,11 @@ ${{{{
// all atomic_uint functions are mangled at compile time,
// all types are converted into a field address of a 'uint'
// relative to the layout(offset) of the atomic_uint
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterIncrement(atomic_uint c)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterIncrement(atomic_uint c)
{
__target_switch
@@ -7045,7 +7444,8 @@ __glsl_version(430) [require(glsl)]
}
}
-__glsl_version(430) [require(glsl)]
+__glsl_version(430)
+[require(glsl, atomic_glsl)]
[ForceInline] public uint atomicCounterDecrement_GLSL_helper(atomic_uint c)
{
__target_switch
@@ -7057,9 +7457,10 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounter(atomic_uint c)
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounter(atomic_uint c)
{
__target_switch
{
@@ -7077,9 +7478,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterDecrement(atomic_uint c)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterDecrement(atomic_uint c)
{
__target_switch
{
@@ -7101,9 +7504,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterAdd(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterAdd(atomic_uint c, uint data)
{
__target_switch
{
@@ -7118,9 +7523,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterSubtract(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterSubtract(atomic_uint c, uint data)
{
__target_switch
{
@@ -7138,9 +7545,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterMin(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterMin(atomic_uint c, uint data)
{
__target_switch
{
@@ -7155,9 +7564,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterMax(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterMax(atomic_uint c, uint data)
{
__target_switch
{
@@ -7172,9 +7583,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterAnd(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterAnd(atomic_uint c, uint data)
{
__target_switch
{
@@ -7189,9 +7602,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterOr(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterOr(atomic_uint c, uint data)
{
__target_switch
{
@@ -7206,9 +7621,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterXor(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterXor(atomic_uint c, uint data)
{
__target_switch
{
@@ -7223,9 +7640,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterExchange(atomic_uint c, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterExchange(atomic_uint c, uint data)
{
__target_switch
{
@@ -7240,9 +7659,11 @@ __glsl_version(430) [require(glsl)]
}
}
-__spirv_version(1.0)[require(spirv)]
-__glsl_version(430) [require(glsl)]
-[ForceInline] public uint atomicCounterCompSwap(atomic_uint c, uint compare, uint data)
+
+__glsl_version(430)
+[ForceInline]
+[require(glsl_spirv, atomic_glsl)]
+public uint atomicCounterCompSwap(atomic_uint c, uint compare, uint data)
{
__target_switch
{
@@ -7259,105 +7680,105 @@ __glsl_version(430) [require(glsl)]
/// Section 8.14. Fragment Processing Functions
-[require(any_gfx_target, fragmentprocessing)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing)]
public float dFdx(float p)
{
return ddx(p);
}
-[require(any_gfx_target, fragmentprocessing)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing)]
public vector<float, N> dFdx(vector<float, N> p)
{
return ddx(p);
}
-[require(any_gfx_target, fragmentprocessing)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing)]
public float dFdy(float p)
{
return ddy(p);
}
-[require(any_gfx_target, fragmentprocessing)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing)]
public vector<float, N> dFdy(vector<float, N> p)
{
return ddy(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public float dFdxFine(float p)
{
return ddx_fine(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public vector<float, N> dFdxFine(vector<float, N> p)
{
return ddx_fine(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public float dFdyFine(float p)
{
return ddy_fine(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public vector<float, N> dFdyFine(vector<float, N> p)
{
return ddy_fine(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public float dFdxCoarse(float p)
{
return ddx_coarse(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public vector<float, N> dFdxCoarse(vector<float, N> p)
{
return ddx_coarse(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public float dFdyCoarse(float p)
{
return ddy_coarse(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public vector<float, N> dFdyCoarse(vector<float, N> p)
{
return ddy_coarse(p);
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public float fwidthFine(float p)
{
__target_switch
@@ -7377,10 +7798,10 @@ public float fwidthFine(float p)
}
}
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public vector<float, N> fwidthFine(vector<float, N> p)
{
__target_switch
@@ -7401,9 +7822,9 @@ public vector<float, N> fwidthFine(vector<float, N> p)
}
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public float fwidthCoarse(float p)
{
__target_switch
@@ -7423,10 +7844,10 @@ public float fwidthCoarse(float p)
}
}
}
-[require(any_gfx_target, fragmentprocessing_derivativecontrol)]
__generic<let N : int>
[__NoSideEffect]
[ForceInline]
+[require(glsl_hlsl_spirv, fragmentprocessing_derivativecontrol)]
public vector<float, N> fwidthCoarse(vector<float, N> p)
{
__target_switch
@@ -7447,17 +7868,13 @@ public vector<float, N> fwidthCoarse(vector<float, N> p)
}
}
-[require(any_gfx_target, fragmentprocessing)]
[__NoSideEffect]
[__GLSLRequireShaderInputParameter(0)]
+[require(glsl_spirv, fragmentprocessing)]
public float interpolateAtCentroid(__ref float interpolant)
{
__target_switch
{
- case hlsl:
- {
- return EvaluateAttributeAtCentroid(interpolant);
- }
case glsl: __intrinsic_asm "interpolateAtCentroid($0)";
case spirv:
{
@@ -7469,18 +7886,14 @@ public float interpolateAtCentroid(__ref float interpolant)
}
}
}
-[require(any_gfx_target, fragmentprocessing)]
__generic<let N : int>
[__NoSideEffect]
[__GLSLRequireShaderInputParameter(0)]
+[require(glsl_spirv, fragmentprocessing)]
public vector<float, N> interpolateAtCentroid(__ref vector<float, N> interpolant)
{
__target_switch
{
- case hlsl:
- {
- return EvaluateAttributeAtCentroid(interpolant);
- }
case glsl: __intrinsic_asm "interpolateAtCentroid($0)";
case spirv:
{
@@ -7493,17 +7906,13 @@ public vector<float, N> interpolateAtCentroid(__ref vector<float, N> interpolant
}
}
-[require(any_gfx_target, fragmentprocessing)]
[__NoSideEffect]
[__GLSLRequireShaderInputParameter(0)]
+[require(glsl_spirv, fragmentprocessing)]
public float interpolateAtSample(__ref float interpolant, int sample)
{
__target_switch
{
- case hlsl:
- {
- return EvaluateAttributeAtSample(interpolant, sample);
- }
case glsl: __intrinsic_asm "interpolateAtSample($0,$1)";
case spirv:
{
@@ -7515,18 +7924,14 @@ public float interpolateAtSample(__ref float interpolant, int sample)
}
}
}
-[require(any_gfx_target, fragmentprocessing)]
__generic<let N : int>
[__NoSideEffect]
[__GLSLRequireShaderInputParameter(0)]
+[require(glsl_spirv, fragmentprocessing)]
public vector<float, N> interpolateAtSample(__ref vector<float, N> interpolant, int sample)
{
__target_switch
{
- case hlsl:
- {
- return EvaluateAttributeAtSample(interpolant, sample);
- }
case glsl: __intrinsic_asm "interpolateAtSample($0,$1)";
case spirv:
{
@@ -7539,9 +7944,9 @@ public vector<float, N> interpolateAtSample(__ref vector<float, N> interpolant,
}
}
-[require(glsl_spirv, fragmentprocessing)]
[__NoSideEffect]
[__GLSLRequireShaderInputParameter(0)]
+[require(glsl_spirv, fragmentprocessing)]
public float interpolateAtOffset(__ref float interpolant, vec2 offset)
{
__target_switch
@@ -7557,10 +7962,10 @@ public float interpolateAtOffset(__ref float interpolant, vec2 offset)
}
}
}
-[require(glsl_spirv, fragmentprocessing)]
__generic<let N : int>
[__NoSideEffect]
[__GLSLRequireShaderInputParameter(0)]
+[require(glsl_spirv, fragmentprocessing)]
public vector<float, N> interpolateAtOffset(__ref vector<float, N> interpolant, vec2 offset)
{
__target_switch
@@ -7650,8 +8055,8 @@ public vec4 noise4(vector<float, N> x)
// control flow.
// TODO: if called after a return, error.
-[require(any_gfx_target, compute_tess_gfx)]
[ForceInline]
+[require(glsl_hlsl_spirv, shader_stages_compute_tesscontrol_tesseval)]
public void barrier()
{
__target_switch
@@ -7673,8 +8078,8 @@ public void barrier()
/// Section 8.17. Shader Memory Control Functions
-[require(shadermemorycontrol)]
[ForceInline]
+[require(glsl_hlsl_spirv, shadermemorycontrol)]
public void memoryBarrier()
{
__target_switch
@@ -7699,8 +8104,8 @@ public void memoryBarrier()
// glslang will compile with `AtomicCounterMemory` since it does not use
// the `AtomicStorage` OpCapability which is required for `AtomicCounterMemory`.
// this is invalid/undefined spir-v for vulkan targets and should not be followed
-[require(any_gfx_target, shadermemorycontrol_compute)]
[ForceInline]
+[require(glsl_hlsl_spirv, shadermemorycontrol_compute)]
public void memoryBarrierAtomicCounter()
{
__target_switch
@@ -7717,8 +8122,8 @@ public void memoryBarrierAtomicCounter()
}
}
}
-[require(shadermemorycontrol)]
[ForceInline]
+[require(glsl_hlsl_spirv, shadermemorycontrol)]
public void memoryBarrierBuffer()
{
__target_switch
@@ -7736,8 +8141,8 @@ public void memoryBarrierBuffer()
}
}
-[require(any_gfx_target, shadermemorycontrol_compute)]
[ForceInline]
+[require(glsl_hlsl_spirv, shadermemorycontrol_compute)]
public void memoryBarrierShared()
{
__target_switch
@@ -7754,8 +8159,8 @@ public void memoryBarrierShared()
}
}
}
-[require(shadermemorycontrol)]
[ForceInline]
+[require(glsl_hlsl_spirv, shadermemorycontrol)]
public void memoryBarrierImage()
{
__target_switch
@@ -7771,8 +8176,8 @@ public void memoryBarrierImage()
}
}
}
-[require(any_gfx_target, shadermemorycontrol_compute)]
[ForceInline]
+[require(glsl_hlsl_spirv, shadermemorycontrol_compute)]
public void groupMemoryBarrier()
{
__target_switch
@@ -7822,9 +8227,9 @@ ${{{{
}}}}
__generic<T>
- [require(glsl_spirv, subpass)]
[__NoSideEffect]
[ForceInline]
+ [require(glsl_hlsl_spirv, subpass)]
public T subpassLoad(__SubpassImpl<T,0> subpass)
{
__target_switch
@@ -7843,9 +8248,9 @@ ${{{{
}
}
__generic<T>
- [require(glsl_spirv, subpass)]
[__NoSideEffect]
[ForceInline]
+ [require(glsl_hlsl_spirv, subpass)]
public T subpassLoad(__SubpassImpl<T,1> subpass, int sample)
{
__target_switch
@@ -7871,27 +8276,27 @@ ${{{{
// alternatives
__glsl_version(460)
__spirv_version(1.3)
-[require(shaderinvocationgroup)]
[NonUniformReturn]
[ForceInline]
+[require(glsl_hlsl_spirv, shaderinvocationgroup)]
public bool anyInvocation(bool value)
{
return WaveActiveAnyTrue(value);
}
__glsl_version(460)
__spirv_version(1.3)
-[require(shaderinvocationgroup)]
[NonUniformReturn]
[ForceInline]
+[require(glsl_hlsl_spirv, shaderinvocationgroup)]
public bool allInvocations(bool value)
{
return WaveActiveAllTrue(value);
}
__glsl_version(460)
__spirv_version(1.3)
-[require(shaderinvocationgroup)]
[NonUniformReturn]
[ForceInline]
+[require(glsl_hlsl_spirv, shaderinvocationgroup)]
public bool allInvocationsEqual(bool value)
{
return WaveActiveAllEqual(value);