Zebediah Figura (@zfigura) commented about dlls/wined3d/context_gl.c:
+ { + if (location != WINED3D_LOCATION_DRAWABLE) + { + if (format->depth_size || format->stencil_size) + wined3d_context_gl_apply_fbo_state_blit(context_gl, target, NULL, + 0, &texture->resource, sub_resource_idx, location); + else + wined3d_context_gl_apply_fbo_state_blit(context_gl, target, &texture->resource, + sub_resource_idx, NULL, 0, location); + } + else + { + context_gl->current_fbo = NULL; + wined3d_context_gl_bind_fbo(context_gl, target, 0); + } + wined3d_context_gl_check_fbo_status(context_gl, target); This commit moves the FBO status check before the glDrawBuffer() call. I'm not quite sure but reading through the definition of framebuffer completeness, I think it *does* indeed depend on the draw buffers?
And since this function already does at least one thing not directly related to FBOs, should we move the glDrawBuffer calls here too? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/3211#note_37702