diff options
| author | James Helferty (NVIDIA) <jhelferty@nvidia.com> | 2025-08-13 13:45:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-13 20:45:44 +0000 |
| commit | 90a9515fcbc7e362c05341c2ca65fbe78bc1106a (patch) | |
| tree | d23660b611a869e4fb5b6e1e49a6165893aca6d4 /source/slang | |
| parent | 80b46bd2124b3ead963ae977fef3d010049beb9a (diff) | |
Handle SV_Barycentrics on metal (#8163)
Fixes #6785
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-capabilities.capdef | 2 | ||||
| -rw-r--r-- | source/slang/slang-ir-legalize-varying-params.cpp | 8 | ||||
| -rw-r--r-- | source/slang/slang-ir-legalize-varying-params.h | 1 |
3 files changed, 10 insertions, 1 deletions
diff --git a/source/slang/slang-capabilities.capdef b/source/slang/slang-capabilities.capdef index 95f1335da..afad1b984 100644 --- a/source/slang/slang-capabilities.capdef +++ b/source/slang/slang-capabilities.capdef @@ -1181,7 +1181,7 @@ alias atomicfloat = GL_EXT_shader_atomic_float | _sm_6_0 + hlsl_nvapi | cpp | cu alias atomicfloat2 = GL_EXT_shader_atomic_float2 | _sm_6_6 + hlsl_nvapi | cpp | cuda; /// Capabilities needed to use fragment-shader-barycentric's /// [Compound] -alias fragmentshaderbarycentric = GL_EXT_fragment_shader_barycentric | _sm_6_1; +alias fragmentshaderbarycentric = GL_EXT_fragment_shader_barycentric | _sm_6_1 | metal; /// (gfx targets) Capabilities needed to use memory barriers /// [Compound] alias shadermemorycontrol = glsl | _spirv_1_0 | _sm_5_0; diff --git a/source/slang/slang-ir-legalize-varying-params.cpp b/source/slang/slang-ir-legalize-varying-params.cpp index bd1648513..621c7a55e 100644 --- a/source/slang/slang-ir-legalize-varying-params.cpp +++ b/source/slang/slang-ir-legalize-varying-params.cpp @@ -3328,6 +3328,14 @@ protected: result.permittedTypes.add(builder.getUIntType()); break; } + case SystemValueSemanticName::Barycentrics: + { + result.systemValueName = toSlice("barycentric_coord"); + result.permittedTypes.add(builder.getVectorType( + builder.getBasicType(BaseType::Float), + builder.getIntValue(builder.getIntType(), 3))); + break; + } default: m_sink->diagnose( parentVar, diff --git a/source/slang/slang-ir-legalize-varying-params.h b/source/slang/slang-ir-legalize-varying-params.h index fcb4b8b81..4f23b1e6d 100644 --- a/source/slang/slang-ir-legalize-varying-params.h +++ b/source/slang/slang-ir-legalize-varying-params.h @@ -75,6 +75,7 @@ void depointerizeInputParams(IRFunc* entryPoint); M(QuadLaneIndex, SV_QuadLaneIndex) \ M(VulkanVertexID, SV_VulkanVertexID) \ M(VulkanInstanceID, SV_VulkanInstanceID) \ + M(Barycentrics, SV_Barycentrics) \ /* end */ /// A known system-value semantic name that can be applied to a parameter |
