evergreen acceleration support

Dave Witbrodt dawitbro at sbcglobal.net
Mon Aug 23 06:04:51 PDT 2010


On 08/23/2010 01:38 AM, Dave Witbrodt wrote:
> On 08/20/2010 05:21 PM, Alex Deucher wrote:
>> I've just pushed out the initial evergreen (radeon HD5xxx)
>> acceleration support for EXA and Xv to the evergreen_accel branch of
>> xf86-video-ati. Full support for EXA and Xv is available. To use it,
>> you'll need 2.6.35 with kms enabled. There are still some GPU hangs
>> in some cases that we haven't sorted out yet. Richard will be pushing
>> out mesa support as soon as he finishes rebasing his tree against mesa
>> master. We'll be releasing updated register specs eventually, but as
>> you can see, most of the registers and bit fields are the same as
>> r6xx/r7xx. Happy Hacking!
>>
>> Alex
>
> Crashes for me when the boot scripts start 'xdm'. Attached tarball has
> 'dmesg' output, copy of 'Xorg.0.log', and copy of 'xdm.log' (with same
> backtrace as Xorg.0.log).
>
> Should I put this on Bugzilla, or is evergreen-accel too new?
>
> Hardware:
> Radeon HD 5750
>
> Software:
> linux 2.6.35.2
> [merged with drm-radeon-testing merged up to c9f9e91; have also reverted
> 5b1714d, and added patch to fix pink vert. line -- not sure if there are
> git commits available yet]
> libdrm 2.4.21
> mesa 7.9-devel, git be99100

Hmm, I was just looking over the build log for Mesa that I saved.  Not sure
if this has to do with the crash, but when I followed the warnings to the
code, this looks potentially disastrous:

r600_cmdbuf.h:201:63: warning: backslash and newline separated by space
r600_cmdbuf.h:202:79: warning: backslash and newline separated by space


Here are the offending lines:

/* evergreen */
#define EVERGREEN_OUT_BATCH_REGS(reg, num)         \
do {                                                            \
         if ((reg) >= R600_SET_CONFIG_REG_OFFSET && (reg) < R600_SET_CONFIG_REG_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CONFIG_REG, (num)));      \
                 R600_OUT_BATCH(((reg) - R600_SET_CONFIG_REG_OFFSET) >> 2);      \
         } else if ((reg) >= R600_SET_CONTEXT_REG_OFFSET && (reg) < R600_SET_CONTEXT_REG_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CONTEXT_REG, (num)));     \
*               R600_OUT_BATCH(((reg) - R600_SET_CONTEXT_REG_OFFSET) >> 2);     \
*       } else if ((reg) >= EG_SET_RESOURCE_OFFSET && (reg) < EG_SET_RESOURCE_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, (num)));        \
                 R600_OUT_BATCH(((reg) - EG_SET_RESOURCE_OFFSET) >> 2);  \
     } else if ((reg) >= EG_SET_LOOP_CONST_OFFSET && (reg) < EG_SET_LOOP_CONST_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_LOOP_CONST, (num)));      \
                 R600_OUT_BATCH(((reg) - EG_SET_LOOP_CONST_OFFSET) >> 2);        \
         } else if ((reg) >= R600_SET_SAMPLER_OFFSET && (reg) < R600_SET_SAMPLER_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_SAMPLER, (num))); \
                 R600_OUT_BATCH(((reg) - R600_SET_SAMPLER_OFFSET) >> 2); \
         } else if ((reg) >= R600_SET_CTL_CONST_OFFSET && (reg) < R600_SET_CTL_CONST_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_CTL_CONST, (num)));       \
                 R600_OUT_BATCH(((reg) - R600_SET_CTL_CONST_OFFSET) >> 2);       \
         } else if ((reg) >= EG_SET_BOOL_CONST_OFFSET && (reg) < EG_SET_BOOL_CONST_END) { \
                 R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_BOOL_CONST, (num)));      \
                 R600_OUT_BATCH(((reg) - EG_SET_BOOL_CONST_OFFSET) >> 2);        \
         } else {                                                        \
                 R600_OUT_BATCH(CP_PACKET0((reg), (num))); \
         }                                                               \
} while (0)

Looks like a bad place for escaped newlines to fail, but if this was
really the problem, wouldn't the compilation have failed instead?


Dave W.


More information about the xorg-driver-ati mailing list