Black screen in quake 3 when using multi sampling and AMD graphics card

Hi,
I’m trying to run Quake 3 on my Windows 10 setup with a AMD Radeon 6700XT.
But as soon as I enable AA in the cfg using r_ext_framebuffer_multisample “4” I get a black screen when running ioquake3.x86_64.exe.
I hear the sounds of intro video and menu but not even the intro video is shown.
Setting it back to r_ext_framebuffer_multisample “0” and the game works fine.

Anyone aware if this an AMD graphics card specific issue with the opengl2 renderer?
Any other way to enable AA or set something in driver options?

FYI
I found similar issue mentioned here incl. a fix:

The solution from the stackoverflow link was not exceeding the max supported MSAA samples, i.e. set r_ext_framebuffer_multisample to a lower value. Though that’s probably not the issue here (4x MSAA should be supported).

Open the in-game console using shift+escape and use ctrl+v to paste r_ext_framebuffer_multisample 4; vid_restart and press enter, and then while the screen is black open the console again and paste condump log.txt and press enter. This may provide an idea of what the issue is. (The file will be saved to %APPDATA%\Quake 3\baseq3\log.txt.)

1 Like

Thx for providing those steps.

I attached a snippet of the dump:

]/r_ext_framebuffer_multisample 4
r_ext_framebuffer_multisample will be changed upon restarting.
]/vid_restart
RE_Shutdown( 1 )
------- FBO_Shutdown -------
------- R_ShutdownVaos -------
------- GLSL_ShutdownGPUShaders -------
----- Initializing Renderer ----
Trying to load “renderer_opengl2_x86_64.dll” from "E:\Spiele\Quake
III\launcher"…
-------------------------------
----- R_Init -----
SDL using driver “windows”
Initializing OpenGL display
Display aspect: 1.778
…setting mode -1: 2560 1440
Trying to get an OpenGL 3.2 core context
SDL_GL_CreateContext succeeded.
Using 24 color bits, 24 depth, 8 stencil display.
Available modes: '1280x720 1600x900 1760x990 1920x1080 2560x1440 3072x1728
3200x1800 3840x2160 5120x2880 5760x3240 7680x4320 1128x634 1366x768 1440x900
1680x1050 1920x1200 2048x1280 720x480 640x480 800x600 1024x768 1600x1200
1280x1024’
GL_RENDERER: AMD Radeon RX 6700 XT
Initializing OpenGL extensions
…ignoring GL_EXT_texture_compression_s3tc
…ignoring GL_S3_s3tc
…using GL_EXT_texture_filter_anisotropic (max: 16)
…using GL_SGIS_texture_edge_clamp
…using GL_ARB_framebuffer_object
…using GL_ARB_vertex_array_object
…using GL_ARB_texture_float
…using GL_ARB_depth_clamp
…ignoring GL_ARB_seamless_cube_map
…using GLSL version 4.60
…GL_NVX_gpu_memory_info not found
…using GL_ATI_meminfo
…ignoring GL_ARB_texture_compression_rgtc
…ignoring GL_ARB_texture_compression_bptc
…using GL_EXT_direct_state_access
------- FBO_Init -------
R_CheckFBO: (_render) Framebuffer incomplete, missing attachment
------- GLSL_InitGPUShaders -------
loaded 156 GLSL shaders (48 gen 84 light 24 etc) in 0.34 seconds
------- R_InitVaos -------
Initializing Shaders

I modified the opengl2 renderer to try to log more debug information about the failed framebuffer attachment. You can move the existing renderer_opengl2 dll somewhere and then add the one from here [temporary download link removed] (it includes both 32- and 64-bit dll and source code patch of what I changed). After adding the new dll, you can repeat the steps from my previous post to get log.txt.

After running condump log.txt, while the screen is still black, paste r_test 1; vid_restart and press enter. This is a guess to try to fix it. If it’s still black, you could open the console and dump it to a separate log condump log2.txt.

2 Likes

Thx @zturtleman for all your help!

I followed your steps. Using the new dll still showed black screen with multisample.
But pasting r_test 1 and then vid_restart I finally got a rendered image incl. multisample AA :slight_smile:

So I only paste content from first log just BEFORE I pasted r_test 1.
The log is flooded with messages like
GL DEBUG: type: ERROR (0x824c), severity: HIGH (0x9146), message:
glDrawElements has generated an error (GL_INVALID_FRAMEBUFFER_OPERATION)

one of
GL DEBUG: type: ERROR (0x824c), severity: HIGH (0x9146), message: glClear has
generated an error (GL_INVALID_FRAMEBUFFER_OPERATION)

and a few of
GL DEBUG: type: ERROR (0x824c), severity: HIGH (0x9146), message:
glBlitFramebuffer has generated an error (GL_INVALID_FRAMEBUFFER_OPERATION)

I removed the debug messages and one part of the fix that I don’t think is needed. Can you test if this renderer_opengl2 dll [temporary download link removed] works before I commit the change? (no log or r_test needed)

1 Like

Sorry for the delay.
The provided dll works properly.

Thx a lot!

1 Like

Thanks for testing. This is now fixed in OpenGL2: Fix FB-MSAA on AMD Windows driver · ioquake/ioq3@03bc4eb · GitHub.

2 Likes

Also, r_ext_direct_state_access 0 should avoid this specific issue in older versions or other ioq3 based games.

1 Like