diff options
author | Russell King <rmk@arm.linux.org.uk> | 2015-06-15 21:11:58 +0100 |
---|---|---|
committer | Russell King <rmk@arm.linux.org.uk> | 2015-06-29 12:58:36 +0100 |
commit | fecc80153a16f9468a6502a7e0f135b192c95667 (patch) | |
tree | 260cdb1970006eb844a475d107abd838489c7c74 | |
parent | 69dc13ab9042f51001d048f01bf2fa11b389ba30 (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.c | 12 |
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; } |