Always scalarize mat and vec constructor arguments.

This workaround is always enabled in Chrome, do the same in ANGLE.

BUG=882580

Change-Id: I2c01f34a589b07bd0035d7408be884f7a51b1706
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666699
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
This commit is contained in:
Geoff Lang 2019-06-19 16:20:09 -04:00 коммит произвёл Commit Bot
Родитель 762f180aa3
Коммит bce4b9f857
3 изменённых файлов: 12 добавлений и 0 удалений

Просмотреть файл

@ -44,6 +44,11 @@ struct FrontendFeatures : angle::FeatureSetBase
"On Windows Intel OpenGL drivers TexImage sometimes seems to interact " "On Windows Intel OpenGL drivers TexImage sometimes seems to interact "
"with the Framebuffer", "with the Framebuffer",
&members}; &members};
angle::Feature scalarizeVecAndMatConstructorArgs = {
"scalarize_vec_and_mat_constructor_args", angle::FeatureCategory::FrontendWorkarounds,
"Always rewrite vec/mat constructors to be consistent", &members,
"http://crbug.com/398694"};
}; };
inline FrontendFeatures::FrontendFeatures() = default; inline FrontendFeatures::FrontendFeatures() = default;

Просмотреть файл

@ -1350,6 +1350,7 @@ void Display::initializeFrontendFeatures()
{ {
// Enable on all Impls // Enable on all Impls
mFrontendFeatures.loseContextOnOutOfMemory.enabled = true; mFrontendFeatures.loseContextOnOutOfMemory.enabled = true;
mFrontendFeatures.scalarizeVecAndMatConstructorArgs.enabled = true;
mImplementation->initializeFrontendFeatures(&mFrontendFeatures); mImplementation->initializeFrontendFeatures(&mFrontendFeatures);

Просмотреть файл

@ -22,6 +22,7 @@
#include "libANGLE/ResourceManager.h" #include "libANGLE/ResourceManager.h"
#include "libANGLE/renderer/GLImplFactory.h" #include "libANGLE/renderer/GLImplFactory.h"
#include "libANGLE/renderer/ShaderImpl.h" #include "libANGLE/renderer/ShaderImpl.h"
#include "platform/FrontendFeatures.h"
namespace gl namespace gl
{ {
@ -342,6 +343,11 @@ void Shader::compile(const Context *context)
options |= SH_VALIDATE_LOOP_INDEXING; options |= SH_VALIDATE_LOOP_INDEXING;
} }
if (context->getFrontendFeatures().scalarizeVecAndMatConstructorArgs.enabled)
{
options |= SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS;
}
mCurrentMaxComputeWorkGroupInvocations = context->getCaps().maxComputeWorkGroupInvocations; mCurrentMaxComputeWorkGroupInvocations = context->getCaps().maxComputeWorkGroupInvocations;
ASSERT(mBoundCompiler.get()); ASSERT(mBoundCompiler.get());