[PATCH libdrm 3/5] modetest: Add support for all 16/32 bpp RGB formats

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Apr 18 06:56:18 PDT 2013


On Wednesday 17 April 2013 22:18:03 ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Acked-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> ---
>  tests/modetest/buffers.c | 120 ++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 115 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c
> index 7f534a1..3b1685c 100644
> --- a/tests/modetest/buffers.c
> +++ b/tests/modetest/buffers.c
> @@ -102,17 +102,44 @@ static const struct format_info format_info[] = {
>  	/* YUV planar */
>  	{ DRM_FORMAT_YVU420, "YV12", MAKE_YUV_INFO(YUV_YCrCb, 2, 2, 1) },
>  	/* RGB16 */
> +	{ DRM_FORMAT_ARGB4444, "AR12", MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 4, 12) },
> +	{ DRM_FORMAT_XRGB4444, "XR12", MAKE_RGB_INFO(4, 8, 4, 4, 4, 0, 0, 0) },
> +	{ DRM_FORMAT_ABGR4444, "AB12", MAKE_RGB_INFO(4, 0, 4, 4, 4, 8, 4, 12) },
> +	{ DRM_FORMAT_XBGR4444, "XB12", MAKE_RGB_INFO(4, 0, 4, 4, 4, 8, 0, 0) },
> +	{ DRM_FORMAT_RGBA4444, "RA12", MAKE_RGB_INFO(4, 12, 4, 8, 4, 4, 4, 0) },
> +	{ DRM_FORMAT_RGBX4444, "RX12", MAKE_RGB_INFO(4, 12, 4, 8, 4, 4, 0, 0) },
> +	{ DRM_FORMAT_BGRA4444, "BA12", MAKE_RGB_INFO(4, 4, 4, 8, 4, 12, 4, 0) },
> +	{ DRM_FORMAT_BGRX4444, "BX12", MAKE_RGB_INFO(4, 4, 4, 8, 4, 12, 0, 0) },
>  	{ DRM_FORMAT_ARGB1555, "AR15", MAKE_RGB_INFO(5, 10, 5, 5, 5, 0, 1, 15) },
>  	{ DRM_FORMAT_XRGB1555, "XR15", MAKE_RGB_INFO(5, 10, 5, 5, 5, 0, 0, 0) },
> +	{ DRM_FORMAT_ABGR1555, "AB15", MAKE_RGB_INFO(5, 0, 5, 5, 5, 10, 1, 15) },
> +	{ DRM_FORMAT_XBGR1555, "XB15", MAKE_RGB_INFO(5, 0, 5, 5, 5, 10, 0, 0) },
> +	{ DRM_FORMAT_RGBA5551, "RA15", MAKE_RGB_INFO(5, 11, 5, 6, 5, 1, 1, 0) },
> +	{ DRM_FORMAT_RGBX5551, "RX15", MAKE_RGB_INFO(5, 11, 5, 6, 5, 1, 0, 0) },
> +	{ DRM_FORMAT_BGRA5551, "BA15", MAKE_RGB_INFO(5, 1, 5, 6, 5, 11, 1, 0) },
> +	{ DRM_FORMAT_BGRX5551, "BX15", MAKE_RGB_INFO(5, 1, 5, 6, 5, 11, 0, 0) },
>  	{ DRM_FORMAT_RGB565, "RG16", MAKE_RGB_INFO(5, 11, 6, 5, 5, 0, 0, 0) },
> +	{ DRM_FORMAT_BGR565, "BG16", MAKE_RGB_INFO(5, 0, 6, 5, 5, 11, 0, 0) },
>  	/* RGB24 */
>  	{ DRM_FORMAT_BGR888, "BG24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 0, 0) },
>  	{ DRM_FORMAT_RGB888, "RG24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0) },
>  	/* RGB32 */
>  	{ DRM_FORMAT_ARGB8888, "AR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 8, 24) },
> -	{ DRM_FORMAT_BGRA8888, "BA24", MAKE_RGB_INFO(8, 8, 8, 16, 8, 24, 8, 0) },
>  	{ DRM_FORMAT_XRGB8888, "XR24", MAKE_RGB_INFO(8, 16, 8, 8, 8, 0, 0, 0) },
> +	{ DRM_FORMAT_ABGR8888, "AB24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 8, 24) },
> +	{ DRM_FORMAT_XBGR8888, "XB24", MAKE_RGB_INFO(8, 0, 8, 8, 8, 16, 0, 0) },
> +	{ DRM_FORMAT_RGBA8888, "RA24", MAKE_RGB_INFO(8, 24, 8, 16, 8, 8, 8, 0) },
> +	{ DRM_FORMAT_RGBX8888, "RX24", MAKE_RGB_INFO(8, 24, 8, 16, 8, 8, 0, 0) },
> +	{ DRM_FORMAT_BGRA8888, "BA24", MAKE_RGB_INFO(8, 8, 8, 16, 8, 24, 8, 0) },
>  	{ DRM_FORMAT_BGRX8888, "BX24", MAKE_RGB_INFO(8, 8, 8, 16, 8, 24, 0, 0) },
> +	{ DRM_FORMAT_ARGB2101010, "AR30", MAKE_RGB_INFO(10, 20, 10, 10, 10, 0, 2,
> 30) }, +	{ DRM_FORMAT_XRGB2101010, "XR30", MAKE_RGB_INFO(10, 20, 10, 10,
> 10, 0, 0, 0) }, +	{ DRM_FORMAT_ABGR2101010, "AB30", MAKE_RGB_INFO(10, 0,
> 10, 10, 10, 20, 2, 30) }, +	{ DRM_FORMAT_XBGR2101010, "XB30",
> MAKE_RGB_INFO(10, 0, 10, 10, 10, 20, 0, 0) }, +	{ DRM_FORMAT_RGBA1010102,
> "RA30", MAKE_RGB_INFO(10, 22, 10, 12, 10, 2, 2, 0) }, +	{
> DRM_FORMAT_RGBX1010102, "RX30", MAKE_RGB_INFO(10, 22, 10, 12, 10, 2, 0, 0)
> }, +	{ DRM_FORMAT_BGRA1010102, "BA30", MAKE_RGB_INFO(10, 2, 10, 12, 10, 
22,
> 2, 0) }, +	{ DRM_FORMAT_BGRX1010102, "BX30", MAKE_RGB_INFO(10, 2, 10, 12,
> 10, 22, 0, 0) }, };
> 
>  unsigned int format_fourcc(const char *name)
> @@ -577,19 +604,47 @@ fill_smpte(const struct format_info *info, void
> *planes[3], unsigned int width, return fill_smpte_yuv_planar(&info->yuv,
> planes[0], planes[1],
>  					     planes[2], width, height, stride);
> 
> +	case DRM_FORMAT_ARGB4444:
> +	case DRM_FORMAT_XRGB4444:
> +	case DRM_FORMAT_ABGR4444:
> +	case DRM_FORMAT_XBGR4444:
> +	case DRM_FORMAT_RGBA4444:
> +	case DRM_FORMAT_RGBX4444:
> +	case DRM_FORMAT_BGRA4444:
> +	case DRM_FORMAT_BGRX4444:
>  	case DRM_FORMAT_RGB565:
> +	case DRM_FORMAT_BGR565:
>  	case DRM_FORMAT_ARGB1555:
>  	case DRM_FORMAT_XRGB1555:
> +	case DRM_FORMAT_ABGR1555:
> +	case DRM_FORMAT_XBGR1555:
> +	case DRM_FORMAT_RGBA5551:
> +	case DRM_FORMAT_RGBX5551:
> +	case DRM_FORMAT_BGRA5551:
> +	case DRM_FORMAT_BGRX5551:
>  		return fill_smpte_rgb16(&info->rgb, planes[0],
>  					width, height, stride);
> +
>  	case DRM_FORMAT_BGR888:
>  	case DRM_FORMAT_RGB888:
>  		return fill_smpte_rgb24(&info->rgb, planes[0],
>  					width, height, stride);
>  	case DRM_FORMAT_ARGB8888:
> -	case DRM_FORMAT_BGRA8888:
>  	case DRM_FORMAT_XRGB8888:
> +	case DRM_FORMAT_ABGR8888:
> +	case DRM_FORMAT_XBGR8888:
> +	case DRM_FORMAT_RGBA8888:
> +	case DRM_FORMAT_RGBX8888:
> +	case DRM_FORMAT_BGRA8888:
>  	case DRM_FORMAT_BGRX8888:
> +	case DRM_FORMAT_ARGB2101010:
> +	case DRM_FORMAT_XRGB2101010:
> +	case DRM_FORMAT_ABGR2101010:
> +	case DRM_FORMAT_XBGR2101010:
> +	case DRM_FORMAT_RGBA1010102:
> +	case DRM_FORMAT_RGBX1010102:
> +	case DRM_FORMAT_BGRA1010102:
> +	case DRM_FORMAT_BGRX1010102:
>  		return fill_smpte_rgb32(&info->rgb, planes[0],
>  					width, height, stride);
>  	}
> @@ -810,19 +865,47 @@ fill_tiles(const struct format_info *info, void
> *planes[3], unsigned int width, return fill_tiles_yuv_planar(&info->yuv,
> planes[0], planes[1],
>  					     planes[2], width, height, stride);
> 
> +	case DRM_FORMAT_ARGB4444:
> +	case DRM_FORMAT_XRGB4444:
> +	case DRM_FORMAT_ABGR4444:
> +	case DRM_FORMAT_XBGR4444:
> +	case DRM_FORMAT_RGBA4444:
> +	case DRM_FORMAT_RGBX4444:
> +	case DRM_FORMAT_BGRA4444:
> +	case DRM_FORMAT_BGRX4444:
>  	case DRM_FORMAT_RGB565:
> +	case DRM_FORMAT_BGR565:
>  	case DRM_FORMAT_ARGB1555:
>  	case DRM_FORMAT_XRGB1555:
> +	case DRM_FORMAT_ABGR1555:
> +	case DRM_FORMAT_XBGR1555:
> +	case DRM_FORMAT_RGBA5551:
> +	case DRM_FORMAT_RGBX5551:
> +	case DRM_FORMAT_BGRA5551:
> +	case DRM_FORMAT_BGRX5551:
>  		return fill_tiles_rgb16(&info->rgb, planes[0],
>  					width, height, stride);
> +
>  	case DRM_FORMAT_BGR888:
>  	case DRM_FORMAT_RGB888:
>  		return fill_tiles_rgb24(&info->rgb, planes[0],
>  					width, height, stride);
>  	case DRM_FORMAT_ARGB8888:
> -	case DRM_FORMAT_BGRA8888:
>  	case DRM_FORMAT_XRGB8888:
> +	case DRM_FORMAT_ABGR8888:
> +	case DRM_FORMAT_XBGR8888:
> +	case DRM_FORMAT_RGBA8888:
> +	case DRM_FORMAT_RGBX8888:
> +	case DRM_FORMAT_BGRA8888:
>  	case DRM_FORMAT_BGRX8888:
> +	case DRM_FORMAT_ARGB2101010:
> +	case DRM_FORMAT_XRGB2101010:
> +	case DRM_FORMAT_ABGR2101010:
> +	case DRM_FORMAT_XBGR2101010:
> +	case DRM_FORMAT_RGBA1010102:
> +	case DRM_FORMAT_RGBX1010102:
> +	case DRM_FORMAT_BGRA1010102:
> +	case DRM_FORMAT_BGRX1010102:
>  		return fill_tiles_rgb32(&info->rgb, planes[0],
>  					width, height, stride);
>  	}
> @@ -986,15 +1069,42 @@ create_test_buffer(struct kms_driver *kms, unsigned
> int format, planes[2] = virtual + offsets[2];
>  		break;
> 
> -	case DRM_FORMAT_RGB565:
> +	case DRM_FORMAT_ARGB4444:
> +	case DRM_FORMAT_XRGB4444:
> +	case DRM_FORMAT_ABGR4444:
> +	case DRM_FORMAT_XBGR4444:
> +	case DRM_FORMAT_RGBA4444:
> +	case DRM_FORMAT_RGBX4444:
> +	case DRM_FORMAT_BGRA4444:
> +	case DRM_FORMAT_BGRX4444:
>  	case DRM_FORMAT_ARGB1555:
>  	case DRM_FORMAT_XRGB1555:
> +	case DRM_FORMAT_ABGR1555:
> +	case DRM_FORMAT_XBGR1555:
> +	case DRM_FORMAT_RGBA5551:
> +	case DRM_FORMAT_RGBX5551:
> +	case DRM_FORMAT_BGRA5551:
> +	case DRM_FORMAT_BGRX5551:
> +	case DRM_FORMAT_RGB565:
> +	case DRM_FORMAT_BGR565:
>  	case DRM_FORMAT_BGR888:
>  	case DRM_FORMAT_RGB888:
>  	case DRM_FORMAT_ARGB8888:
> -	case DRM_FORMAT_BGRA8888:
>  	case DRM_FORMAT_XRGB8888:
> +	case DRM_FORMAT_ABGR8888:
> +	case DRM_FORMAT_XBGR8888:
> +	case DRM_FORMAT_RGBA8888:
> +	case DRM_FORMAT_RGBX8888:
> +	case DRM_FORMAT_BGRA8888:
>  	case DRM_FORMAT_BGRX8888:
> +	case DRM_FORMAT_ARGB2101010:
> +	case DRM_FORMAT_XRGB2101010:
> +	case DRM_FORMAT_ABGR2101010:
> +	case DRM_FORMAT_XBGR2101010:
> +	case DRM_FORMAT_RGBA1010102:
> +	case DRM_FORMAT_RGBX1010102:
> +	case DRM_FORMAT_BGRA1010102:
> +	case DRM_FORMAT_BGRX1010102:
>  		offsets[0] = 0;
>  		kms_bo_get_prop(bo, KMS_HANDLE, &handles[0]);
>  		kms_bo_get_prop(bo, KMS_PITCH, &pitches[0]);
-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list