? ID Index: r600_exa.c =================================================================== RCS file: /cvsroot/xsrc/external/mit/xf86-video-ati/dist/src/r600_exa.c,v retrieving revision 1.5 diff -p -u -r1.5 r600_exa.c --- r600_exa.c 23 Sep 2012 20:06:02 -0000 1.5 +++ r600_exa.c 28 Jul 2014 06:53:23 -0000 @@ -193,6 +193,10 @@ R600PrepareSolid(PixmapPtr pPix, int alu { dst.offset = exaGetPixmapOffset(pPix) + info->fbLocation + pScrn->fbOffset; dst.bo = NULL; + dst.tiling_flags = 0; +#if defined(XF86DRM_MODE) + dst.surface = NULL; +#endif } dst.pitch = exaGetPixmapPitch(pPix) / (pPix->drawable.bitsPerPixel / 8); @@ -604,6 +608,12 @@ R600PrepareCopy(PixmapPtr pSrc, Pixmap accel_state->same_surface = TRUE; src_obj.bo = NULL; dst_obj.bo = NULL; + src_obj.tiling_flags = 0; + dst_obj.tiling_flags = 0; +#if defined(XF86DRM_MODE) + src_obj.surface = NULL; + dst_obj.surface = NULL; +#endif } src_obj.width = pSrc->drawable.width; @@ -626,15 +636,10 @@ R600PrepareCopy(PixmapPtr pSrc, Pixmap if (accel_state->same_surface == TRUE) { #if defined(XF86DRM_MODE) - unsigned long size = accel_state->dst_obj.surface->bo_size; - unsigned long align = accel_state->dst_obj.surface->bo_alignment; -#else - unsigned height = pDst->drawable.height; - unsigned long size = height * accel_state->dst_obj.pitch * pDst->drawable.bitsPerPixel/8; -#endif - -#if defined(XF86DRM_MODE) if (info->cs) { + unsigned long size = accel_state->dst_obj.surface->bo_size; + unsigned long align = accel_state->dst_obj.surface->bo_alignment; + if (accel_state->copy_area_bo) { radeon_bo_unref(accel_state->copy_area_bo); accel_state->copy_area_bo = NULL; @@ -656,6 +661,9 @@ R600PrepareCopy(PixmapPtr pSrc, Pixmap } else #endif { + unsigned height = pDst->drawable.height; + unsigned long size = height * accel_state->dst_obj.pitch * pDst->drawable.bitsPerPixel/8; + if (accel_state->copy_area) { exaOffscreenFree(pDst->drawable.pScreen, accel_state->copy_area); accel_state->copy_area = NULL; @@ -1305,6 +1313,12 @@ static Bool R600PrepareComposite(int op, dst_obj.offset = exaGetPixmapOffset(pDst) + info->fbLocation + pScrn->fbOffset; src_obj.bo = NULL; dst_obj.bo = NULL; + src_obj.tiling_flags = 0; + dst_obj.tiling_flags = 0; +#if defined(XF86DRM_MODE) + src_obj.surface = NULL; + dst_obj.surface = NULL; +#endif } src_obj.pitch = exaGetPixmapPitch(pSrc) / (pSrc->drawable.bitsPerPixel / 8); dst_obj.pitch = exaGetPixmapPitch(pDst) / (pDst->drawable.bitsPerPixel / 8); @@ -1340,6 +1354,10 @@ static Bool R600PrepareComposite(int op, { mask_obj.offset = exaGetPixmapOffset(pMask) + info->fbLocation + pScrn->fbOffset; mask_obj.bo = NULL; + mask_obj.tiling_flags = 0; +#if defined(XF86DRM_MODE) + mask_obj.surface = NULL; +#endif } mask_obj.pitch = exaGetPixmapPitch(pMask) / (pMask->drawable.bitsPerPixel / 8); @@ -1912,7 +1930,10 @@ R600UploadToScreenCS(PixmapPtr pDst, int dst_obj.bo = radeon_get_pixmap_bo(pDst); dst_obj.tiling_flags = radeon_get_pixmap_tiling(pDst); #ifdef XF86DRM_MODE - dst_obj.surface = radeon_get_pixmap_surface(pDst); + if (info->cs) + dst_obj.surface = radeon_get_pixmap_surface(pDst); + else + dst_obj.surface = NULL; #endif if (!R600SetAccelState(pScrn, @@ -2041,7 +2062,10 @@ R600DownloadFromScreenCS(PixmapPtr pSrc, src_obj.bo = radeon_get_pixmap_bo(pSrc); src_obj.tiling_flags = radeon_get_pixmap_tiling(pSrc); #ifdef XF86DRM_MODE - src_obj.surface = radeon_get_pixmap_surface(pSrc); + if (info->cs) + src_obj.surface = radeon_get_pixmap_surface(pSrc); + else + src_obj.surface = NULL; #endif dst_obj.pitch = scratch_pitch; Index: r600_textured_videofuncs.c =================================================================== RCS file: /cvsroot/xsrc/external/mit/xf86-video-ati/dist/src/r600_textured_videofuncs.c,v retrieving revision 1.1.1.9 diff -p -u -r1.1.1.9 r600_textured_videofuncs.c --- r600_textured_videofuncs.c 23 Sep 2012 19:49:22 -0000 1.1.1.9 +++ r600_textured_videofuncs.c 28 Jul 2014 06:53:23 -0000 @@ -177,6 +177,10 @@ R600DisplayTexturedVideo(ScrnInfoPtr pSc dst_obj.offset = exaGetPixmapOffset(pPixmap) + info->fbLocation + pScrn->fbOffset; src_obj.offset = pPriv->src_offset + info->fbLocation + pScrn->fbOffset; dst_obj.bo = src_obj.bo = NULL; + dst_obj.tiling_flags = 0; +#if defined(XF86DRM_MODE) + dst_obj.surface = NULL; +#endif } dst_obj.pitch = exaGetPixmapPitch(pPixmap) / (pPixmap->drawable.bitsPerPixel / 8);