Just a quick note to self really, glDrawBuffer and glReadBuffer are stored on a FBO by FBO basis.
I was getting a GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER error on a depth only FBO where i was delaying the call to gDrawBuffers(GL_NONE); until i actual did the drawing which was after my completeness check.
I only needed to call gDrawBuffers(GL_NONE); once on startup. This error wasn’t reported on my GTX 460, but showed up when testing my new AMD based laptop.
See FBO Completeness rules for details on FBO completeness.