etnaviv-gpu 134000.gpu: MMU fault status 0x00000002 on i.XM6 Quad Plus

Luís Mendes luis.p.mendes at gmail.com
Fri Nov 3 16:37:50 UTC 2017


Sure, I'll give it a try later. Currently I am working on my day job.

On Fri, Nov 3, 2017 at 4:25 PM, Russell King - ARM Linux <
linux at armlinux.org.uk> wrote:

> On Fri, Nov 03, 2017 at 12:05:48PM +0000, Luís Mendes wrote:
> > So this is what I get with picture desc on the candidate corner cases:
> > Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
> > vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
> > Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x20e45a8: 32
> > (1024x768+0+0) R fmt XRGB8888
>
> I have my own case with mate here:
>
> etnaviv_accel_Composite(height=1, width=1,
>         yDst=0, xDst=0, yMask=0, xMask=0, ySrc=-1, xSrc=-1,
>         pDst=0x962b08, pMask=0x0, pSrc=0x962ab8, op=PictOpSrc)
>
> pSrc = {pDrawable = 0x86cf48, pFormat = 0x59bd78, format = PICT_x8r8g8b8,
>   refcnt = 1, id = 0, repeat = 0, graphicsExposures = 0, subWindowMode = 1,
>   polyEdge = 0, polyMode = 0, freeCompClip = 1, componentAlpha = 0,
>   repeatType = 0, filter = 0, stateChanges = 0, unused = 0, pNext = 0x0,
>   alphaMap = 0x0, alphaOrigin = {x = 0, y = 0}, clipOrigin = {x = 0, y =
> 0},
>   clientClip = 0x0, serialNumber = 4071, pCompositeClip = 0x962b58,
>   devPrivates = 0x0, transform = 0x0, pSourcePict = 0x0, filter_params =
> 0x0,
>   filter_nparams = 0}
>
> pSrc->pDrawable = {type = 0, class = 1, depth = 24, bitsPerPixel = 32,
>   id = 27262979, x = 1334, y = 0, width = 1, height = 25,
>   pScreen = 0x599708, serialNumber = 4071}
>    => DRAWABLE_WINDOW
>
> pSrc::Pixmap = {drawable = {type = 1, class = 0, depth = 24,
>     bitsPerPixel = 32, id = 0, x = 0, y = 0, width = 1360, height = 27,
>     pScreen = 0x599708, serialNumber = 499}, devPrivates = 0x84bd0c,
>   refcnt = 3, devKind = 5440, devPrivate = {ptr = 0x84bd48, val = 8699208,
>     uval = 8699208, fptr = 0x84bd48}, screen_x = 0, screen_y = 0,
>   usage_hint = 536870914, master_pixmap = 0x0}
>
> So, what's being asked for is to copy a single pixel from -1,-1 on the
> source picture to 0,0 on the destination picture.
>
> The source picture is a window, with no repeat.  The backing pixmap for
> the window is 1360x27.  The window is located at 1334,0 on this pixmap.
>
> So, -1,-1 is off the top of the window, and off the top of the pixmap.
>
> From what I can tell from the Xrender spec
> (https://www.x.org/releases/current/doc/renderproto/renderproto.txt),
> this should mean, as repeat mode is "None", that the source should be
> treated as "transparent".
>
> Hmm, let's try to trap the case where the pixels we're asked for are off
> the pixmap, and use the fallback.  Can you try this patch please?
>
> diff --git a/etnaviv/etnaviv_render.c b/etnaviv/etnaviv_render.c
> index 15cafdf..e846a23 100644
> --- a/etnaviv/etnaviv_render.c
> +++ b/etnaviv/etnaviv_render.c
> @@ -125,24 +125,27 @@ static void etnaviv_debug_blend_op(const char *func,
>   * determine whether the picture repeat flag is meaningful.  The
>   * rectangle must have had the transformation applied.
>   */
> -static Bool picture_needs_repeat(PicturePtr pPict, int x, int y,
> +static Bool picture_has_pixels(PicturePtr pPict, int x, int y,
>         unsigned w, unsigned h)
>  {
>         DrawablePtr pDrawable;
>
> -       if (!pPict->repeat)
> -               return FALSE;
> -
>         pDrawable = pPict->pDrawable;
>         if (!pDrawable)
> +               return FALSE;
> +
> +       if (!drawable_contains(pDrawable, x, y, w, h))
> +               return FALSE;
> +
> +       if (!pPict->repeat)
>                 return TRUE;
>
>         if (pPict->filter != PictFilterConvolution &&
>             (pDrawable->width > 1 || pDrawable->height > 1) &&
>             drawable_contains(pDrawable, x, y, w, h))
> -               return FALSE;
> +               return TRUE;
>
> -       return TRUE;
> +       return FALSE;
>  }
>
>  static const struct etnaviv_blend_op etnaviv_composite_op[] = {
> @@ -425,8 +428,8 @@ static struct etnaviv_pixmap
> *etnaviv_acquire_src(ScreenPtr pScreen,
>         if (!transform_is_integer_translation(pict->transform, &tx, &ty))
>                 goto fallback;
>
> -       if (picture_needs_repeat(pict, src_topleft->x + tx, src_topleft->y
> + ty,
> -                                clip->x2, clip->y2))
> +       if (!picture_has_pixels(pict, src_topleft->x + tx, src_topleft->y
> + ty,
> +                               clip->x2, clip->y2))
>                 goto fallback;
>
>         src_topleft->x += drawable->x + src_offset.x + tx;
> @@ -661,8 +664,8 @@ static int etnaviv_accel_composite_masked(PicturePtr
> pSrc, PicturePtr pMask,
>                 mask_offset.y += ty;
>
>                 /* We don't handle mask repeats (yet) */
> -               if (picture_needs_repeat(pMask, mask_offset.x,
> mask_offset.y,
> -                                        clip_temp.x2, clip_temp.y2))
> +               if (!picture_has_pixels(pMask, mask_offset.x,
> mask_offset.y,
> +                                       clip_temp.x2, clip_temp.y2))
>                         goto fallback;
>
>                 mask_offset.x += pMask->pDrawable->x;
>
>
> --
> RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
> FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps
> up
> According to speedtest.net: 8.21Mbps down 510kbps up
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/etnaviv/attachments/20171103/9a26c308/attachment.html>


More information about the etnaviv mailing list