Path: blob/main_old/src/tests/gl_tests/BindGeneratesResourceTest.cpp
1693 views
//1// Copyright 2015 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//56// BindGeneratesResourceTest.cpp : Tests of the GL_CHROMIUM_bind_generates_resource extension.78#include "test_utils/ANGLETest.h"910namespace angle11{1213class BindGeneratesResourceTest : public ANGLETest14{15protected:16BindGeneratesResourceTest() { setBindGeneratesResource(false); }17};1819// Context creation would fail if EGL_CHROMIUM_create_context_bind_generates_resource was not20// available so the GL extension should always be present21TEST_P(BindGeneratesResourceTest, ExtensionStringExposed)22{23EXPECT_TRUE(IsGLExtensionEnabled("GL_CHROMIUM_bind_generates_resource"));24}2526// Verify that GL_BIND_GENERATES_RESOURCE_CHROMIUM can be queried but not changed27TEST_P(BindGeneratesResourceTest, QueryValidation)28{29GLint intValue = 2;30glGetIntegerv(GL_BIND_GENERATES_RESOURCE_CHROMIUM, &intValue);31EXPECT_GL_NO_ERROR();32EXPECT_GL_FALSE(intValue);3334float floatValue = 2.0f;35glGetFloatv(GL_BIND_GENERATES_RESOURCE_CHROMIUM, &floatValue);36EXPECT_GL_NO_ERROR();37EXPECT_EQ(floatValue, 0.0f);3839GLboolean boolValue = GL_TRUE;40glGetBooleanv(GL_BIND_GENERATES_RESOURCE_CHROMIUM, &boolValue);41EXPECT_GL_NO_ERROR();42EXPECT_GL_FALSE(boolValue);4344boolValue = glIsEnabled(GL_BIND_GENERATES_RESOURCE_CHROMIUM);45EXPECT_GL_NO_ERROR();46EXPECT_GL_FALSE(boolValue);4748glEnable(GL_BIND_GENERATES_RESOURCE_CHROMIUM);49EXPECT_GL_ERROR(GL_INVALID_ENUM);5051glDisable(GL_BIND_GENERATES_RESOURCE_CHROMIUM);52EXPECT_GL_ERROR(GL_INVALID_ENUM);53}5455// Test that buffers cannot be generated on bind56TEST_P(BindGeneratesResourceTest, Buffers)57{58glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 2);59EXPECT_GL_ERROR(GL_INVALID_OPERATION);6061glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);62EXPECT_GL_NO_ERROR();6364if (getClientMajorVersion() >= 3)65{66glBindBufferBase(GL_UNIFORM_BUFFER, 0, 3);67EXPECT_GL_ERROR(GL_INVALID_OPERATION);6869glBindBufferBase(GL_UNIFORM_BUFFER, 0, 0);70EXPECT_GL_NO_ERROR();7172glBindBufferRange(GL_UNIFORM_BUFFER, 0, 4, 1, 2);73EXPECT_GL_ERROR(GL_INVALID_OPERATION);7475glBindBufferRange(GL_UNIFORM_BUFFER, 0, 0, 1, 2);76EXPECT_GL_NO_ERROR();77}78}7980// Test that textures cannot be generated on bind81TEST_P(BindGeneratesResourceTest, Textures)82{83glBindTexture(GL_TEXTURE_2D, 2);84EXPECT_GL_ERROR(GL_INVALID_OPERATION);8586glBindTexture(GL_TEXTURE_2D, 0);87EXPECT_GL_NO_ERROR();88}8990// Test that framebuffers cannot be generated on bind91TEST_P(BindGeneratesResourceTest, Framebuffers)92{93glBindFramebuffer(GL_FRAMEBUFFER, 2);94EXPECT_GL_ERROR(GL_INVALID_OPERATION);9596glBindFramebuffer(GL_FRAMEBUFFER, 0);97EXPECT_GL_NO_ERROR();98}99100// Test that renderbuffer cannot be generated on bind101TEST_P(BindGeneratesResourceTest, Renderbuffers)102{103glBindRenderbuffer(GL_RENDERBUFFER, 2);104EXPECT_GL_ERROR(GL_INVALID_OPERATION);105106glBindRenderbuffer(GL_RENDERBUFFER, 0);107EXPECT_GL_NO_ERROR();108}109110// Use this to select which configurations (e.g. which renderer, which GLES major version) these111// tests should be run against.112ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(BindGeneratesResourceTest);113114} // namespace angle115116117