// // Copyright 2019 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // TextureExternalUpdateTest.cpp: Tests for GL_ANGLE_texture_external_update #include "test_utils/ANGLETest.h" #include "test_utils/gl_raii.h" namespace angle { class TextureExternalUpdateTest : public ANGLETest<> {}; // Test basic usage of glInvalidateTextureANGLE TEST_P(TextureExternalUpdateTest, Invalidate) { ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_texture_external_update")); glInvalidateTextureANGLE(GL_TEXTURE_2D); EXPECT_GL_NO_ERROR(); glInvalidateTextureANGLE(GL_TEXTURE_EXTERNAL_OES); if (EnsureGLExtensionEnabled("GL_OES_EGL_image_external")) { EXPECT_GL_NO_ERROR(); } else { EXPECT_GL_ERROR(GL_INVALID_ENUM); } } // Test basic usage of glTexImage2DExternalANGLE TEST_P(TextureExternalUpdateTest, TexImage2DExternal) { ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_texture_external_update")); GLenum bindingPoint = GL_TEXTURE_2D; if (EnsureGLExtensionEnabled("GL_OES_EGL_image_external")) { // If external textures are available, try calling glTexImage2DExternalANGLE on them instead // because it would be disallowed for regular glTexImage2D calls. bindingPoint = GL_TEXTURE_EXTERNAL_OES; } GLTexture texture; glBindTexture(bindingPoint, texture); glTexImage2DExternalANGLE(bindingPoint, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE); EXPECT_GL_NO_ERROR(); // No data to verify because the texture has not actually been modified externally } // Test the native ID query TEST_P(TextureExternalUpdateTest, NativeID) { ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_texture_external_update")); GLTexture texture; glBindTexture(GL_TEXTURE_2D, texture); GLint nativeId = 0; glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_NATIVE_ID_ANGLE, &nativeId); EXPECT_GL_NO_ERROR(); EXPECT_NE(0, nativeId); } // Use this to select which configurations (e.g. which renderer, which GLES major version) these // tests should be run against. ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(TextureExternalUpdateTest); } // namespace angle