summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2015-06-15 21:11:58 +0100
committerRussell King <rmk@arm.linux.org.uk>2015-06-29 12:58:36 +0100
commitfecc80153a16f9468a6502a7e0f135b192c95667 (patch)
tree260cdb1970006eb844a475d107abd838489c7c74
parent69dc13ab9042f51001d048f01bf2fa11b389ba30 (diff)
etnaviv: add source/destination format validation
Add source/destination format validation for standard X operations. This will allow us to add support for other formats where GPU capabilities allow. Signed-off-by: Russell King <rmk@arm.linux.org.uk>
-rw-r--r--etnaviv/etnaviv_accel.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/etnaviv/etnaviv_accel.c b/etnaviv/etnaviv_accel.c
index c1217fd..89c1f36 100644
--- a/etnaviv/etnaviv_accel.c
+++ b/etnaviv/etnaviv_accel.c
@@ -183,6 +183,9 @@ static Bool etnaviv_init_dst_drawable(struct etnaviv *etnaviv,
if (!op->dst.pixmap)
return FALSE;
+ if (!etnaviv_dst_format_valid(etnaviv, op->dst.pixmap->format))
+ return FALSE;
+
if (!gal_prepare_gpu(etnaviv, op->dst.pixmap, GPU_ACCESS_RW))
return FALSE;
@@ -201,6 +204,10 @@ static Bool etnaviv_init_dstsrc_drawable(struct etnaviv *etnaviv,
if (!op->dst.pixmap || !op->src.pixmap)
return FALSE;
+ if (!etnaviv_src_format_valid(etnaviv, op->src.pixmap->format) ||
+ !etnaviv_dst_format_valid(etnaviv, op->dst.pixmap->format))
+ return FALSE;
+
if (!gal_prepare_gpu(etnaviv, op->dst.pixmap, GPU_ACCESS_RW) ||
!gal_prepare_gpu(etnaviv, op->src.pixmap, GPU_ACCESS_RO))
return FALSE;
@@ -222,6 +229,9 @@ static Bool etnaviv_init_src_pixmap(struct etnaviv *etnaviv,
if (!op->src.pixmap)
return FALSE;
+ if (!etnaviv_src_format_valid(etnaviv, op->src.pixmap->format))
+ return FALSE;
+
if (!gal_prepare_gpu(etnaviv, op->src.pixmap, GPU_ACCESS_RO))
return FALSE;
@@ -1658,6 +1668,8 @@ fallback:
xSrc, ySrc, xMask, yMask,
clip_temp.x2, clip_temp.y2))
return FALSE;
+
+ vSrc = vTemp;
goto finish;
}