1*4882a593SmuzhiyunFrom 7c618559ef24672f101f805c470a38969fd1f30f Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Sat, 9 Oct 2021 12:32:24 +0800
4*4882a593SmuzhiyunSubject: [PATCH 6/6] HACK: pixman: Support using dma fd for RGA accel
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunUsage:
7*4882a593Smuzhiyunpixman_image_set_destroy_function(image, NULL, (void *)(ptrdiff_t)dma_fd)
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun pixman/pixman.c | 12 ++++++++++--
12*4882a593Smuzhiyun 1 file changed, 10 insertions(+), 2 deletions(-)
13*4882a593Smuzhiyun
14*4882a593Smuzhiyundiff --git a/pixman/pixman.c b/pixman/pixman.c
15*4882a593Smuzhiyunindex 371e421..d216a88 100644
16*4882a593Smuzhiyun--- a/pixman/pixman.c
17*4882a593Smuzhiyun+++ b/pixman/pixman.c
18*4882a593Smuzhiyun@@ -715,11 +715,19 @@ pixman_composite_try_rga (pixman_composite_info_t * info,
19*4882a593Smuzhiyun     if (!pixman_transform_to_rga_rotate (transform, &src_info.rotation))
20*4882a593Smuzhiyun 	return FALSE;
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun+#define pixman_image_get_dma_fd(image) \
23*4882a593Smuzhiyun+    (image)->common.destroy_func ? -1 : \
24*4882a593Smuzhiyun+	((intptr_t)(image)->common.destroy_data ?: -1)
25*4882a593Smuzhiyun+
26*4882a593Smuzhiyun     src_info.mmuFlag = 1;
27*4882a593Smuzhiyun-    src_info.virAddr = src->bits.bits;
28*4882a593Smuzhiyun+    src_info.fd = pixman_image_get_dma_fd(src);
29*4882a593Smuzhiyun+    if (src_info.fd < 0)
30*4882a593Smuzhiyun+	src_info.virAddr = src->bits.bits;
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun     dst_info.mmuFlag = 1;
33*4882a593Smuzhiyun-    dst_info.virAddr = dest->bits.bits;
34*4882a593Smuzhiyun+    dst_info.fd = pixman_image_get_dma_fd(dest);
35*4882a593Smuzhiyun+    if (dst_info.fd < 0)
36*4882a593Smuzhiyun+	dst_info.virAddr = dest->bits.bits;
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun     switch (src->bits.format) {
39*4882a593Smuzhiyun     case PIXMAN_yv12:
40*4882a593Smuzhiyun--
41*4882a593Smuzhiyun2.20.1
42*4882a593Smuzhiyun
43