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 <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
This commit is contained in:
Shahbaz Youssefi
2023-09-18 11:59:22 -04:00
committed by Angle LUCI CQ
parent 1b450b92c5
commit 602cc1f1c7

View File

@@ -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<unsigned int> StripVaryingArrayDimension(const sh::ShaderVariable *frontVarying,