diff --git a/MobileGL/MG_Impl/GLImpl/Framebuffer/GL_Framebuffer.cpp b/MobileGL/MG_Impl/GLImpl/Framebuffer/GL_Framebuffer.cpp index 7b11b028..0ade8d32 100644 --- a/MobileGL/MG_Impl/GLImpl/Framebuffer/GL_Framebuffer.cpp +++ b/MobileGL/MG_Impl/GLImpl/Framebuffer/GL_Framebuffer.cpp @@ -616,7 +616,6 @@ namespace MobileGL::MG_Impl::GLImpl { } AttachFramebufferTextureWithUploadTarget(__func__, target, attachment, texture, level, textureUploadTarget); - AttachFramebufferTextureWithUploadTarget(__func__, target, attachment, texture, level, textureUploadTarget); } void NamedFramebufferTexture_State(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) { diff --git a/MobileGL/MG_Test/Framebuffer/FramebufferTest.cpp b/MobileGL/MG_Test/Framebuffer/FramebufferTest.cpp index 030302cc..4bc45990 100644 --- a/MobileGL/MG_Test/Framebuffer/FramebufferTest.cpp +++ b/MobileGL/MG_Test/Framebuffer/FramebufferTest.cpp @@ -150,6 +150,27 @@ TEST_F(FramebufferTest, NamedDepthFramebufferTextureStorageIsCompleteWithoutBind EXPECT_EQ(MG_Impl::GLImpl::GetError(), GL_NO_ERROR); } +TEST_F(FramebufferTest, FramebufferTextureBumpsAttachmentVersionOnlyOnce) { + GLuint framebuffer = 0; + GLuint texture = 0; + MG_Impl::GLImpl::CreateFramebuffers(1, &framebuffer); + MG_Impl::GLImpl::CreateTextures(GL_TEXTURE_2D, 1, &texture); + MG_Impl::GLImpl::TextureStorage2D(texture, 1, GL_RGBA8, 64, 32); + MG_Impl::GLImpl::BindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer); + + const auto framebufferObject = MG_State::pGLContext->GetFramebufferObject(framebuffer); + const auto beforeVersions = framebufferObject->GetAllFramebufferAttachmentVersions(); + const auto beforeObjectVersion = framebufferObject->GetObjectVersion(); + + MG_Impl::GLImpl::FramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, 0); + + const auto afterVersions = framebufferObject->GetAllFramebufferAttachmentVersions(); + EXPECT_EQ(afterVersions[static_cast(FramebufferAttachmentType::Color0)], + beforeVersions[static_cast(FramebufferAttachmentType::Color0)] + 1); + EXPECT_EQ(framebufferObject->GetObjectVersion(), beforeObjectVersion + 1); + EXPECT_EQ(MG_Impl::GLImpl::GetError(), GL_NO_ERROR); +} + TEST_F(FramebufferTest, ReadPixelsAllowsPersistentMappedPixelPackBuffer) { GLuint framebuffer = 0; GLuint texture = 0;