drm/vc4: Limit SAND tiling support to semiplanar YUV420 formats

Submitted by Paul Kocialkowski on Dec. 14, 2018, 2:12 p.m.

Details

Message ID 20181214141218.12671-1-paul.kocialkowski@bootlin.com
State New
Headers show
Series "drm/vc4: Limit SAND tiling support to semiplanar YUV420 formats" ( rev: 1 ) in DRI devel

Not browsing as part of any series.

Commit Message

Paul Kocialkowski Dec. 14, 2018, 2:12 p.m.
Despite what the HVS documentation indicates, the VC4 does not actually
support SAND tiling modes for any RGB format and only semiplanar YUV420
formats (NV12/NV21) can be used in these tiling modes.

The driver currently claims to support RGB formats for the associated
modifiers, so remove them from the supported list in the
format_mod_supported helper for RGB formats.

Remove further checks that are no longer necessary along the way, since
semi-planar YUV420 formats support every SAND tiling mode.

Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
---
 drivers/gpu/drm/vc4/vc4_plane.c | 17 +----------------
 1 file changed, 1 insertion(+), 16 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
index 75db62cbe468..a176e7d8af27 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
@@ -596,20 +596,7 @@  static int vc4_plane_mode_set(struct drm_plane *plane,
 	case DRM_FORMAT_MOD_BROADCOM_SAND256: {
 		uint32_t param = fourcc_mod_broadcom_param(fb->modifier);
 
-		/* Column-based NV12 or RGBA.
-		 */
-		if (fb->format->num_planes > 1) {
-			if (hvs_format != HVS_PIXEL_FORMAT_YCBCR_YUV420_2PLANE) {
-				DRM_DEBUG_KMS("SAND format only valid for NV12/21");
-				return -EINVAL;
-			}
-			hvs_format = HVS_PIXEL_FORMAT_H264;
-		} else {
-			if (base_format_mod == DRM_FORMAT_MOD_BROADCOM_SAND256) {
-				DRM_DEBUG_KMS("SAND256 format only valid for H.264");
-				return -EINVAL;
-			}
-		}
+		hvs_format = HVS_PIXEL_FORMAT_H264;
 
 		switch (base_format_mod) {
 		case DRM_FORMAT_MOD_BROADCOM_SAND64:
@@ -1050,8 +1037,6 @@  static bool vc4_format_mod_supported(struct drm_plane *plane,
 		switch (fourcc_mod_broadcom_mod(modifier)) {
 		case DRM_FORMAT_MOD_LINEAR:
 		case DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED:
-		case DRM_FORMAT_MOD_BROADCOM_SAND64:
-		case DRM_FORMAT_MOD_BROADCOM_SAND128:
 			return true;
 		default:
 			return false;

Comments

Paul Kocialkowski <paul.kocialkowski@bootlin.com> writes:

> Despite what the HVS documentation indicates, the VC4 does not actually
> support SAND tiling modes for any RGB format and only semiplanar YUV420
> formats (NV12/NV21) can be used in these tiling modes.
>
> The driver currently claims to support RGB formats for the associated
> modifiers, so remove them from the supported list in the
> format_mod_supported helper for RGB formats.
>
> Remove further checks that are no longer necessary along the way, since
> semi-planar YUV420 formats support every SAND tiling mode.
>
> Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>

Reviewed-by: Eric Anholt <eric@anholt.net>
On Fri, Dec 14, 2018 at 08:16:32AM -0800, Eric Anholt wrote:
> Paul Kocialkowski <paul.kocialkowski@bootlin.com> writes:
> 
> > Despite what the HVS documentation indicates, the VC4 does not actually
> > support SAND tiling modes for any RGB format and only semiplanar YUV420
> > formats (NV12/NV21) can be used in these tiling modes.
> >
> > The driver currently claims to support RGB formats for the associated
> > modifiers, so remove them from the supported list in the
> > format_mod_supported helper for RGB formats.
> >
> > Remove further checks that are no longer necessary along the way, since
> > semi-planar YUV420 formats support every SAND tiling mode.
> >
> > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
> 
> Reviewed-by: Eric Anholt <eric@anholt.net>

Applied,

Maxime