aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandra Konduru <chandra.konduru@intel.com>2018-05-11 17:33:17 -0400
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2018-05-11 04:19:48 -0400
commit429204f1059909245d8f73b66aa729c6c2807cae (patch)
tree327b350f8beb8a639f6bd4d25b055cbdac0f81c3
parentc0b56ab544c0aaefc0aa5526471f72e2324e002c (diff)
drm/i915: Add NV12 as supported format for sprite plane
This patch adds NV12 to list of supported formats for sprite plane. v2: Rebased (me) v3: Review comments by Ville addressed - Removed skl_plane_formats_with_nv12 and added NV12 case in existing skl_plane_formats - Added the 10bpc RGB formats v4: Addressed review comments from Clinton A Taylor "Why are we adding 10 bit RGB formats with the NV12 series patches? Trying to set XR30 or AB30 results in error returned even though the modes are advertised for the planes" - Removed 10bit RGB formats added previously with NV12 series v5: Missed the Tested-by/Reviewed-by in the previous series Adding the same to commit message in this version. Addressed review comments from Clinton A Taylor "Why are we adding 10 bit RGB formats with the NV12 series patches? Trying to set XR30 or AB30 results in error returned even though the modes are advertised for the planes" - Previous version has 10bit RGB format removed from VLV formats by mistake. Fixing that in this version. Removed 10bit RGB formats added previously with NV12 series for SKL. v6: Addressed review comments by Ville Restricting the NV12 to BXT and PIPE A and B v7: Rebased (me) v8: Rebased (me) Restricting NV12 changes to BXT and KBL Restricting NV12 changes for plane 0 (overlay) v9: Rebased (me) v10: Addressed review comments from Maarten. Adding NV12 to skl_plane_formats itself. v11: Addressed review comments from Shashank Sharma v12: Addressed review comments from Shashank Sharma Made the condition in intel_sprite_plane_create simple and easy to read as suggested. v13: Adding reviewed by tag from Shashank Sharma Addressed review comments from Juha-Pekka Heikkila "NV12 not to be supported by SKL" v14: Addressed review comments from Ville Added skl_planar_formats to include NV12 and a check skl_plane_has_planar in sprite create Added NV12 format to skl_mod_supported. These were review comments from Kristian Høgsberg <hoegsberg@gmail.com> v15: Added reviewed by from Juha-Pekka Heikkila v16: Rebased the series v17: Added all tiling under mod supported for NV12 Credits to Megha Aggarwal v18: Added RB by Maarten and Kristian v19: Addressed review comments from Maarten Made modification to skl_mod_supported Credits-to: Megha Aggarwal <megha.aggarwal@intel.com> Credits-to: Kristian Høgsberg <hoegsberg@gmail.com> Reviewed-by: Kristian Høgsberg <hoegsberg@gmail.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Tested-by: Clinton Taylor <clinton.a.taylor@intel.com> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Shashank Sharma <shashank.sharma@intel.com> Reviewed-by: Clinton Taylor <clinton.a.taylor@intel.com> Signed-off-by: Chandra Konduru <chandra.konduru@intel.com> Signed-off-by: Nabendu Maiti <nabendu.bikash.maiti@intel.com> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/1526074397-10457-7-git-send-email-vidya.srinivas@intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_sprite.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 26de04445aca..1597938d2451 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -1254,6 +1254,19 @@ static uint32_t skl_plane_formats[] = {
1254 DRM_FORMAT_VYUY, 1254 DRM_FORMAT_VYUY,
1255}; 1255};
1256 1256
1257static uint32_t skl_planar_formats[] = {
1258 DRM_FORMAT_RGB565,
1259 DRM_FORMAT_ABGR8888,
1260 DRM_FORMAT_ARGB8888,
1261 DRM_FORMAT_XBGR8888,
1262 DRM_FORMAT_XRGB8888,
1263 DRM_FORMAT_YUYV,
1264 DRM_FORMAT_YVYU,
1265 DRM_FORMAT_UYVY,
1266 DRM_FORMAT_VYUY,
1267 DRM_FORMAT_NV12,
1268};
1269
1257static const uint64_t skl_plane_format_modifiers_noccs[] = { 1270static const uint64_t skl_plane_format_modifiers_noccs[] = {
1258 I915_FORMAT_MOD_Yf_TILED, 1271 I915_FORMAT_MOD_Yf_TILED,
1259 I915_FORMAT_MOD_Y_TILED, 1272 I915_FORMAT_MOD_Y_TILED,
@@ -1348,6 +1361,7 @@ static bool skl_mod_supported(uint32_t format, uint64_t modifier)
1348 case DRM_FORMAT_YVYU: 1361 case DRM_FORMAT_YVYU:
1349 case DRM_FORMAT_UYVY: 1362 case DRM_FORMAT_UYVY:
1350 case DRM_FORMAT_VYUY: 1363 case DRM_FORMAT_VYUY:
1364 case DRM_FORMAT_NV12:
1351 if (modifier == I915_FORMAT_MOD_Yf_TILED) 1365 if (modifier == I915_FORMAT_MOD_Yf_TILED)
1352 return true; 1366 return true;
1353 /* fall through */ 1367 /* fall through */
@@ -1447,8 +1461,14 @@ intel_sprite_plane_create(struct drm_i915_private *dev_priv,
1447 intel_plane->disable_plane = skl_disable_plane; 1461 intel_plane->disable_plane = skl_disable_plane;
1448 intel_plane->get_hw_state = skl_plane_get_hw_state; 1462 intel_plane->get_hw_state = skl_plane_get_hw_state;
1449 1463
1450 plane_formats = skl_plane_formats; 1464 if (skl_plane_has_planar(dev_priv, pipe,
1451 num_plane_formats = ARRAY_SIZE(skl_plane_formats); 1465 PLANE_SPRITE0 + plane)) {
1466 plane_formats = skl_planar_formats;
1467 num_plane_formats = ARRAY_SIZE(skl_planar_formats);
1468 } else {
1469 plane_formats = skl_plane_formats;
1470 num_plane_formats = ARRAY_SIZE(skl_plane_formats);
1471 }
1452 1472
1453 if (skl_plane_has_ccs(dev_priv, pipe, PLANE_SPRITE0 + plane)) 1473 if (skl_plane_has_ccs(dev_priv, pipe, PLANE_SPRITE0 + plane))
1454 modifiers = skl_plane_format_modifiers_ccs; 1474 modifiers = skl_plane_format_modifiers_ccs;