From 602cc1f1c78d8dafc67c18260744597e2a46ee65 Mon Sep 17 00:00:00 2001 From: Shahbaz Youssefi Date: Mon, 18 Sep 2023 11:59:22 -0400 Subject: [PATCH] Don't pack gl_TessLevelInner/Outer Per the GL spec: The built-in outputs gl_TessLevelOuter and gl_TessLevelInner are not counted against the per-patch limit. Bug: angleproject:3572 Change-Id: I9fb2255d730988e7bfd6b76f9b5fdab8c475c468 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4873400 Commit-Queue: Shahbaz Youssefi Reviewed-by: Yuxin Hu --- src/libANGLE/VaryingPacking.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libANGLE/VaryingPacking.cpp b/src/libANGLE/VaryingPacking.cpp index 7640e783b..f002f0043 100644 --- a/src/libANGLE/VaryingPacking.cpp +++ b/src/libANGLE/VaryingPacking.cpp @@ -148,8 +148,10 @@ GLint GetMaxShaderOutputVectors(const Caps &caps, ShaderType shaderStage) bool ShouldSkipPackedVarying(const sh::ShaderVariable &varying, PackMode packMode) { // Don't pack gl_Position. Also don't count gl_PointSize for D3D9. + // Additionally, gl_TessLevelInner and gl_TessLevelOuter should not be packed. return varying.name == "gl_Position" || - (varying.name == "gl_PointSize" && packMode == PackMode::ANGLE_NON_CONFORMANT_D3D9); + (varying.name == "gl_PointSize" && packMode == PackMode::ANGLE_NON_CONFORMANT_D3D9) || + varying.name == "gl_TessLevelInner" || varying.name == "gl_TessLevelOuter"; } std::vector StripVaryingArrayDimension(const sh::ShaderVariable *frontVarying,