@@ -1803,6 +1803,27 @@ static const u32 skl_plane_formats[] = {
1803
1803
DRM_FORMAT_VYUY ,
1804
1804
};
1805
1805
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
+
1806
1827
static const u32 skl_planar_formats [] = {
1807
1828
DRM_FORMAT_C8 ,
1808
1829
DRM_FORMAT_RGB565 ,
@@ -1838,6 +1859,31 @@ static const uint32_t glk_planar_formats[] = {
1838
1859
DRM_FORMAT_P016 ,
1839
1860
};
1840
1861
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
+
1841
1887
static const u64 skl_plane_format_modifiers_noccs [] = {
1842
1888
I915_FORMAT_MOD_Yf_TILED ,
1843
1889
I915_FORMAT_MOD_Y_TILED ,
@@ -1980,6 +2026,12 @@ static bool skl_plane_format_mod_supported(struct drm_plane *_plane,
1980
2026
case DRM_FORMAT_P010 :
1981
2027
case DRM_FORMAT_P012 :
1982
2028
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 :
1983
2035
if (modifier == I915_FORMAT_MOD_Yf_TILED )
1984
2036
return true;
1985
2037
/* fall through */
@@ -2120,13 +2172,19 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
2120
2172
plane -> update_slave = icl_update_slave ;
2121
2173
2122
2174
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 )) {
2124
2179
formats = glk_planar_formats ;
2125
2180
num_formats = ARRAY_SIZE (glk_planar_formats );
2126
2181
} else {
2127
2182
formats = skl_planar_formats ;
2128
2183
num_formats = ARRAY_SIZE (skl_planar_formats );
2129
2184
}
2185
+ } else if (INTEL_GEN (dev_priv ) >= 11 ) {
2186
+ formats = icl_plane_formats ;
2187
+ num_formats = ARRAY_SIZE (icl_plane_formats );
2130
2188
} else {
2131
2189
formats = skl_plane_formats ;
2132
2190
num_formats = ARRAY_SIZE (skl_plane_formats );
0 commit comments