TEST_P(CopyTexImageTest, SubImageRGBToL) { // TODO (geofflang): Figure out why CopyTex[Sub]Image doesn't work with // RGB->L on older Intel chips if (isIntel() && getPlatformRenderer() == EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE) { std::cout << "Test skipped on Intel OpenGL." << std::endl; return; } GLfloat color0[] = { 0.25f, 1.0f, 0.75f, 0.5f, }; GLuint fbo0 = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color0); GLuint tex = createTextureFromCopyTexImage(fbo0, GL_LUMINANCE); GLfloat color1[] = { 0.5f, 0.25f, 1.0f, 0.75f, }; GLuint fbo1 = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color1); copyTextureWithCopyTexSubImage(fbo1, tex, 2, 4, 5, 6, 8, 8); GLubyte expected0[] = { 64, 64, 64, 255, }; verifyResults(tex, expected0, 0, 0); GLubyte expected1[] = { 127, 127, 127, 255, }; verifyResults(tex, expected1, 7, 7); }
TEST_P(CopyTexImageTest, RGBAToA) { GLfloat color[] = { 0.25f, 1.0f, 0.75f, 0.5f, }; GLuint fbo = createFramebuffer(GL_RGBA, GL_UNSIGNED_BYTE, color); GLuint tex = createTextureFromCopyTexImage(fbo, GL_ALPHA); GLubyte expected[] = { 0, 0, 0, 127, }; verifyResults(tex, expected, 0, 0); }
TEST_P(CopyTexImageTest, RGBToL) { GLfloat color[] = { 0.25f, 1.0f, 0.75f, 0.5f, }; GLuint fbo = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color); GLuint tex = createTextureFromCopyTexImage(fbo, GL_LUMINANCE); GLubyte expected[] = { 64, 64, 64, 255, }; verifyResults(tex, expected, 0, 0); }
// The test verifies that glCopyTexSubImage2D generates a GL_INVALID_OPERATION error // when the read buffer is GL_NONE. // Reference: GLES 3.0.4, Section 3.8.5 Alternate Texture Image Specification Commands TEST_P(CopyTexImageTestES3, ReadBufferIsNone) { GLfloat color[] = { 0.25f, 1.0f, 0.75f, 0.5f, }; GLuint fbo = createFramebuffer(GL_RGBA, GL_UNSIGNED_BYTE, color); GLuint tex = createTextureFromCopyTexImage(fbo, GL_RGBA); glBindFramebuffer(GL_FRAMEBUFFER, fbo); glBindTexture(GL_TEXTURE_2D, tex); glReadBuffer(GL_NONE); EXPECT_GL_NO_ERROR(); glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 4, 4); EXPECT_GL_ERROR(GL_INVALID_OPERATION); glDeleteFramebuffers(1, &fbo); glDeleteTextures(1, &tex); }
TEST_P(CopyTexImageTest, SubImageRGBToL) { GLfloat color0[] = { 0.25f, 1.0f, 0.75f, 0.5f, }; GLuint fbo0 = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color0); GLuint tex = createTextureFromCopyTexImage(fbo0, GL_LUMINANCE); GLfloat color1[] = { 0.5f, 0.25f, 1.0f, 0.75f, }; GLuint fbo1 = createFramebuffer(GL_RGB, GL_UNSIGNED_BYTE, color1); copyTextureWithCopyTexSubImage(fbo1, tex, 2, 4, 5, 6, 8, 8); GLubyte expected0[] = { 64, 64, 64, 255, }; verifyResults(tex, expected0, 0, 0); GLubyte expected1[] = { 127, 127, 127, 255, }; verifyResults(tex, expected1, 7, 7); }