|
|
@@ -1864,6 +1864,22 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
|
|
|
"\n");
|
|
|
}
|
|
|
+ if (profile != EEsProfile && version == 450) {
|
|
|
+ commonBuiltins.append(
|
|
|
+ "uint atomicCounterAddARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterSubtractARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterMinARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterMaxARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterAndARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterOrARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterXorARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterExchangeARB(atomic_uint, uint);"
|
|
|
+ "uint atomicCounterCompSwapARB(atomic_uint, uint, uint);"
|
|
|
+
|
|
|
+ "\n");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
if (profile != EEsProfile && version >= 460) {
|
|
|
commonBuiltins.append(
|
|
|
"uint atomicCounterAdd(atomic_uint, uint);"
|
|
|
@@ -4661,7 +4677,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
"\n");
|
|
|
}
|
|
|
|
|
|
- // Builtins for GL_NV_ray_tracing/GL_EXT_ray_tracing/GL_EXT_ray_query
|
|
|
+ // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query
|
|
|
if (profile != EEsProfile && version >= 460) {
|
|
|
commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);"
|
|
|
"void rayQueryTerminateEXT(rayQueryEXT);"
|
|
|
@@ -4690,6 +4706,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
|
|
|
stageBuiltins[EShLangRayGen].append(
|
|
|
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
|
|
+ "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);"
|
|
|
"void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
|
|
"void executeCallableNV(uint, int);"
|
|
|
"void executeCallableEXT(uint, int);"
|
|
|
@@ -4704,12 +4721,14 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
"\n");
|
|
|
stageBuiltins[EShLangClosestHit].append(
|
|
|
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
|
|
+ "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);"
|
|
|
"void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
|
|
"void executeCallableNV(uint, int);"
|
|
|
"void executeCallableEXT(uint, int);"
|
|
|
"\n");
|
|
|
stageBuiltins[EShLangMiss].append(
|
|
|
"void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
|
|
+ "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);"
|
|
|
"void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
|
|
|
"void executeCallableNV(uint, int);"
|
|
|
"void executeCallableEXT(uint, int);"
|
|
|
@@ -5918,6 +5937,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
"in mat3x4 gl_WorldToObject3x4EXT;"
|
|
|
"in uint gl_IncomingRayFlagsNV;"
|
|
|
"in uint gl_IncomingRayFlagsEXT;"
|
|
|
+ "in float gl_CurrentRayTimeNV;"
|
|
|
"\n";
|
|
|
const char *hitDecls =
|
|
|
"in uvec3 gl_LaunchIDNV;"
|
|
|
@@ -5953,6 +5973,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
"in mat3x4 gl_WorldToObject3x4EXT;"
|
|
|
"in uint gl_IncomingRayFlagsNV;"
|
|
|
"in uint gl_IncomingRayFlagsEXT;"
|
|
|
+ "in float gl_CurrentRayTimeNV;"
|
|
|
"\n";
|
|
|
const char *missDecls =
|
|
|
"in uvec3 gl_LaunchIDNV;"
|
|
|
@@ -5971,6 +5992,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|
|
"in float gl_RayTmaxEXT;"
|
|
|
"in uint gl_IncomingRayFlagsNV;"
|
|
|
"in uint gl_IncomingRayFlagsEXT;"
|
|
|
+ "in float gl_CurrentRayTimeNV;"
|
|
|
"\n";
|
|
|
|
|
|
const char *callableDecls =
|
|
|
@@ -8261,6 +8283,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|
|
symbolTable.setFunctionExtensions("atomicCounter" , 1, &E_GL_ARB_shader_atomic_counters);
|
|
|
}
|
|
|
|
|
|
+ // E_GL_ARB_shader_atomic_counter_ops
|
|
|
+ if (profile != EEsProfile && version == 450) {
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterAddARB" , 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterSubtractARB", 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterMinARB" , 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterMaxARB" , 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterAndARB" , 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterOrARB" , 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterXorARB" , 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterExchangeARB", 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ symbolTable.setFunctionExtensions("atomicCounterCompSwapARB", 1, &E_GL_ARB_shader_atomic_counter_ops);
|
|
|
+ }
|
|
|
+
|
|
|
// E_GL_ARB_derivative_control
|
|
|
if (profile != EEsProfile && version < 450) {
|
|
|
symbolTable.setFunctionExtensions("dFdxFine", 1, &E_GL_ARB_derivative_control);
|
|
|
@@ -8789,11 +8824,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|
|
symbolTable.setVariableExtensions("gl_WorldToObject3x4EXT", 1, &E_GL_EXT_ray_tracing);
|
|
|
symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing);
|
|
|
symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing);
|
|
|
+ symbolTable.setVariableExtensions("gl_CurrentRayTimeNV", 1, &E_GL_NV_ray_tracing_motion_blur);
|
|
|
|
|
|
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
|
|
|
|
|
|
|
|
|
symbolTable.setFunctionExtensions("traceNV", 1, &E_GL_NV_ray_tracing);
|
|
|
+ symbolTable.setFunctionExtensions("traceRayMotionNV", 1, &E_GL_NV_ray_tracing_motion_blur);
|
|
|
symbolTable.setFunctionExtensions("traceRayEXT", 1, &E_GL_EXT_ray_tracing);
|
|
|
symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing);
|
|
|
symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
|
|
|
@@ -8837,6 +8874,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|
|
BuiltInVariable("gl_IncomingRayFlagsNV", EbvIncomingRayFlags, symbolTable);
|
|
|
BuiltInVariable("gl_IncomingRayFlagsEXT", EbvIncomingRayFlags, symbolTable);
|
|
|
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
|
|
|
+ BuiltInVariable("gl_CurrentRayTimeNV", EbvCurrentRayTimeNV, symbolTable);
|
|
|
|
|
|
// GL_ARB_shader_ballot
|
|
|
symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot);
|
|
|
@@ -9261,6 +9299,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|
|
symbolTable.relateToOperator("clockRealtimeEXT", EOpReadClockDeviceKHR);
|
|
|
symbolTable.relateToOperator("clockRealtime2x32EXT", EOpReadClockDeviceKHR);
|
|
|
|
|
|
+ if (profile != EEsProfile && version == 450) {
|
|
|
+ symbolTable.relateToOperator("atomicCounterAddARB", EOpAtomicCounterAdd);
|
|
|
+ symbolTable.relateToOperator("atomicCounterSubtractARB", EOpAtomicCounterSubtract);
|
|
|
+ symbolTable.relateToOperator("atomicCounterMinARB", EOpAtomicCounterMin);
|
|
|
+ symbolTable.relateToOperator("atomicCounterMaxARB", EOpAtomicCounterMax);
|
|
|
+ symbolTable.relateToOperator("atomicCounterAndARB", EOpAtomicCounterAnd);
|
|
|
+ symbolTable.relateToOperator("atomicCounterOrARB", EOpAtomicCounterOr);
|
|
|
+ symbolTable.relateToOperator("atomicCounterXorARB", EOpAtomicCounterXor);
|
|
|
+ symbolTable.relateToOperator("atomicCounterExchangeARB", EOpAtomicCounterExchange);
|
|
|
+ symbolTable.relateToOperator("atomicCounterCompSwapARB", EOpAtomicCounterCompSwap);
|
|
|
+ }
|
|
|
+
|
|
|
if (profile != EEsProfile && version >= 460) {
|
|
|
symbolTable.relateToOperator("atomicCounterAdd", EOpAtomicCounterAdd);
|
|
|
symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicCounterSubtract);
|
|
|
@@ -9668,6 +9718,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|
|
case EShLangMiss:
|
|
|
if (profile != EEsProfile && version >= 460) {
|
|
|
symbolTable.relateToOperator("traceNV", EOpTraceNV);
|
|
|
+ symbolTable.relateToOperator("traceRayMotionNV", EOpTraceRayMotionNV);
|
|
|
symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR);
|
|
|
symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
|
|
|
symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR);
|