https://bugs.freedesktop.org/show_bug.cgi?id=29762
Summary: [r300g] Coldest: Buffer too small for color buffer 0 (need 3407872 have 2023424) ! Product: Mesa Version: git Platform: Other URL: http://www.coldestgame.com/site/ OS/Version: All Status: NEW Severity: normal Priority: medium Component: Drivers/DRI/r300 AssignedTo: dri-devel@lists.freedesktop.org ReportedBy: sa@whiz.se
Hi,
The game "Coldest" isn't rendering properly when run with r300g, quite a lot of objects seems to be missing. This error is logged: "The kernel rejected CS, see dmesg for more information." and dmesg reveals:
[ 60.158478] [drm:r100_cs_track_check] *ERROR* [drm] Buffer too small for color buffer 0 (need 3407872 have 2023424) ! [ 60.158482] [drm:r100_cs_track_check] *ERROR* [drm] color buffer 0 (832 4 0 1024) [ 60.158483] [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !
Coldest is FLOSS, so source is available if that's helpful to figure this out.
System environment: -- system architecture: 32-bit -- Linux distribution: Debian unstable -- GPU: RV570 -- Model: Asus EAX1950Pro 256MB -- Display connector: DVI -- xf86-video-ati: fd686668289258ffaf6b81057545e50612aac6a8 -- xserver: 1.8.99.904 (1.9.0 RC 5) -- mesa: 4b2b5f8e30347ce0a1818524f8825335d47eb5ca -- drm: b61e81a191d3a5c269c5f7c40199aebc9ebc034c -- kernel: 2.6.35
https://bugs.freedesktop.org/show_bug.cgi?id=29762
--- Comment #1 from Sven Arvidsson sa@whiz.se 2010-08-25 14:25:03 PDT --- Looks like Coldest also needs loop unrolling(?), if that's so it could explain the missing objects.
r300 FP: Compiler Error: Fragment program does not support relative addressing of source operands.
https://bugs.freedesktop.org/show_bug.cgi?id=29762
--- Comment #2 from Marek Olšák maraeo@gmail.com 2010-08-25 18:35:47 PDT --- The compiler error is valid. Relative addressing (array indexing) is not implemented for fragment shaders.
The hardware only suppports relative addressing using the loop counter and only on r500. The loop counter register type has been removed in Gallium so it cannot be implemented directly. Some non-trivial work is needed in the compiler.
https://bugs.freedesktop.org/show_bug.cgi?id=29762
--- Comment #3 from Andrew Randrianasulu randrik@mail.ru 2010-08-25 19:27:22 PDT --- (In reply to comment #2)
The compiler error is valid. Relative addressing (array indexing) is not implemented for fragment shaders.
The hardware only suppports relative addressing using the loop counter and only on r500. The loop counter register type has been removed in Gallium so it cannot be implemented directly. Some non-trivial work is needed in the compiler.
May be it will be not too bad idea to restore this register type support in Gallium first? Anyone remember why it was removed?
https://bugs.freedesktop.org/show_bug.cgi?id=29762
--- Comment #4 from Marek Olšák maraeo@gmail.com 2010-08-25 23:19:49 PDT --- (In reply to comment #3)
May be it will be not too bad idea to restore this register type support in Gallium first? Anyone remember why it was removed?
I guess no one was using it, so I would not call it "support". Either way, we have to start from scratch. Tom Stellard might know how hard it would be to implement relative addressing in fragment shaders.
https://bugs.freedesktop.org/show_bug.cgi?id=29762
Matt Turner mattst88@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|Drivers/DRI/r300 |Drivers/Gallium/r300
https://bugs.freedesktop.org/show_bug.cgi?id=29762
Marek Olšák maraeo@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #5 from Marek Olšák maraeo@gmail.com 2010-09-11 21:16:39 PDT --- The DRM errors are fixed by this kernel patch, which will hopefully end up in 2.6.36:
http://lists.freedesktop.org/archives/dri-devel/2010-September/003830.html
For loop unrolling issues, see other bugs, e.g. bug 30007.
dri-devel@lists.freedesktop.org