-[EAGLContext renderbufferStorage:fromDrawable:] Failing the second time on?

Another possible reason is that the size of your layer is too large. In addition make sure you are using a new framebuffer and renderbuffer each time. And you have destroyed your old ones before creating new ones.

You can delete them like this

if let displayFramebuffer = self.displayFramebuffer {
    var temporaryFramebuffer = displayFramebuffer
    glDeleteFramebuffers(1, &temporaryFramebuffer)
    self.displayFramebuffer = nil
}

if let displayRenderbuffer = self.displayRenderbuffer {
    var temporaryRenderbuffer = displayRenderbuffer
    glDeleteRenderbuffers(1, &temporaryRenderbuffer)
    self.displayRenderbuffer = nil
}