summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-06-21 21:19:46 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2016-06-21 21:19:46 +0100
commitc28e62f94f15c9f5c4fb0744588f08ae18e4a9b5 (patch)
treedb92accce506b2b7ee4fba437856a45d0372ea49 /src
parentf1c757e4518f6835bbff6c940269a5c6be75f202 (diff)
sna/gen2+: Do not force migration to GPU for very large objects
If the target is larger than the maximum render size, allow us not to migrate to the GPU if it is entirely damaged on the CPU. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src')
-rw-r--r--src/sna/gen2_render.c4
-rw-r--r--src/sna/gen3_render.c4
-rw-r--r--src/sna/gen4_render.c4
-rw-r--r--src/sna/gen5_render.c4
-rw-r--r--src/sna/gen6_render.c4
-rw-r--r--src/sna/gen7_render.c4
-rw-r--r--src/sna/gen8_render.c4
-rw-r--r--src/sna/gen9_render.c4
8 files changed, 24 insertions, 8 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index 12b741cc..37ded24c 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1619,7 +1619,9 @@ gen2_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index eeea91fe..4459a562 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -3228,7 +3228,9 @@ gen3_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index 552da49a..72a98aee 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -1647,7 +1647,9 @@ gen4_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index e162f9fb..fb3e79bf 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -1599,7 +1599,9 @@ gen5_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index ee175935..6b69f216 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -1908,7 +1908,9 @@ gen6_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index f707d39e..aabb8693 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2150,7 +2150,9 @@ gen7_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
index f979ba82..445983b1 100644
--- a/src/sna/gen8_render.c
+++ b/src/sna/gen8_render.c
@@ -1996,7 +1996,9 @@ gen8_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)
diff --git a/src/sna/gen9_render.c b/src/sna/gen9_render.c
index 7b41cdbd..801d514c 100644
--- a/src/sna/gen9_render.c
+++ b/src/sna/gen9_render.c
@@ -2002,7 +2002,9 @@ gen9_composite_set_target(struct sna *sna,
} else
sna_render_picture_extents(dst, &box);
- hint = PREFER_GPU | FORCE_GPU | RENDER_GPU;
+ hint = PREFER_GPU | RENDER_GPU;
+ if (!need_tiling(sna, op->dst.width, op->dst.height))
+ hint |= FORCE_GPU;
if (!partial) {
hint |= IGNORE_DAMAGE;
if (w == op->dst.width && h == op->dst.height)