Summary: | Radeon 7500 [rv200] - hardware tcl don't work corretly | ||
---|---|---|---|
Product: | Mesa | Reporter: | Dymchenko Bogdan <dmbohdan> |
Component: | Drivers/DRI/R100 | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED MOVED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | ||
Version: | 7.10 | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
dmesg output
glxinfo output xorg log |
Description
Dymchenko Bogdan
2011-05-08 13:23:38 UTC
When I increase command buffer to 32 kb via driconf - game starts perfectly with hardware tcl. But than it's exited with error warcraft\war3.exe: radeon_common.c:1250: rcommonEnsureCmdBufSpace: Assertion `rmesa->cmdbuf.cs->cdw' failed. Then i try manually edit ~/.drirc and change command buffer to 34 kb and game runs without errors. So this bug has an workaround, but i think that it's need to be fixed Please attach your xorg log, dmesg output, and glxinfo output. Some of the commands that are added mostly likely for the tcl-related registers are not properly accounted for. I'd start with r200EnsureEmitSize() in r200_tcl.c and make sure it's properly accounting for all the state that needs to be emitted. Print out what size it expects vs. what size gets emitted for each bit of state and track down where the count is off. Created attachment 46481 [details]
dmesg output
Created attachment 46482 [details]
glxinfo output
Created attachment 46483 [details]
xorg log
can you tell me, how can i find what size it expects and what size gets emitted for each bit of state and track down where the count is off? (In reply to comment #2) > Please attach your xorg log, dmesg output, and glxinfo output. Some of the > commands that are added mostly likely for the tcl-related registers are not > properly accounted for. I'd start with r200EnsureEmitSize() in r200_tcl.c and > make sure it's properly accounting for all the state that needs to be emitted. > Print out what size it expects vs. what size gets emitted for each bit of state > and track down where the count is off. and one moment about "I'd start with r200EnsureEmitSize() in r200_tcl.c" rv200 is an R100-based chipset, so driver is r100 (In reply to comment #7) > and one moment about "I'd start with r200EnsureEmitSize() in r200_tcl.c" > rv200 is an R100-based chipset, so driver is r100 radeonEnsureEmitSize() in radeon_tcl.c is called from radeon_run_tcl_render(). radeonEnsureEmitSize() walks through the pending state to make sure it will all fit in the current command buffer, but it appears to be missing some additional state that's being emitted. If you run the game from the terminal, it should print out a warning: if (emit_end < rmesa->radeon.cmdbuf.cs->cdw) WARN_ONCE("Rendering was %d commands larger than predicted size." " We might overflow command buffer.\n", rmesa->radeon.cmdbuf.cs->cdw - emit_end); Most likely: radeonEmitArrays() radeonEmitEltPrimitive() radeonEmitPrimitive() is emitting more state than radeonEnsureEmitSize() thinks it should. no, there is no any warnings. With default settings i see drmRadeonCmdBuffer: -22. Kernel failed to parse or rejected command stream. See dmesg for more info. and [63763.072946] [drm:radeon_cs_parser_init] *ERROR* cs IB too big: 16403 [63763.072950] [drm:radeon_cs_ioctl] *ERROR* Failed to initialize parser ! in dmesg or with setup command buffer to 32 i see radeon_common.c:1250: rcommonEnsureCmdBufSpace: Assertion `rmesa->cmdbuf.cs->cdw' failed. when try to start a game -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/279. |
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.