From 03bc4eb810f1531704d44c2d918a6031b1d73ba2 Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Mon, 20 Nov 2023 17:16:32 -0600 Subject: [PATCH] OpenGL2: Fix FB-MSAA on AMD Windows driver Fix r_ext_framebuffer_multisample > 0 causing the screen to always be solid black when using AMD Windows driver. The AMD Windows driver requires binding renderbuffer for it to be valid. The OpenGL2 renderer uses GL_EXT_direct_state_access that shouldn't require this. It would be required for Core/GL_ARB_direct_state_access. It seems like a driver bug. --- code/renderergl2/tr_fbo.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/renderergl2/tr_fbo.c b/code/renderergl2/tr_fbo.c index 26f50c3f..b0a9478f 100644 --- a/code/renderergl2/tr_fbo.c +++ b/code/renderergl2/tr_fbo.c @@ -170,9 +170,13 @@ void FBO_CreateBuffer(FBO_t *fbo, int format, int index, int multisample) } absent = *pRenderBuffer == 0; - if (absent) + if (absent) { qglGenRenderbuffers(1, pRenderBuffer); + // workaround AMD Windows driver requiring bind to create renderbuffer + GL_BindRenderbuffer(*pRenderBuffer); + } + if (multisample && glRefConfig.framebufferMultisample) qglNamedRenderbufferStorageMultisampleEXT(*pRenderBuffer, multisample, format, fbo->width, fbo->height); else