From: chaohong g. <Minskey.Guo@Sun.COM> - 2007-09-19 14:10:25
|
Hi, guys, Did someone try secondlife on radeon cards ? I am porting dri radeon driver to solaris. In order to enable secondlife to run on Solaris x86. I have to make a small change in the routine radeon_cp_dispatch_texture() of radeon kernel driver. At the beginning of starting, secondlife needs to load a 1024*1024 RGBA texture, which uses up all texture buffers so that radeon_cp_dispatch_texture()/ ioctl DRM_RADEON_TEXTURE always returns EAGAIN. It seems that we should add a COMMIT_RING() at the end of the following code so as to GPU kick some buffers back to us, see: static int radeon_cp_dispatch_texture( ...) { .... BEGIN_RING(9); OUT_RING(CP_PACKET3(RADEON_CNTL_BITBLT_MULTI, 5)); OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL | RADEON_GMC_DST_PITCH_OFFSET_CNTL | RADEON_GMC_BRUSH_NONE | (format << 8) | RADEON_GMC_SRC_DATATYPE_COLOR | RADEON_ROP3_S | RADEON_DP_SRC_SOURCE_MEMORY | RADEON_GMC_CLR_CMP_CNTL_DIS | RADEON_GMC_WR_MSK_DIS); OUT_RING((spitch << 22) | (offset >> 10)); OUT_RING((texpitch << 22) | (tex->offset >> 10)); OUT_RING(0); OUT_RING((image->x << 16) | image->y); OUT_RING((image->width << 16) | height); RADEON_WAIT_UNTIL_2D_IDLE(); ADVANCE_RING(); COMMIT_RING(); <-----------------------------Added this ???? } How do you think about it ? -minskey |
From: Alex D. <ale...@gm...> - 2007-09-22 14:06:32
|
On 9/19/07, chaohong guo <Min...@su...> wrote: > Hi, guys, > > Did someone try secondlife on radeon cards ? > > I am porting dri radeon driver to solaris. In order to > enable secondlife to run on Solaris x86. I have to make a > small change in the routine radeon_cp_dispatch_texture() of > radeon kernel driver. > > At the beginning of starting, secondlife needs to load a > 1024*1024 RGBA texture, which uses up all texture buffers > so that radeon_cp_dispatch_texture()/ ioctl DRM_RADEON_TEXTURE > always returns EAGAIN. > > It seems that we should add a COMMIT_RING() at the end > of the following code so as to GPU kick some buffers back > to us, see: > > static int radeon_cp_dispatch_texture( ...) > { > > .... > BEGIN_RING(9); > OUT_RING(CP_PACKET3(RADEON_CNTL_BITBLT_MULTI, 5)); > OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL | > RADEON_GMC_DST_PITCH_OFFSET_CNTL | > RADEON_GMC_BRUSH_NONE | > (format << 8) | > RADEON_GMC_SRC_DATATYPE_COLOR | > RADEON_ROP3_S | > RADEON_DP_SRC_SOURCE_MEMORY | > RADEON_GMC_CLR_CMP_CNTL_DIS | RADEON_GMC_WR_MSK_DIS); > OUT_RING((spitch << 22) | (offset >> 10)); > OUT_RING((texpitch << 22) | (tex->offset >> 10)); > OUT_RING(0); > OUT_RING((image->x << 16) | image->y); > OUT_RING((image->width << 16) | height); > RADEON_WAIT_UNTIL_2D_IDLE(); > ADVANCE_RING(); > COMMIT_RING(); <-----------------------------Added this ???? > } > > > > How do you think about it ? You probably want to ask on dri-devel (cc:ed) as that is where most development takes place. This probably is a bug although I haven't really had a chance to look into it much. Alex |