1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker * Copyright 2017 Intel Corporation
3*61046927SAndroid Build Coastguard Worker *
4*61046927SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a
5*61046927SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"),
6*61046927SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation
7*61046927SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*61046927SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the
9*61046927SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions:
10*61046927SAndroid Build Coastguard Worker *
11*61046927SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next
12*61046927SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the
13*61046927SAndroid Build Coastguard Worker * Software.
14*61046927SAndroid Build Coastguard Worker *
15*61046927SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*61046927SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*61046927SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18*61046927SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*61046927SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20*61046927SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21*61046927SAndroid Build Coastguard Worker * IN THE SOFTWARE.
22*61046927SAndroid Build Coastguard Worker */
23*61046927SAndroid Build Coastguard Worker
24*61046927SAndroid Build Coastguard Worker #include <assert.h>
25*61046927SAndroid Build Coastguard Worker #include <stdlib.h>
26*61046927SAndroid Build Coastguard Worker
27*61046927SAndroid Build Coastguard Worker #include "drm-uapi/drm_fourcc.h"
28*61046927SAndroid Build Coastguard Worker #include "drm-uapi/i915_drm.h"
29*61046927SAndroid Build Coastguard Worker
30*61046927SAndroid Build Coastguard Worker #include "isl.h"
31*61046927SAndroid Build Coastguard Worker #include "dev/intel_device_info.h"
32*61046927SAndroid Build Coastguard Worker #include "dev/intel_debug.h"
33*61046927SAndroid Build Coastguard Worker
34*61046927SAndroid Build Coastguard Worker uint32_t
isl_tiling_to_i915_tiling(enum isl_tiling tiling)35*61046927SAndroid Build Coastguard Worker isl_tiling_to_i915_tiling(enum isl_tiling tiling)
36*61046927SAndroid Build Coastguard Worker {
37*61046927SAndroid Build Coastguard Worker switch (tiling) {
38*61046927SAndroid Build Coastguard Worker case ISL_TILING_LINEAR:
39*61046927SAndroid Build Coastguard Worker return I915_TILING_NONE;
40*61046927SAndroid Build Coastguard Worker
41*61046927SAndroid Build Coastguard Worker case ISL_TILING_X:
42*61046927SAndroid Build Coastguard Worker return I915_TILING_X;
43*61046927SAndroid Build Coastguard Worker
44*61046927SAndroid Build Coastguard Worker case ISL_TILING_Y0:
45*61046927SAndroid Build Coastguard Worker case ISL_TILING_HIZ:
46*61046927SAndroid Build Coastguard Worker case ISL_TILING_CCS:
47*61046927SAndroid Build Coastguard Worker return I915_TILING_Y;
48*61046927SAndroid Build Coastguard Worker
49*61046927SAndroid Build Coastguard Worker case ISL_TILING_W:
50*61046927SAndroid Build Coastguard Worker case ISL_TILING_SKL_Yf:
51*61046927SAndroid Build Coastguard Worker case ISL_TILING_SKL_Ys:
52*61046927SAndroid Build Coastguard Worker case ISL_TILING_ICL_Yf:
53*61046927SAndroid Build Coastguard Worker case ISL_TILING_ICL_Ys:
54*61046927SAndroid Build Coastguard Worker case ISL_TILING_4:
55*61046927SAndroid Build Coastguard Worker case ISL_TILING_64:
56*61046927SAndroid Build Coastguard Worker case ISL_TILING_64_XE2:
57*61046927SAndroid Build Coastguard Worker return I915_TILING_NONE;
58*61046927SAndroid Build Coastguard Worker }
59*61046927SAndroid Build Coastguard Worker
60*61046927SAndroid Build Coastguard Worker unreachable("Invalid ISL tiling");
61*61046927SAndroid Build Coastguard Worker }
62*61046927SAndroid Build Coastguard Worker
63*61046927SAndroid Build Coastguard Worker enum isl_tiling
isl_tiling_from_i915_tiling(uint32_t tiling)64*61046927SAndroid Build Coastguard Worker isl_tiling_from_i915_tiling(uint32_t tiling)
65*61046927SAndroid Build Coastguard Worker {
66*61046927SAndroid Build Coastguard Worker switch (tiling) {
67*61046927SAndroid Build Coastguard Worker case I915_TILING_NONE:
68*61046927SAndroid Build Coastguard Worker return ISL_TILING_LINEAR;
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard Worker case I915_TILING_X:
71*61046927SAndroid Build Coastguard Worker return ISL_TILING_X;
72*61046927SAndroid Build Coastguard Worker
73*61046927SAndroid Build Coastguard Worker case I915_TILING_Y:
74*61046927SAndroid Build Coastguard Worker return ISL_TILING_Y0;
75*61046927SAndroid Build Coastguard Worker }
76*61046927SAndroid Build Coastguard Worker
77*61046927SAndroid Build Coastguard Worker unreachable("Invalid i915 tiling");
78*61046927SAndroid Build Coastguard Worker }
79*61046927SAndroid Build Coastguard Worker
80*61046927SAndroid Build Coastguard Worker /** Sentinel is DRM_FORMAT_MOD_INVALID. */
81*61046927SAndroid Build Coastguard Worker const struct isl_drm_modifier_info
82*61046927SAndroid Build Coastguard Worker isl_drm_modifier_info_list[] = {
83*61046927SAndroid Build Coastguard Worker {
84*61046927SAndroid Build Coastguard Worker .modifier = DRM_FORMAT_MOD_NONE,
85*61046927SAndroid Build Coastguard Worker .name = "DRM_FORMAT_MOD_NONE",
86*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_LINEAR,
87*61046927SAndroid Build Coastguard Worker },
88*61046927SAndroid Build Coastguard Worker {
89*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_X_TILED,
90*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_X_TILED",
91*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_X,
92*61046927SAndroid Build Coastguard Worker },
93*61046927SAndroid Build Coastguard Worker {
94*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_Y_TILED,
95*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_Y_TILED",
96*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_Y0,
97*61046927SAndroid Build Coastguard Worker },
98*61046927SAndroid Build Coastguard Worker {
99*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_Y_TILED_CCS,
100*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_Y_TILED_CCS",
101*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_Y0,
102*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
103*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
104*61046927SAndroid Build Coastguard Worker },
105*61046927SAndroid Build Coastguard Worker {
106*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
107*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS",
108*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_Y0,
109*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
110*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
111*61046927SAndroid Build Coastguard Worker },
112*61046927SAndroid Build Coastguard Worker {
113*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS,
114*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS",
115*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_Y0,
116*61046927SAndroid Build Coastguard Worker .supports_media_compression = true,
117*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
118*61046927SAndroid Build Coastguard Worker },
119*61046927SAndroid Build Coastguard Worker {
120*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC,
121*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC",
122*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_Y0,
123*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
124*61046927SAndroid Build Coastguard Worker .supports_clear_color = true,
125*61046927SAndroid Build Coastguard Worker },
126*61046927SAndroid Build Coastguard Worker {
127*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED,
128*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED",
129*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
130*61046927SAndroid Build Coastguard Worker },
131*61046927SAndroid Build Coastguard Worker {
132*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED_DG2_RC_CCS,
133*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED_DG2_RC_CCS",
134*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
135*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
136*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
137*61046927SAndroid Build Coastguard Worker },
138*61046927SAndroid Build Coastguard Worker {
139*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED_DG2_MC_CCS,
140*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED_DG2_MC_CCS",
141*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
142*61046927SAndroid Build Coastguard Worker .supports_media_compression = true,
143*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
144*61046927SAndroid Build Coastguard Worker },
145*61046927SAndroid Build Coastguard Worker {
146*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC,
147*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC",
148*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
149*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
150*61046927SAndroid Build Coastguard Worker .supports_clear_color = true,
151*61046927SAndroid Build Coastguard Worker },
152*61046927SAndroid Build Coastguard Worker {
153*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED_MTL_RC_CCS,
154*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED_MTL_RC_CCS",
155*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
156*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
157*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
158*61046927SAndroid Build Coastguard Worker },
159*61046927SAndroid Build Coastguard Worker {
160*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC,
161*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC",
162*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
163*61046927SAndroid Build Coastguard Worker .supports_render_compression = true,
164*61046927SAndroid Build Coastguard Worker .supports_clear_color = true,
165*61046927SAndroid Build Coastguard Worker },
166*61046927SAndroid Build Coastguard Worker {
167*61046927SAndroid Build Coastguard Worker .modifier = I915_FORMAT_MOD_4_TILED_MTL_MC_CCS,
168*61046927SAndroid Build Coastguard Worker .name = "I915_FORMAT_MOD_4_TILED_MTL_MC_CCS",
169*61046927SAndroid Build Coastguard Worker .tiling = ISL_TILING_4,
170*61046927SAndroid Build Coastguard Worker .supports_media_compression = true,
171*61046927SAndroid Build Coastguard Worker .supports_clear_color = false,
172*61046927SAndroid Build Coastguard Worker },
173*61046927SAndroid Build Coastguard Worker {
174*61046927SAndroid Build Coastguard Worker .modifier = DRM_FORMAT_MOD_INVALID,
175*61046927SAndroid Build Coastguard Worker },
176*61046927SAndroid Build Coastguard Worker };
177*61046927SAndroid Build Coastguard Worker
178*61046927SAndroid Build Coastguard Worker const struct isl_drm_modifier_info *
isl_drm_modifier_get_info(uint64_t modifier)179*61046927SAndroid Build Coastguard Worker isl_drm_modifier_get_info(uint64_t modifier)
180*61046927SAndroid Build Coastguard Worker {
181*61046927SAndroid Build Coastguard Worker isl_drm_modifier_info_for_each(info) {
182*61046927SAndroid Build Coastguard Worker if (info->modifier == modifier)
183*61046927SAndroid Build Coastguard Worker return info;
184*61046927SAndroid Build Coastguard Worker }
185*61046927SAndroid Build Coastguard Worker
186*61046927SAndroid Build Coastguard Worker return NULL;
187*61046927SAndroid Build Coastguard Worker }
188*61046927SAndroid Build Coastguard Worker
189*61046927SAndroid Build Coastguard Worker uint32_t
isl_drm_modifier_get_score(const struct intel_device_info * devinfo,uint64_t modifier)190*61046927SAndroid Build Coastguard Worker isl_drm_modifier_get_score(const struct intel_device_info *devinfo,
191*61046927SAndroid Build Coastguard Worker uint64_t modifier)
192*61046927SAndroid Build Coastguard Worker {
193*61046927SAndroid Build Coastguard Worker /* We want to know the absence of the debug environment variable
194*61046927SAndroid Build Coastguard Worker * and don't want to provide a default value either, so we don't
195*61046927SAndroid Build Coastguard Worker * use debug_get_num_option() here.
196*61046927SAndroid Build Coastguard Worker */
197*61046927SAndroid Build Coastguard Worker const char *mod_str = getenv("INTEL_MODIFIER_OVERRIDE");
198*61046927SAndroid Build Coastguard Worker if (mod_str != NULL) {
199*61046927SAndroid Build Coastguard Worker return modifier == strtoul(mod_str, NULL, 0);
200*61046927SAndroid Build Coastguard Worker }
201*61046927SAndroid Build Coastguard Worker /* FINISHME: Add gfx12 modifiers */
202*61046927SAndroid Build Coastguard Worker switch (modifier) {
203*61046927SAndroid Build Coastguard Worker default:
204*61046927SAndroid Build Coastguard Worker return 0;
205*61046927SAndroid Build Coastguard Worker case DRM_FORMAT_MOD_LINEAR:
206*61046927SAndroid Build Coastguard Worker return 1;
207*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_X_TILED:
208*61046927SAndroid Build Coastguard Worker return 2;
209*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_Y_TILED:
210*61046927SAndroid Build Coastguard Worker /* Gfx12.5 doesn't have Y-tiling. */
211*61046927SAndroid Build Coastguard Worker if (devinfo->verx10 >= 125)
212*61046927SAndroid Build Coastguard Worker return 0;
213*61046927SAndroid Build Coastguard Worker
214*61046927SAndroid Build Coastguard Worker return 3;
215*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_Y_TILED_CCS:
216*61046927SAndroid Build Coastguard Worker /* Not supported before Gfx9 and also Gfx12's CCS layout differs from
217*61046927SAndroid Build Coastguard Worker * Gfx9-11.
218*61046927SAndroid Build Coastguard Worker */
219*61046927SAndroid Build Coastguard Worker if (devinfo->ver <= 8 || devinfo->ver >= 12)
220*61046927SAndroid Build Coastguard Worker return 0;
221*61046927SAndroid Build Coastguard Worker
222*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS))
223*61046927SAndroid Build Coastguard Worker return 0;
224*61046927SAndroid Build Coastguard Worker
225*61046927SAndroid Build Coastguard Worker return 4;
226*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS:
227*61046927SAndroid Build Coastguard Worker if (devinfo->verx10 != 120)
228*61046927SAndroid Build Coastguard Worker return 0;
229*61046927SAndroid Build Coastguard Worker
230*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS))
231*61046927SAndroid Build Coastguard Worker return 0;
232*61046927SAndroid Build Coastguard Worker
233*61046927SAndroid Build Coastguard Worker return 4;
234*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC:
235*61046927SAndroid Build Coastguard Worker if (devinfo->verx10 != 120)
236*61046927SAndroid Build Coastguard Worker return 0;
237*61046927SAndroid Build Coastguard Worker
238*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS) || INTEL_DEBUG(DEBUG_NO_FAST_CLEAR))
239*61046927SAndroid Build Coastguard Worker return 0;
240*61046927SAndroid Build Coastguard Worker
241*61046927SAndroid Build Coastguard Worker return 5;
242*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_4_TILED:
243*61046927SAndroid Build Coastguard Worker /* Gfx12.5 introduces Tile4. */
244*61046927SAndroid Build Coastguard Worker if (devinfo->verx10 < 125)
245*61046927SAndroid Build Coastguard Worker return 0;
246*61046927SAndroid Build Coastguard Worker
247*61046927SAndroid Build Coastguard Worker return 3;
248*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS:
249*61046927SAndroid Build Coastguard Worker if (!intel_device_info_is_dg2(devinfo))
250*61046927SAndroid Build Coastguard Worker return 0;
251*61046927SAndroid Build Coastguard Worker
252*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS))
253*61046927SAndroid Build Coastguard Worker return 0;
254*61046927SAndroid Build Coastguard Worker
255*61046927SAndroid Build Coastguard Worker return 4;
256*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC:
257*61046927SAndroid Build Coastguard Worker if (!intel_device_info_is_dg2(devinfo))
258*61046927SAndroid Build Coastguard Worker return 0;
259*61046927SAndroid Build Coastguard Worker
260*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS) || INTEL_DEBUG(DEBUG_NO_FAST_CLEAR))
261*61046927SAndroid Build Coastguard Worker return 0;
262*61046927SAndroid Build Coastguard Worker
263*61046927SAndroid Build Coastguard Worker return 5;
264*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
265*61046927SAndroid Build Coastguard Worker if (!intel_device_info_is_mtl_or_arl(devinfo))
266*61046927SAndroid Build Coastguard Worker return 0;
267*61046927SAndroid Build Coastguard Worker
268*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS))
269*61046927SAndroid Build Coastguard Worker return 0;
270*61046927SAndroid Build Coastguard Worker
271*61046927SAndroid Build Coastguard Worker return 4;
272*61046927SAndroid Build Coastguard Worker case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
273*61046927SAndroid Build Coastguard Worker if (!intel_device_info_is_mtl_or_arl(devinfo))
274*61046927SAndroid Build Coastguard Worker return 0;
275*61046927SAndroid Build Coastguard Worker
276*61046927SAndroid Build Coastguard Worker if (INTEL_DEBUG(DEBUG_NO_CCS) || INTEL_DEBUG(DEBUG_NO_FAST_CLEAR))
277*61046927SAndroid Build Coastguard Worker return 0;
278*61046927SAndroid Build Coastguard Worker
279*61046927SAndroid Build Coastguard Worker return 5;
280*61046927SAndroid Build Coastguard Worker }
281*61046927SAndroid Build Coastguard Worker }
282*61046927SAndroid Build Coastguard Worker
283*61046927SAndroid Build Coastguard Worker uint32_t
isl_drm_modifier_get_plane_count(const struct intel_device_info * devinfo,uint64_t modifier,uint32_t fmt_planes)284*61046927SAndroid Build Coastguard Worker isl_drm_modifier_get_plane_count(const struct intel_device_info *devinfo,
285*61046927SAndroid Build Coastguard Worker uint64_t modifier,
286*61046927SAndroid Build Coastguard Worker uint32_t fmt_planes)
287*61046927SAndroid Build Coastguard Worker {
288*61046927SAndroid Build Coastguard Worker /* This function could return the wrong value if the modifier is not
289*61046927SAndroid Build Coastguard Worker * supported by the device.
290*61046927SAndroid Build Coastguard Worker */
291*61046927SAndroid Build Coastguard Worker assert(isl_drm_modifier_get_score(devinfo, modifier) > 0);
292*61046927SAndroid Build Coastguard Worker
293*61046927SAndroid Build Coastguard Worker /* Planar images don't support clear color. */
294*61046927SAndroid Build Coastguard Worker if (isl_drm_modifier_get_info(modifier)->supports_clear_color)
295*61046927SAndroid Build Coastguard Worker assert(fmt_planes == 1);
296*61046927SAndroid Build Coastguard Worker
297*61046927SAndroid Build Coastguard Worker if (devinfo->has_flat_ccs) {
298*61046927SAndroid Build Coastguard Worker if (isl_drm_modifier_get_info(modifier)->supports_clear_color)
299*61046927SAndroid Build Coastguard Worker return 2 * fmt_planes;
300*61046927SAndroid Build Coastguard Worker else
301*61046927SAndroid Build Coastguard Worker return 1 * fmt_planes;
302*61046927SAndroid Build Coastguard Worker } else {
303*61046927SAndroid Build Coastguard Worker if (isl_drm_modifier_get_info(modifier)->supports_clear_color)
304*61046927SAndroid Build Coastguard Worker return 3 * fmt_planes;
305*61046927SAndroid Build Coastguard Worker else if (isl_drm_modifier_has_aux(modifier))
306*61046927SAndroid Build Coastguard Worker return 2 * fmt_planes;
307*61046927SAndroid Build Coastguard Worker else
308*61046927SAndroid Build Coastguard Worker return 1 * fmt_planes;
309*61046927SAndroid Build Coastguard Worker }
310*61046927SAndroid Build Coastguard Worker }
311