summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sna/gen2_render.c15
-rw-r--r--src/sna/gen3_render.c16
-rw-r--r--src/sna/gen4_render.c9
-rw-r--r--src/sna/gen5_render.c17
4 files changed, 33 insertions, 24 deletions
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index b65454d8..431b972f 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1755,14 +1755,6 @@ gen2_render_composite(struct sna *sna,
return false;
}
- if (mask == NULL && sna->kgem.mode == KGEM_BLT &&
- sna_blt_composite(sna, op,
- src, dst,
- src_x, src_y,
- dst_x, dst_y,
- width, height, tmp))
- return true;
-
sna_render_reduce_damage(tmp, dst_x, dst_y, width, height);
tmp->op = op;
@@ -1783,6 +1775,13 @@ gen2_render_composite(struct sna *sna,
case 0:
gen2_composite_solid_init(sna, &tmp->src, 0);
case 1:
+ if (mask == NULL &&
+ sna_blt_composite__convert(sna,
+ src_x, src_y,
+ width, height,
+ dst_x, dst_y,
+ tmp))
+ return true;
break;
}
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index 18c5d852..ce71d82f 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -2832,14 +2832,6 @@ gen3_render_composite(struct sna *sna,
return false;
}
- if (mask == NULL && sna->kgem.mode != KGEM_RENDER &&
- sna_blt_composite(sna, op,
- src, dst,
- src_x, src_y,
- dst_x, dst_y,
- width, height, tmp))
- return true;
-
sna_render_reduce_damage(tmp, dst_x, dst_y, width, height);
tmp->op = op;
@@ -2866,6 +2858,14 @@ gen3_render_composite(struct sna *sna,
tmp->src.u.gen3.type = SHADER_ZERO;
break;
case 1:
+ if (mask == NULL &&
+ sna_blt_composite__convert(sna,
+ src_x, src_y,
+ width, height,
+ dst_x, dst_y,
+ tmp))
+ return true;
+
gen3_composite_channel_convert(&tmp->src);
break;
}
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index 7dab92b7..ab06295a 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -1913,6 +1913,7 @@ gen4_composite_picture(struct sna *sna,
} else
channel->transform = picture->transform;
+ channel->pict_format = picture->format;
channel->card_format = gen4_get_card_format(picture->format);
if (channel->card_format == -1)
return sna_render_picture_convert(sna, picture, channel, pixmap,
@@ -2305,6 +2306,14 @@ gen4_render_composite(struct sna *sna,
gen4_composite_solid_init(sna, &tmp->src, 0);
/* fall through to fixup */
case 1:
+ if (mask == NULL &&
+ sna_blt_composite__convert(sna,
+ src_x, src_y,
+ width, height,
+ dst_x, dst_y,
+ tmp))
+ return true;
+
gen4_composite_channel_convert(&tmp->src);
break;
}
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index f50e785b..488ac342 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -1923,6 +1923,7 @@ gen5_composite_picture(struct sna *sna,
} else
channel->transform = picture->transform;
+ channel->pict_format = picture->format;
channel->card_format = gen5_get_card_format(picture->format);
if (channel->card_format == -1)
return sna_render_picture_convert(sna, picture, channel, pixmap,
@@ -2302,14 +2303,6 @@ gen5_render_composite(struct sna *sna,
return false;
}
- if (mask == NULL && sna->kgem.mode == KGEM_BLT &&
- sna_blt_composite(sna, op,
- src, dst,
- src_x, src_y,
- dst_x, dst_y,
- width, height, tmp))
- return true;
-
sna_render_reduce_damage(tmp, dst_x, dst_y, width, height);
if (too_large(tmp->dst.width, tmp->dst.height) &&
@@ -2330,6 +2323,14 @@ gen5_render_composite(struct sna *sna,
gen5_composite_solid_init(sna, &tmp->src, 0);
/* fall through to fixup */
case 1:
+ if (mask == NULL &&
+ sna_blt_composite__convert(sna,
+ src_x, src_y,
+ width, height,
+ dst_x, dst_y,
+ tmp))
+ return true;
+
gen5_composite_channel_convert(&tmp->src);
break;
}