summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pixman/pixman-bits-image.c6
-rw-r--r--pixman/pixman-image.c6
-rw-r--r--pixman/pixman-private.h1
3 files changed, 9 insertions, 4 deletions
diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 3d78ff07..33d66db3 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -911,12 +911,10 @@ bits_image_property_changed (pixman_image_t *image)
else if (bits->common.transform &&
bits->common.transform->matrix[2][0] == 0 &&
bits->common.transform->matrix[2][1] == 0 &&
+ bits->common.transform->matrix[1][0] == 0 &&
bits->common.transform->matrix[2][2] == pixman_fixed_1 &&
bits->common.transform->matrix[0][0] > 0 &&
- bits->common.transform->matrix[1][0] == 0 &&
- (bits->common.filter == PIXMAN_FILTER_BILINEAR ||
- bits->common.filter == PIXMAN_FILTER_GOOD ||
- bits->common.filter == PIXMAN_FILTER_BEST) &&
+ (bits->common.flags & FAST_PATH_BILINEAR_FILTER) != 0 &&
bits->common.repeat == PIXMAN_REPEAT_NONE &&
(bits->format == PIXMAN_a8r8g8b8 ||
bits->format == PIXMAN_x8r8g8b8))
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index d09d1930..45a86463 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -324,6 +324,12 @@ compute_image_info (pixman_image_t *image)
flags |= (FAST_PATH_NEAREST_FILTER | FAST_PATH_NO_CONVOLUTION_FILTER);
break;
+ case PIXMAN_FILTER_BILINEAR:
+ case PIXMAN_FILTER_GOOD:
+ case PIXMAN_FILTER_BEST:
+ flags |= (FAST_PATH_BILINEAR_FILTER | FAST_PATH_NO_CONVOLUTION_FILTER);
+ break;
+
case PIXMAN_FILTER_CONVOLUTION:
break;
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index 9dcdca78..0bcce8d6 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -579,6 +579,7 @@ _pixman_choose_implementation (void);
#define FAST_PATH_SIMPLE_REPEAT (1 << 12)
#define FAST_PATH_IS_OPAQUE (1 << 13)
#define FAST_PATH_NEEDS_WORKAROUND (1 << 14)
+#define FAST_PATH_BILINEAR_FILTER (1 << 15)
#define _FAST_PATH_STANDARD_FLAGS \
(FAST_PATH_ID_TRANSFORM | \