Skip to content

Commit 296e9b1

Browse files
swatish2-linuxmlankhorst
authored andcommitted
drm/i915/icl: Enabling Y2xx and Y4xx (xx:10/12/16) formats for universal planes
Signed-off-by: Swati Sharma <swati2.sharma@intel.com> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/1551700595-21481-7-git-send-email-swati2.sharma@intel.com
1 parent 696fa00 commit 296e9b1

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

drivers/gpu/drm/i915/intel_display.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2683,6 +2683,18 @@ int skl_format_to_fourcc(int format, bool rgb_order, bool alpha)
26832683
return DRM_FORMAT_P012;
26842684
case PLANE_CTL_FORMAT_P016:
26852685
return DRM_FORMAT_P016;
2686+
case PLANE_CTL_FORMAT_Y210:
2687+
return DRM_FORMAT_Y210;
2688+
case PLANE_CTL_FORMAT_Y212:
2689+
return DRM_FORMAT_Y212;
2690+
case PLANE_CTL_FORMAT_Y216:
2691+
return DRM_FORMAT_Y216;
2692+
case PLANE_CTL_FORMAT_Y410:
2693+
return DRM_FORMAT_Y410;
2694+
case PLANE_CTL_FORMAT_Y412:
2695+
return DRM_FORMAT_Y412;
2696+
case PLANE_CTL_FORMAT_Y416:
2697+
return DRM_FORMAT_Y416;
26862698
default:
26872699
case PLANE_CTL_FORMAT_XRGB_8888:
26882700
if (rgb_order) {
@@ -3612,6 +3624,18 @@ static u32 skl_plane_ctl_format(u32 pixel_format)
36123624
return PLANE_CTL_FORMAT_P012;
36133625
case DRM_FORMAT_P016:
36143626
return PLANE_CTL_FORMAT_P016;
3627+
case DRM_FORMAT_Y210:
3628+
return PLANE_CTL_FORMAT_Y210;
3629+
case DRM_FORMAT_Y212:
3630+
return PLANE_CTL_FORMAT_Y212;
3631+
case DRM_FORMAT_Y216:
3632+
return PLANE_CTL_FORMAT_Y216;
3633+
case DRM_FORMAT_Y410:
3634+
return PLANE_CTL_FORMAT_Y410;
3635+
case DRM_FORMAT_Y412:
3636+
return PLANE_CTL_FORMAT_Y412;
3637+
case DRM_FORMAT_Y416:
3638+
return PLANE_CTL_FORMAT_Y416;
36153639
default:
36163640
MISSING_CASE(pixel_format);
36173641
}
@@ -5164,6 +5188,12 @@ static int skl_update_scaler_plane(struct intel_crtc_state *crtc_state,
51645188
case DRM_FORMAT_P010:
51655189
case DRM_FORMAT_P012:
51665190
case DRM_FORMAT_P016:
5191+
case DRM_FORMAT_Y210:
5192+
case DRM_FORMAT_Y212:
5193+
case DRM_FORMAT_Y216:
5194+
case DRM_FORMAT_Y410:
5195+
case DRM_FORMAT_Y412:
5196+
case DRM_FORMAT_Y416:
51675197
break;
51685198
default:
51695199
DRM_DEBUG_KMS("[PLANE:%d:%s] FB:%d unsupported scaling format 0x%x\n",

drivers/gpu/drm/i915/intel_sprite.c

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1803,6 +1803,27 @@ static const u32 skl_plane_formats[] = {
18031803
DRM_FORMAT_VYUY,
18041804
};
18051805

1806+
static const uint32_t icl_plane_formats[] = {
1807+
DRM_FORMAT_C8,
1808+
DRM_FORMAT_RGB565,
1809+
DRM_FORMAT_XRGB8888,
1810+
DRM_FORMAT_XBGR8888,
1811+
DRM_FORMAT_ARGB8888,
1812+
DRM_FORMAT_ABGR8888,
1813+
DRM_FORMAT_XRGB2101010,
1814+
DRM_FORMAT_XBGR2101010,
1815+
DRM_FORMAT_YUYV,
1816+
DRM_FORMAT_YVYU,
1817+
DRM_FORMAT_UYVY,
1818+
DRM_FORMAT_VYUY,
1819+
DRM_FORMAT_Y210,
1820+
DRM_FORMAT_Y212,
1821+
DRM_FORMAT_Y216,
1822+
DRM_FORMAT_Y410,
1823+
DRM_FORMAT_Y412,
1824+
DRM_FORMAT_Y416,
1825+
};
1826+
18061827
static const u32 skl_planar_formats[] = {
18071828
DRM_FORMAT_C8,
18081829
DRM_FORMAT_RGB565,
@@ -1838,6 +1859,31 @@ static const uint32_t glk_planar_formats[] = {
18381859
DRM_FORMAT_P016,
18391860
};
18401861

1862+
static const uint32_t icl_planar_formats[] = {
1863+
DRM_FORMAT_C8,
1864+
DRM_FORMAT_RGB565,
1865+
DRM_FORMAT_XRGB8888,
1866+
DRM_FORMAT_XBGR8888,
1867+
DRM_FORMAT_ARGB8888,
1868+
DRM_FORMAT_ABGR8888,
1869+
DRM_FORMAT_XRGB2101010,
1870+
DRM_FORMAT_XBGR2101010,
1871+
DRM_FORMAT_YUYV,
1872+
DRM_FORMAT_YVYU,
1873+
DRM_FORMAT_UYVY,
1874+
DRM_FORMAT_VYUY,
1875+
DRM_FORMAT_NV12,
1876+
DRM_FORMAT_P010,
1877+
DRM_FORMAT_P012,
1878+
DRM_FORMAT_P016,
1879+
DRM_FORMAT_Y210,
1880+
DRM_FORMAT_Y212,
1881+
DRM_FORMAT_Y216,
1882+
DRM_FORMAT_Y410,
1883+
DRM_FORMAT_Y412,
1884+
DRM_FORMAT_Y416,
1885+
};
1886+
18411887
static const u64 skl_plane_format_modifiers_noccs[] = {
18421888
I915_FORMAT_MOD_Yf_TILED,
18431889
I915_FORMAT_MOD_Y_TILED,
@@ -1980,6 +2026,12 @@ static bool skl_plane_format_mod_supported(struct drm_plane *_plane,
19802026
case DRM_FORMAT_P010:
19812027
case DRM_FORMAT_P012:
19822028
case DRM_FORMAT_P016:
2029+
case DRM_FORMAT_Y210:
2030+
case DRM_FORMAT_Y212:
2031+
case DRM_FORMAT_Y216:
2032+
case DRM_FORMAT_Y410:
2033+
case DRM_FORMAT_Y412:
2034+
case DRM_FORMAT_Y416:
19832035
if (modifier == I915_FORMAT_MOD_Yf_TILED)
19842036
return true;
19852037
/* fall through */
@@ -2120,13 +2172,19 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
21202172
plane->update_slave = icl_update_slave;
21212173

21222174
if (skl_plane_has_planar(dev_priv, pipe, plane_id)) {
2123-
if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) {
2175+
if (INTEL_GEN(dev_priv) >= 11) {
2176+
formats = icl_planar_formats;
2177+
num_formats = ARRAY_SIZE(icl_planar_formats);
2178+
} else if (INTEL_GEN(dev_priv) == 10 || IS_GEMINILAKE(dev_priv)) {
21242179
formats = glk_planar_formats;
21252180
num_formats = ARRAY_SIZE(glk_planar_formats);
21262181
} else {
21272182
formats = skl_planar_formats;
21282183
num_formats = ARRAY_SIZE(skl_planar_formats);
21292184
}
2185+
} else if (INTEL_GEN(dev_priv) >= 11) {
2186+
formats = icl_plane_formats;
2187+
num_formats = ARRAY_SIZE(icl_plane_formats);
21302188
} else {
21312189
formats = skl_plane_formats;
21322190
num_formats = ARRAY_SIZE(skl_plane_formats);

0 commit comments

Comments
 (0)