Commit 163fa521 by Qiankun Miao Committed by Commit Bot

Workaround interpolation qualifier mismatching

Centroid implies smooth when doing translation. But the Intel Mesa driver considers centroid and smooth are different interpolation qualifiers which makes shaders fail compilation. This patch adds smooth at the front of centroid at translation step. And it makes linkage.varying.rules.differing_interpolation_2 test in WebGL 2.0 dEQP test pass. BUG=621031 TEST=WebGL 2.0 deqp/data/gles3/shaders/linkage.html Change-Id: I8f0944846b5244b21c526ae95a7ce37c1504efb7 Reviewed-on: https://chromium-review.googlesource.com/360638Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Zhenyao Mo <zmo@chromium.org>
parent 3f6a398c
...@@ -427,11 +427,11 @@ inline const char* getQualifierString(TQualifier q) ...@@ -427,11 +427,11 @@ inline const char* getQualifierString(TQualifier q)
case EvqLastFragColor: return "LastFragColor"; case EvqLastFragColor: return "LastFragColor";
case EvqLastFragData: return "LastFragData"; case EvqLastFragData: return "LastFragData";
case EvqSmoothOut: return "smooth out"; case EvqSmoothOut: return "smooth out";
case EvqCentroidOut: return "centroid out"; case EvqCentroidOut: return "smooth centroid out";
case EvqFlatOut: return "flat out"; case EvqFlatOut: return "flat out";
case EvqSmoothIn: return "smooth in"; case EvqSmoothIn: return "smooth in";
case EvqFlatIn: return "flat in"; case EvqFlatIn: return "flat in";
case EvqCentroidIn: return "centroid in"; case EvqCentroidIn: return "smooth centroid in";
default: UNREACHABLE(); return "unknown qualifier"; default: UNREACHABLE(); return "unknown qualifier";
} }
// clang-format on // clang-format on
...@@ -465,10 +465,10 @@ inline const char* getInterpolationString(TQualifier q) ...@@ -465,10 +465,10 @@ inline const char* getInterpolationString(TQualifier q)
switch(q) switch(q)
{ {
case EvqSmoothOut: return "smooth"; break; case EvqSmoothOut: return "smooth"; break;
case EvqCentroidOut: return "centroid"; break; case EvqCentroidOut: return "smooth centroid"; break;
case EvqFlatOut: return "flat"; break; case EvqFlatOut: return "flat"; break;
case EvqSmoothIn: return "smooth"; break; case EvqSmoothIn: return "smooth"; break;
case EvqCentroidIn: return "centroid"; break; case EvqCentroidIn: return "smooth centroid"; break;
case EvqFlatIn: return "flat"; break; case EvqFlatIn: return "flat"; break;
default: UNREACHABLE(); return "unknown interpolation"; default: UNREACHABLE(); return "unknown interpolation";
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment