Bug 29116

Summary: [wine] Offscreen rendering with FBO results in GL_FRAMEBUFFER_UNSUPPORTED
Product: Mesa Reporter: Sven Arvidsson <sa>
Component: Drivers/DRI/r300Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Civ4 screenshot with fbo for offscreen rendering
change debug level for framebuffer validation code
RADEON_DEBUG=tex log
glxinfo output

Description Sven Arvidsson 2010-07-16 12:41:41 UTC
Created attachment 37131 [details]
Civ4 screenshot with fbo for offscreen rendering

Wine uses framebuffer objects to handle offscreen rendering by default, this isn't working so well:

err:d3d:IWineD3DDeviceImpl_ClearSurface >>>>>>>>>>>>>>>>> GL_INVALID_FRAMEBUFFER_OPERATION (0x506) from glClear @ device.c / 4563
fixme:d3d:context_check_fbo_status FBO status GL_FRAMEBUFFER_UNSUPPORTED (0x8cdd)
fixme:d3d:context_check_fbo_status 	Color attachment 0: (0x1c6c84e0) WINED3DFMT_B8G8R8A8_UNORM 512x512
fixme:d3d:context_check_fbo_status 	Depth attachment: (0x1c6c8648) WINED3DFMT_D24_UNORM_S8_UINT 512x512
err:d3d_draw:drawStridedFast >>>>>>>>>>>>>>>>> GL_INVALID_FRAMEBUFFER_OPERATION (0x506) from glDrawElements @ drawprim.c / 46
fixme:d3d:context_check_fbo_status FBO status GL_FRAMEBUFFER_UNSUPPORTED (0x8cdd)
fixme:d3d:context_check_fbo_status 	Color attachment 0: (0x1c6c84e0) WINED3DFMT_B8G8R8A8_UNORM 512x512
fixme:d3d:context_check_fbo_status 	Depth attachment: (0x1c6c8648) WINED3DFMT_D24_UNORM_S8_UINT 512x512

For example, in Civilization IV it results in character portraits rendering garbage (see attached screenshot).

For some games and apps, this can be worked around by using "backbuffer" instead, as documented in http://wiki.winehq.org/UsefulRegistryKeys but it isn't working everywhere, and I wouldn't be surprised if this option was removed in the future.

This might be a more general problem with Mesa instead of something specific to radeon.

System environment:
-- system architecture: 32-bit
-- Linux distribution: Debian unstable
-- GPU: RV570
-- Model: Asus EAX1950Pro 256MB
-- Display connector: DVI
-- xf86-video-ati: 6.13.1
-- xserver: 1.8.99.904 (1.9.0 RC 4)
-- mesa: 80e07c41907cc0ac43d68aeb3abf9de8435e70fd
-- drm: 6ea2bda5f5ec8f27359760ce580fdad3df0464df
-- kernel: 2.6.35-rc5
Comment 1 Maciej Cencora 2010-07-16 13:47:11 UTC
Please apply attached patch on mesa and provide me with full output when game is started with RADEON_DEBUG=tex env variable.

Please attach glxinfo output too.
Comment 2 Maciej Cencora 2010-07-16 13:48:27 UTC
Created attachment 37133 [details] [review]
change debug level for framebuffer validation code
Comment 3 Sven Arvidsson 2010-07-16 14:12:29 UTC
Created attachment 37137 [details]
RADEON_DEBUG=tex log
Comment 4 Sven Arvidsson 2010-07-16 14:12:57 UTC
Created attachment 37138 [details]
glxinfo output
Comment 5 Maciej Cencora 2010-07-16 14:47:12 UTC
Oh, I see you're using r300g. Unfortunately I won't be able to help you since don't know r300g that much. Maybe Marek Olsak will do.
Comment 6 Sven Arvidsson 2010-07-16 14:55:29 UTC
(In reply to comment #5)
> Oh, I see you're using r300g. Unfortunately I won't be able to help you since
> don't know r300g that much. Maybe Marek Olsak will do.

Argh, I thought I mentioned r300g in my first message, sorry about that.

Interesting, it does seem to be working fine with r300c.
Comment 7 Marek Olšák 2010-07-17 01:25:02 UTC
A fix is on the way.
Comment 8 Marek Olšák 2010-07-18 06:47:48 UTC
Could you test this patch?

http://lists.freedesktop.org/archives/mesa-dev/attachments/20100717/387c70ae/attachment.patch
Comment 9 Sven Arvidsson 2010-07-18 07:05:07 UTC
(In reply to comment #8)
> Could you test this patch?
> 
> http://lists.freedesktop.org/archives/mesa-dev/attachments/20100717/387c70ae/attachment.patch

Yes, tried it when you first posted it on mesa-dev, it's working fine here! :)
Comment 10 Marek Olšák 2010-07-19 08:35:18 UTC
Committed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.