lima: don't use damage system when full damage
authorQiang Yu <yuq825@gmail.com>
Sun, 25 Aug 2019 09:24:26 +0000 (17:24 +0800)
committerQiang Yu <yuq825@gmail.com>
Mon, 23 Sep 2019 01:48:50 +0000 (09:48 +0800)
Some time weston set full damage region. It is
more effient to use the cached pp stream instead
of dynamically create one.

Reviewed-and-Tested-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
src/gallium/drivers/lima/lima_resource.c

index b2e33f4d3ff49939e0a805ce4bf1237f33a1a68b..2f9081c3d1151ba961435e1610695b82f1f45bec 100644 (file)
@@ -365,6 +365,20 @@ lima_resource_set_damage_region(struct pipe_screen *pscreen,
    if (!nrects)
       return;
 
+   /* check full damage
+    *
+    * TODO: currently only check if there is any single damage
+    * region that can cover the full render target; there may
+    * be some accurate way, but a single window size damage
+    * region is most of the case from weston
+    */
+   for (i = 0; i < nrects; i++) {
+      if (rects[i].x <= 0 && rects[i].y <= 0 &&
+          rects[i].x + rects[i].width >= pres->width0 &&
+          rects[i].y + rects[i].height >= pres->height0)
+         return;
+   }
+
    damage->region = CALLOC(nrects, sizeof(*damage->region));
    if (!damage->region)
       return;