components/desktop/firefox/patches/firefox-01-cairo-perf.patch
author Petr Sumbera <petr.sumbera@oracle.com>
Mon, 05 Sep 2016 05:00:46 -0700
branchs11u3-sru
changeset 7035 4c2f26e9d5ab
child 7364 1ac24a377555
permissions -rw-r--r--
24361911 Upgrade Firefox to version 45.4.0 ESR 23033044 firefox needs to be built with "--with-intl-api" option 24708365 problem in FIREFOX/BROWSER 24708614 problem in FIREFOX/BROWSER
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7035
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     1
This enables tracking of ARGB values for image masks, since some machines do
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     2
not use ARGB values.
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     3
See Mozilla bug #716462 - Performance regression with xBGR visual and no
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     4
RENDER extension.
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     5
We would like to try to get this upstream in the future.
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     6
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     7
diff --git a/gfx/cairo/cairo/src/cairo-xlib-surface.c b/gfx/cairo/cairo/src/cairo-xlib-surface.c
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     8
--- a/gfx/cairo/cairo/src/cairo-xlib-surface.c
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
     9
+++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    10
@@ -2325,6 +2325,7 @@
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    11
                           cairo_region_t *clip_region)
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    12
 {
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    13
     cairo_image_surface_t *image;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    14
+    cairo_format_masks_t image_masks;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    15
     cairo_rectangle_int_t extents;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    16
     cairo_status_t status;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    17
     int tx, ty;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    18
@@ -2341,6 +2342,16 @@
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    19
            (image->base.content & CAIRO_CONTENT_ALPHA) == 0)))
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    20
        return CAIRO_INT_STATUS_UNSUPPORTED;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    21
 
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    22
+    if (image->base.backend->type == CAIRO_SURFACE_TYPE_IMAGE) {
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    23
+       if (_pixman_format_to_masks (image->pixman_format, &image_masks)) {
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    24
+           if (! ((image_masks.alpha_mask == surface->a_mask || surface->a_mask == 0) &&
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    25
+                  (image_masks.red_mask   == surface->r_mask || surface->r_mask == 0) &&
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    26
+                  (image_masks.green_mask == surface->g_mask || surface->g_mask == 0) &&
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    27
+                  (image_masks.blue_mask  == surface->b_mask || surface->b_mask == 0)))
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    28
+               return CAIRO_INT_STATUS_UNSUPPORTED;
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    29
+       }
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    30
+    }
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    31
+
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    32
     if (image->base.backend->type != CAIRO_SURFACE_TYPE_IMAGE) {
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    33
        if (image->base.backend->type == CAIRO_INTERNAL_SURFACE_TYPE_SNAPSHOT) {
4c2f26e9d5ab 24361911 Upgrade Firefox to version 45.4.0 ESR
Petr Sumbera <petr.sumbera@oracle.com>
parents:
diff changeset
    34
            image = (cairo_image_surface_t *) ((cairo_surface_snapshot_t *) image)->target;