Assert there are no unmatched eglBindTexImage/eglReleaseTexImage
Two consecutive eglBindTexImage calls on the same buffer (texture)
would eventually result in a crash if the texture is released before
the egl surfaces, so this assert is meant to perform an early
detection of a harder to detect future issue.
Bug chromium:932986 chromium:929088
Change-Id: I10b3892fe06d491c8a0a09dec84678b25f49c6ab
Reviewed-on: https://swiftshader-review.googlesource.com/c/25128
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/OpenGL/libGLES_CM/Texture.cpp b/src/OpenGL/libGLES_CM/Texture.cpp
index 4d8b75a..ec97ee2 100644
--- a/src/OpenGL/libGLES_CM/Texture.cpp
+++ b/src/OpenGL/libGLES_CM/Texture.cpp
@@ -450,6 +450,8 @@
image[0] = surface->getRenderTarget();
+ assert(!mSurface); // eglBindTexImage called before eglReleaseTexImage
+
mSurface = surface;
mSurface->setBoundTexture(this);
}
diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp
index d6742d9..0266158 100644
--- a/src/OpenGL/libGLESv2/Texture.cpp
+++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -561,6 +561,8 @@
image[0] = surface->getRenderTarget();
+ assert(!mSurface); // eglBindTexImage called before eglReleaseTexImage
+
mSurface = surface;
mSurface->setBoundTexture(this);
}