Bug 27043

Summary: [bisected DRI1] drmRadeonCmdBuffer: -22. Kernel failed to parse or rejected command stream. See dmesg for more info.
Product: Mesa Reporter: Fabio Pedretti <pedretti.fabio>
Component: Drivers/DRI/r300Assignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: medium CC: m.cencora
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: enable meta ops for draw/coopy pixels

Description Fabio Pedretti 2010-03-12 03:15:08 UTC
This commit:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=67108b5d12e0526ebedcdf2dbeeadfdbd0782161
make sauerbraten (at least on map douze) crash on UMS/DRI1 with:
drmRadeonCmdBuffer: -22. Kernel failed to parse or rejected command stream. See dmesg for more info.

Note: commit e5c691f445e1c02e6e2f75b817b13d7024f7a3a6 have to be reverted, however bug #26954 is hit.

Card:
GL_RENDERER   = Mesa DRI R300 (RV530 71C5) 20090101 x86/MMX/SSE2 TCL
Comment 1 Fabio Pedretti 2010-03-12 06:13:30 UTC
This is what dmesg shows:
[drm:r300_do_cp_cmdbuf] *ERROR* bad cmd_type 148 at e666f878
Comment 2 Alex Deucher 2010-03-12 08:23:29 UTC
should be fixed in d1ca1599f0319f5c99852ce24420aa592e806db0
Comment 3 Fabio Pedretti 2010-03-12 08:43:09 UTC
(In reply to comment #2)
> should be fixed in d1ca1599f0319f5c99852ce24420aa592e806db0
> 

It's fixed, but I noticed that it would work also with:

functions->CopyPixels = _mesa_meta_CopyPixels;
functions->DrawPixels = _mesa_meta_DrawPixels;
if (radeon->radeonScreen->kernel_mm) {
    functions->ReadPixels = radeonReadPixels;
}

Is this better than current?

if (radeon->radeonScreen->kernel_mm) {
    functions->CopyPixels = _mesa_meta_CopyPixels;
    functions->DrawPixels = _mesa_meta_DrawPixels;
    functions->ReadPixels = radeonReadPixels;
}
Comment 4 Alex Deucher 2010-03-12 10:53:26 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > should be fixed in d1ca1599f0319f5c99852ce24420aa592e806db0
> > 
> 
> It's fixed, but I noticed that it would work also with:
> 
> functions->CopyPixels = _mesa_meta_CopyPixels;
> functions->DrawPixels = _mesa_meta_DrawPixels;
> if (radeon->radeonScreen->kernel_mm) {
>     functions->ReadPixels = radeonReadPixels;
> }
> 
> Is this better than current?
> 
> if (radeon->radeonScreen->kernel_mm) {
>     functions->CopyPixels = _mesa_meta_CopyPixels;
>     functions->DrawPixels = _mesa_meta_DrawPixels;
>     functions->ReadPixels = radeonReadPixels;
> }
> 

Should be fine.  Care to create a patch?
Comment 5 Michel Dänzer 2010-03-12 10:58:05 UTC
(In reply to comment #3)
> functions->CopyPixels = _mesa_meta_CopyPixels;
> functions->DrawPixels = _mesa_meta_DrawPixels;
> if (radeon->radeonScreen->kernel_mm) {
>     functions->ReadPixels = radeonReadPixels;
> }

Did you actually test glReadPixels() with that?
Comment 6 Michel Dänzer 2010-03-12 11:02:17 UTC
(In reply to comment #5)
> Did you actually test glReadPixels() with that?

Err, I mean glCopyPixels and glDrawPixels.
Comment 7 Alex Deucher 2010-03-12 12:09:02 UTC
Created attachment 34007 [details] [review]
enable meta ops for draw/coopy pixels

Seems to work ok here.
Comment 8 Fabio Pedretti 2010-03-15 01:55:25 UTC
(In reply to comment #6)
> (In reply to comment #5)
> > Did you actually test glReadPixels() with that?
> 
> Err, I mean glCopyPixels and glDrawPixels.

I tested only the game, but shouldn't _mesa_meta_DrawPixels and _mesa_meta_CopyPixels be already the default BTW?
Comment 9 Alex Deucher 2010-03-15 08:08:46 UTC
(In reply to comment #8)
> > Err, I mean glCopyPixels and glDrawPixels.
> 
> I tested only the game, but shouldn't _mesa_meta_DrawPixels and
> _mesa_meta_CopyPixels be already the default BTW?
> 

They weren't enabled until that patch.
Comment 10 Alex Deucher 2010-03-24 12:45:51 UTC
pushed the patch in comment 7.

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.