[Spice-devel] [PATCH xf86-video-qxl] Provide an implementation for put_image in dfps mode.
Jeremy White
jwhite at codeweavers.com
Wed Dec 2 12:14:32 PST 2015
This prevents the fallback from calling prepare_access
against the whole screen, which in turn keeps us from
transmitting the whole screen more than necessary.
Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
src/dfps.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/dfps.c b/src/dfps.c
index 568ba5e..f113f27 100644
--- a/src/dfps.c
+++ b/src/dfps.c
@@ -270,15 +270,22 @@ static Bool dfps_put_image (PixmapPtr dest, int x, int y, int w, int h,
char *src, int src_pitch)
{
dfps_info_t *info;
+ FbBits *dst;
+ FbStride dst_stride;
+ int dst_bpp;
if (!(info = dfps_get_info (dest)))
return FALSE;
dfps_update_box(&info->updated_region, x, x + w, y, y + h);
- /* We can avoid doing the put image ourselves, as the uxa driver
- will fall back and do it for us if we return false */
- return FALSE;
+ fbPrepareAccess(dest);
+ fbGetPixmapBitsData(dest, dst, dst_stride, dst_bpp);
+ fbBlt((FbBits *) src, src_pitch / sizeof(FbStip), 0, dst + (y * dst_stride), dst_stride,
+ x * dst_bpp, w * dst_bpp, h, GXcopy, FB_ALLONES, dst_bpp, FALSE, FALSE);
+ fbFinishAccess(dest);
+
+ return TRUE;
}
--
2.1.4
More information about the Spice-devel
mailing list