Add an extension to disable resource generation on bind.
BUG=angleproject:1518
Change-Id: I662f7b07da5c97831496f2617b0adadf9858bdc9
Reviewed-on: https://chromium-review.googlesource.com/386799
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index 6c3f04d..4d73304 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -50,6 +50,7 @@
mLineWidth(0),
mGenerateMipmapHint(GL_NONE),
mFragmentShaderDerivativeHint(GL_NONE),
+ mBindGeneratesResource(true),
mNearZ(0),
mFarZ(0),
mReadFramebuffer(nullptr),
@@ -71,7 +72,8 @@
void State::initialize(const Caps &caps,
const Extensions &extensions,
GLuint clientVersion,
- bool debug)
+ bool debug,
+ bool bindGeneratesResource)
{
mMaxDrawBuffers = caps.maxDrawBuffers;
mMaxCombinedTextureImageUnits = caps.maxCombinedTextureImageUnits;
@@ -137,6 +139,8 @@
mGenerateMipmapHint = GL_DONT_CARE;
mFragmentShaderDerivativeHint = GL_DONT_CARE;
+ mBindGeneratesResource = bindGeneratesResource;
+
mLineWidth = 1.0f;
mViewport.x = 0;
@@ -658,6 +662,8 @@
return mDebug.isOutputSynchronous();
case GL_DEBUG_OUTPUT:
return mDebug.isOutputEnabled();
+ case GL_BIND_GENERATES_RESOURCE_CHROMIUM:
+ return isBindGeneratesResourceEnabled();
default: UNREACHABLE(); return false;
}
}
@@ -688,6 +694,11 @@
// Ignore for now. It is valid for implementations to ignore hint.
}
+bool State::isBindGeneratesResourceEnabled() const
+{
+ return mBindGeneratesResource;
+}
+
void State::setViewportParams(GLint x, GLint y, GLsizei width, GLsizei height)
{
mViewport.x = x;
@@ -1486,6 +1497,9 @@
case GL_SAMPLE_ALPHA_TO_ONE_EXT:
*params = mSampleAlphaToOne;
break;
+ case GL_BIND_GENERATES_RESOURCE_CHROMIUM:
+ *params = isBindGeneratesResourceEnabled() ? GL_TRUE : GL_FALSE;
+ break;
default:
UNREACHABLE();
break;