1bf215546Sopenharmony_ci/*
2bf215546Sopenharmony_ci * Copyright © 2020 Google LLC
3bf215546Sopenharmony_ci *
4bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a
5bf215546Sopenharmony_ci * copy of this software and associated documentation files (the "Software"),
6bf215546Sopenharmony_ci * to deal in the Software without restriction, including without limitation
7bf215546Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8bf215546Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the
9bf215546Sopenharmony_ci * Software is furnished to do so, subject to the following conditions:
10bf215546Sopenharmony_ci *
11bf215546Sopenharmony_ci * The above copyright notice and this permission notice (including the next
12bf215546Sopenharmony_ci * paragraph) shall be included in all copies or substantial portions of the
13bf215546Sopenharmony_ci * Software.
14bf215546Sopenharmony_ci *
15bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16bf215546Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17bf215546Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18bf215546Sopenharmony_ci * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19bf215546Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20bf215546Sopenharmony_ci * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21bf215546Sopenharmony_ci * IN THE SOFTWARE.
22bf215546Sopenharmony_ci */
23bf215546Sopenharmony_ci
24bf215546Sopenharmony_ci#include "freedreno_layout.h"
25bf215546Sopenharmony_ci#include "fd_layout_test.h"
26bf215546Sopenharmony_ci#include "adreno_common.xml.h"
27bf215546Sopenharmony_ci#include "adreno_pm4.xml.h"
28bf215546Sopenharmony_ci#include "a6xx.xml.h"
29bf215546Sopenharmony_ci
30bf215546Sopenharmony_ci#include <stdio.h>
31bf215546Sopenharmony_ci
32bf215546Sopenharmony_cistatic const struct testcase
33bf215546Sopenharmony_ci   testcases[] =
34bf215546Sopenharmony_ci      {
35bf215546Sopenharmony_ci         /* A straightforward first testcase, linear, with an obvious format. */
36bf215546Sopenharmony_ci         {
37bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
38bf215546Sopenharmony_ci            .layout =
39bf215546Sopenharmony_ci               {
40bf215546Sopenharmony_ci                  .width0 = 32,
41bf215546Sopenharmony_ci                  .height0 = 32,
42bf215546Sopenharmony_ci                  .slices =
43bf215546Sopenharmony_ci                     {
44bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 256},
45bf215546Sopenharmony_ci                        {.offset = 8192, .pitch = 256},
46bf215546Sopenharmony_ci                        {.offset = 12288, .pitch = 256},
47bf215546Sopenharmony_ci                        {.offset = 14336, .pitch = 256},
48bf215546Sopenharmony_ci                        {.offset = 15360, .pitch = 256},
49bf215546Sopenharmony_ci                        {.offset = 15872, .pitch = 256},
50bf215546Sopenharmony_ci                     },
51bf215546Sopenharmony_ci               },
52bf215546Sopenharmony_ci         },
53bf215546Sopenharmony_ci
54bf215546Sopenharmony_ci         /* A tiled/ubwc layout from the blob driver, at a size where the a630
55bf215546Sopenharmony_ci          * blob driver does something interesting for linear.
56bf215546Sopenharmony_ci          */
57bf215546Sopenharmony_ci         {
58bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
59bf215546Sopenharmony_ci            .layout =
60bf215546Sopenharmony_ci               {
61bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
62bf215546Sopenharmony_ci                  .ubwc = true,
63bf215546Sopenharmony_ci                  .width0 = 1024,
64bf215546Sopenharmony_ci                  .height0 = 1,
65bf215546Sopenharmony_ci                  .slices =
66bf215546Sopenharmony_ci                     {
67bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 4096},
68bf215546Sopenharmony_ci                        {.offset = 65536, .pitch = 2048},
69bf215546Sopenharmony_ci                        {.offset = 98304, .pitch = 1024},
70bf215546Sopenharmony_ci                        {.offset = 114688, .pitch = 512},
71bf215546Sopenharmony_ci                        {.offset = 122880, .pitch = 256},
72bf215546Sopenharmony_ci                        {.offset = 126976, .pitch = 256},
73bf215546Sopenharmony_ci                        {.offset = 131072, .pitch = 256},
74bf215546Sopenharmony_ci                        {.offset = 135168, .pitch = 256},
75bf215546Sopenharmony_ci                        {.offset = 139264, .pitch = 256},
76bf215546Sopenharmony_ci                        {.offset = 143360, .pitch = 256},
77bf215546Sopenharmony_ci                        {.offset = 147456, .pitch = 256},
78bf215546Sopenharmony_ci                     },
79bf215546Sopenharmony_ci                  .ubwc_slices =
80bf215546Sopenharmony_ci                     {
81bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 64},
82bf215546Sopenharmony_ci                        {.offset = 4096, .pitch = 64},
83bf215546Sopenharmony_ci                        {.offset = 8192, .pitch = 64},
84bf215546Sopenharmony_ci                        {.offset = 12288, .pitch = 64},
85bf215546Sopenharmony_ci                        {.offset = 16384, .pitch = 64},
86bf215546Sopenharmony_ci                        {.offset = 20480, .pitch = 64},
87bf215546Sopenharmony_ci                        {.offset = 24576, .pitch = 64},
88bf215546Sopenharmony_ci                        {.offset = 28672, .pitch = 64},
89bf215546Sopenharmony_ci                        {.offset = 32768, .pitch = 64},
90bf215546Sopenharmony_ci                        {.offset = 36864, .pitch = 64},
91bf215546Sopenharmony_ci                        {.offset = 40960, .pitch = 64},
92bf215546Sopenharmony_ci                     },
93bf215546Sopenharmony_ci               },
94bf215546Sopenharmony_ci         },
95bf215546Sopenharmony_ci
96bf215546Sopenharmony_ci/* An interesting layout from the blob driver on a630, showing that
97bf215546Sopenharmony_ci * per-level pitch must be derived from level 0's pitch, not width0.  We
98bf215546Sopenharmony_ci * don't do this level 0 pitch disalignment (we pick 4096), so disabled
99bf215546Sopenharmony_ci * this test for now.
100bf215546Sopenharmony_ci */
101bf215546Sopenharmony_ci#if 0
102bf215546Sopenharmony_ci	{
103bf215546Sopenharmony_ci		.format = PIPE_FORMAT_R8G8B8A8_UNORM,
104bf215546Sopenharmony_ci		.layout = {
105bf215546Sopenharmony_ci			.width0 = 1024, .height0 = 1,
106bf215546Sopenharmony_ci			.slices = {
107bf215546Sopenharmony_ci				{ .offset = 0, .pitch = 5120 },
108bf215546Sopenharmony_ci				{ .offset = 5120, .pitch = 2560 },
109bf215546Sopenharmony_ci				{ .offset = 7680, .pitch = 1280 },
110bf215546Sopenharmony_ci				{ .offset = 8960, .pitch = 768 },
111bf215546Sopenharmony_ci				{ .offset = 9728, .pitch = 512 },
112bf215546Sopenharmony_ci				{ .offset = 10240, .pitch = 256 },
113bf215546Sopenharmony_ci				{ .offset = 10496, .pitch = 256 },
114bf215546Sopenharmony_ci				{ .offset = 10752, .pitch = 256 },
115bf215546Sopenharmony_ci				{ .offset = 11008, .pitch = 256 },
116bf215546Sopenharmony_ci				{ .offset = 11264, .pitch = 256 },
117bf215546Sopenharmony_ci				{ .offset = 11520, .pitch = 256 },
118bf215546Sopenharmony_ci			},
119bf215546Sopenharmony_ci		},
120bf215546Sopenharmony_ci	},
121bf215546Sopenharmony_ci#endif
122bf215546Sopenharmony_ci
123bf215546Sopenharmony_ci         /* A layout that we failed on (129 wide has a surprise level 1 pitch
124bf215546Sopenharmony_ci          * increase), and the sizes bracketing it.
125bf215546Sopenharmony_ci          */
126bf215546Sopenharmony_ci         {
127bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
128bf215546Sopenharmony_ci            .layout =
129bf215546Sopenharmony_ci               {
130bf215546Sopenharmony_ci                  .width0 = 128,
131bf215546Sopenharmony_ci                  .height0 = 1,
132bf215546Sopenharmony_ci                  .slices =
133bf215546Sopenharmony_ci                     {
134bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 512},
135bf215546Sopenharmony_ci                        {.offset = 512, .pitch = 256},
136bf215546Sopenharmony_ci                        {.offset = 768, .pitch = 256},
137bf215546Sopenharmony_ci                        {.offset = 1024, .pitch = 256},
138bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 256},
139bf215546Sopenharmony_ci                        {.offset = 1536, .pitch = 256},
140bf215546Sopenharmony_ci                        {.offset = 1792, .pitch = 256},
141bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 256},
142bf215546Sopenharmony_ci                     },
143bf215546Sopenharmony_ci               },
144bf215546Sopenharmony_ci         },
145bf215546Sopenharmony_ci         {
146bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
147bf215546Sopenharmony_ci            .layout =
148bf215546Sopenharmony_ci               {
149bf215546Sopenharmony_ci                  .width0 = 129,
150bf215546Sopenharmony_ci                  .height0 = 1,
151bf215546Sopenharmony_ci                  .slices =
152bf215546Sopenharmony_ci                     {
153bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 768},
154bf215546Sopenharmony_ci                        {.offset = 768, .pitch = 512},
155bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 256},
156bf215546Sopenharmony_ci                        {.offset = 1536, .pitch = 256},
157bf215546Sopenharmony_ci                        {.offset = 1792, .pitch = 256},
158bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 256},
159bf215546Sopenharmony_ci                        {.offset = 2304, .pitch = 256},
160bf215546Sopenharmony_ci                        {.offset = 2560, .pitch = 256},
161bf215546Sopenharmony_ci                     },
162bf215546Sopenharmony_ci               },
163bf215546Sopenharmony_ci         },
164bf215546Sopenharmony_ci         {
165bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
166bf215546Sopenharmony_ci            .layout =
167bf215546Sopenharmony_ci               {
168bf215546Sopenharmony_ci                  .width0 = 130,
169bf215546Sopenharmony_ci                  .height0 = 1,
170bf215546Sopenharmony_ci                  .slices =
171bf215546Sopenharmony_ci                     {
172bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 768},
173bf215546Sopenharmony_ci                        {.offset = 768, .pitch = 512},
174bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 256},
175bf215546Sopenharmony_ci                        {.offset = 1536, .pitch = 256},
176bf215546Sopenharmony_ci                        {.offset = 1792, .pitch = 256},
177bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 256},
178bf215546Sopenharmony_ci                        {.offset = 2304, .pitch = 256},
179bf215546Sopenharmony_ci                        {.offset = 2560, .pitch = 256},
180bf215546Sopenharmony_ci                     },
181bf215546Sopenharmony_ci               },
182bf215546Sopenharmony_ci         },
183bf215546Sopenharmony_ci
184bf215546Sopenharmony_ci         /* The 129 failure seems to be across formats, let's test some cpps */
185bf215546Sopenharmony_ci         {
186bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8_UNORM,
187bf215546Sopenharmony_ci            .layout =
188bf215546Sopenharmony_ci               {
189bf215546Sopenharmony_ci                  .width0 = 129,
190bf215546Sopenharmony_ci                  .height0 = 1,
191bf215546Sopenharmony_ci                  .slices =
192bf215546Sopenharmony_ci                     {
193bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 192},
194bf215546Sopenharmony_ci                        {.offset = 192, .pitch = 128},
195bf215546Sopenharmony_ci                        {.offset = 320, .pitch = 64},
196bf215546Sopenharmony_ci                        {.offset = 384, .pitch = 64},
197bf215546Sopenharmony_ci                        {.offset = 448, .pitch = 64},
198bf215546Sopenharmony_ci                        {.offset = 512, .pitch = 64},
199bf215546Sopenharmony_ci                        {.offset = 576, .pitch = 64},
200bf215546Sopenharmony_ci                        {.offset = 640, .pitch = 64},
201bf215546Sopenharmony_ci                     },
202bf215546Sopenharmony_ci               },
203bf215546Sopenharmony_ci         },
204bf215546Sopenharmony_ci         {
205bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R16_UINT,
206bf215546Sopenharmony_ci            .layout =
207bf215546Sopenharmony_ci               {
208bf215546Sopenharmony_ci                  .width0 = 129,
209bf215546Sopenharmony_ci                  .height0 = 1,
210bf215546Sopenharmony_ci                  .slices =
211bf215546Sopenharmony_ci                     {
212bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 384},
213bf215546Sopenharmony_ci                        {.offset = 384, .pitch = 256},
214bf215546Sopenharmony_ci                        {.offset = 640, .pitch = 128},
215bf215546Sopenharmony_ci                        {.offset = 768, .pitch = 128},
216bf215546Sopenharmony_ci                        {.offset = 896, .pitch = 128},
217bf215546Sopenharmony_ci                        {.offset = 1024, .pitch = 128},
218bf215546Sopenharmony_ci                        {.offset = 1152, .pitch = 128},
219bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 128},
220bf215546Sopenharmony_ci                     },
221bf215546Sopenharmony_ci               },
222bf215546Sopenharmony_ci         },
223bf215546Sopenharmony_ci         {
224bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R32G32B32A32_FLOAT,
225bf215546Sopenharmony_ci            .layout =
226bf215546Sopenharmony_ci               {
227bf215546Sopenharmony_ci                  .width0 = 129,
228bf215546Sopenharmony_ci                  .height0 = 1,
229bf215546Sopenharmony_ci                  .slices =
230bf215546Sopenharmony_ci                     {
231bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 3072},
232bf215546Sopenharmony_ci                        {.offset = 3072, .pitch = 2048},
233bf215546Sopenharmony_ci                        {.offset = 5120, .pitch = 1024},
234bf215546Sopenharmony_ci                        {.offset = 6144, .pitch = 1024},
235bf215546Sopenharmony_ci                        {.offset = 7168, .pitch = 1024},
236bf215546Sopenharmony_ci                        {.offset = 8192, .pitch = 1024},
237bf215546Sopenharmony_ci                        {.offset = 9216, .pitch = 1024},
238bf215546Sopenharmony_ci                        {.offset = 10240, .pitch = 1024},
239bf215546Sopenharmony_ci                     },
240bf215546Sopenharmony_ci               },
241bf215546Sopenharmony_ci         },
242bf215546Sopenharmony_ci
243bf215546Sopenharmony_ci         /* The 129 failure replicated at every +256 pixels wide.  Pick one of
244bf215546Sopenharmony_ci          * them, and this time increase the height as a new variable as well.
245bf215546Sopenharmony_ci          */
246bf215546Sopenharmony_ci         {
247bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
248bf215546Sopenharmony_ci            .layout =
249bf215546Sopenharmony_ci               {
250bf215546Sopenharmony_ci                  .width0 = 385,
251bf215546Sopenharmony_ci                  .height0 = 128,
252bf215546Sopenharmony_ci                  .slices =
253bf215546Sopenharmony_ci                     {
254bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1792},
255bf215546Sopenharmony_ci                        {.offset = 229376, .pitch = 1024},
256bf215546Sopenharmony_ci                        {.offset = 294912, .pitch = 512},
257bf215546Sopenharmony_ci                        {.offset = 311296, .pitch = 256},
258bf215546Sopenharmony_ci                        {.offset = 315392, .pitch = 256},
259bf215546Sopenharmony_ci                        {.offset = 317440, .pitch = 256},
260bf215546Sopenharmony_ci                        {.offset = 318464, .pitch = 256},
261bf215546Sopenharmony_ci                        {.offset = 318976, .pitch = 256},
262bf215546Sopenharmony_ci                        {.offset = 319232, .pitch = 256},
263bf215546Sopenharmony_ci                     },
264bf215546Sopenharmony_ci               },
265bf215546Sopenharmony_ci         },
266bf215546Sopenharmony_ci
267bf215546Sopenharmony_ci         /* At 257-259 (and replicated every +256 pixels) we had another
268bf215546Sopenharmony_ci            failure. */
269bf215546Sopenharmony_ci         {
270bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
271bf215546Sopenharmony_ci            .layout =
272bf215546Sopenharmony_ci               {
273bf215546Sopenharmony_ci                  .width0 = 257,
274bf215546Sopenharmony_ci                  .height0 = 1,
275bf215546Sopenharmony_ci                  .slices =
276bf215546Sopenharmony_ci                     {
277bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1280},
278bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 768},
279bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 512},
280bf215546Sopenharmony_ci                        {.offset = 2560, .pitch = 256},
281bf215546Sopenharmony_ci                        {.offset = 2816, .pitch = 256},
282bf215546Sopenharmony_ci                        {.offset = 3072, .pitch = 256},
283bf215546Sopenharmony_ci                        {.offset = 3328, .pitch = 256},
284bf215546Sopenharmony_ci                        {.offset = 3584, .pitch = 256},
285bf215546Sopenharmony_ci                        {.offset = 3840, .pitch = 256},
286bf215546Sopenharmony_ci                     },
287bf215546Sopenharmony_ci               },
288bf215546Sopenharmony_ci         },
289bf215546Sopenharmony_ci         {
290bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
291bf215546Sopenharmony_ci            .layout =
292bf215546Sopenharmony_ci               {
293bf215546Sopenharmony_ci                  .width0 = 258,
294bf215546Sopenharmony_ci                  .height0 = 1,
295bf215546Sopenharmony_ci                  .slices =
296bf215546Sopenharmony_ci                     {
297bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1280},
298bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 768},
299bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 512},
300bf215546Sopenharmony_ci                        {.offset = 2560, .pitch = 256},
301bf215546Sopenharmony_ci                        {.offset = 2816, .pitch = 256},
302bf215546Sopenharmony_ci                        {.offset = 3072, .pitch = 256},
303bf215546Sopenharmony_ci                        {.offset = 3328, .pitch = 256},
304bf215546Sopenharmony_ci                        {.offset = 3584, .pitch = 256},
305bf215546Sopenharmony_ci                        {.offset = 3840, .pitch = 256},
306bf215546Sopenharmony_ci                     },
307bf215546Sopenharmony_ci               },
308bf215546Sopenharmony_ci         },
309bf215546Sopenharmony_ci         {
310bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
311bf215546Sopenharmony_ci            .layout =
312bf215546Sopenharmony_ci               {
313bf215546Sopenharmony_ci                  .width0 = 259,
314bf215546Sopenharmony_ci                  .height0 = 1,
315bf215546Sopenharmony_ci                  .slices =
316bf215546Sopenharmony_ci                     {
317bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1280},
318bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 768},
319bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 512},
320bf215546Sopenharmony_ci                        {.offset = 2560, .pitch = 256},
321bf215546Sopenharmony_ci                        {.offset = 2816, .pitch = 256},
322bf215546Sopenharmony_ci                        {.offset = 3072, .pitch = 256},
323bf215546Sopenharmony_ci                        {.offset = 3328, .pitch = 256},
324bf215546Sopenharmony_ci                        {.offset = 3584, .pitch = 256},
325bf215546Sopenharmony_ci                        {.offset = 3840, .pitch = 256},
326bf215546Sopenharmony_ci                     },
327bf215546Sopenharmony_ci               },
328bf215546Sopenharmony_ci         },
329bf215546Sopenharmony_ci         {
330bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
331bf215546Sopenharmony_ci            .layout =
332bf215546Sopenharmony_ci               {
333bf215546Sopenharmony_ci                  .width0 = 260,
334bf215546Sopenharmony_ci                  .height0 = 1,
335bf215546Sopenharmony_ci                  .slices =
336bf215546Sopenharmony_ci                     {
337bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1280},
338bf215546Sopenharmony_ci                        {.offset = 1280, .pitch = 768},
339bf215546Sopenharmony_ci                        {.offset = 2048, .pitch = 512},
340bf215546Sopenharmony_ci                        {.offset = 2560, .pitch = 256},
341bf215546Sopenharmony_ci                        {.offset = 2816, .pitch = 256},
342bf215546Sopenharmony_ci                        {.offset = 3072, .pitch = 256},
343bf215546Sopenharmony_ci                        {.offset = 3328, .pitch = 256},
344bf215546Sopenharmony_ci                        {.offset = 3584, .pitch = 256},
345bf215546Sopenharmony_ci                        {.offset = 3840, .pitch = 256},
346bf215546Sopenharmony_ci                     },
347bf215546Sopenharmony_ci               },
348bf215546Sopenharmony_ci         },
349bf215546Sopenharmony_ci
350bf215546Sopenharmony_ci         /* And, again for the 257-9 failure, test a replica with a larger size*/
351bf215546Sopenharmony_ci         {
352bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
353bf215546Sopenharmony_ci            .layout =
354bf215546Sopenharmony_ci               {
355bf215546Sopenharmony_ci                  .width0 = 513,
356bf215546Sopenharmony_ci                  .height0 = 32,
357bf215546Sopenharmony_ci                  .slices =
358bf215546Sopenharmony_ci                     {
359bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 2304},
360bf215546Sopenharmony_ci                        {.offset = 73728, .pitch = 1280},
361bf215546Sopenharmony_ci                        {.offset = 94208, .pitch = 768},
362bf215546Sopenharmony_ci                        {.offset = 100352, .pitch = 512},
363bf215546Sopenharmony_ci                        {.offset = 102400, .pitch = 256},
364bf215546Sopenharmony_ci                        {.offset = 102912, .pitch = 256},
365bf215546Sopenharmony_ci                        {.offset = 103168, .pitch = 256},
366bf215546Sopenharmony_ci                        {.offset = 103424, .pitch = 256},
367bf215546Sopenharmony_ci                        {.offset = 103680, .pitch = 256},
368bf215546Sopenharmony_ci                        {.offset = 103936, .pitch = 256},
369bf215546Sopenharmony_ci                     },
370bf215546Sopenharmony_ci               },
371bf215546Sopenharmony_ci         },
372bf215546Sopenharmony_ci
373bf215546Sopenharmony_ci         /* Oh, look.  The 513-517 failure extends up to 518 at the next texture
374bf215546Sopenharmony_ci          * level!
375bf215546Sopenharmony_ci          */
376bf215546Sopenharmony_ci         {
377bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
378bf215546Sopenharmony_ci            .layout =
379bf215546Sopenharmony_ci               {
380bf215546Sopenharmony_ci                  .width0 = 518,
381bf215546Sopenharmony_ci                  .height0 = 1,
382bf215546Sopenharmony_ci                  .slices =
383bf215546Sopenharmony_ci                     {
384bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 2304},
385bf215546Sopenharmony_ci                        {.offset = 2304, .pitch = 1280},
386bf215546Sopenharmony_ci                        {.offset = 3584, .pitch = 768},
387bf215546Sopenharmony_ci                        {.offset = 4352, .pitch = 512},
388bf215546Sopenharmony_ci                        {.offset = 4864, .pitch = 256},
389bf215546Sopenharmony_ci                        {.offset = 5120, .pitch = 256},
390bf215546Sopenharmony_ci                        {.offset = 5376, .pitch = 256},
391bf215546Sopenharmony_ci                        {.offset = 5632, .pitch = 256},
392bf215546Sopenharmony_ci                        {.offset = 5888, .pitch = 256},
393bf215546Sopenharmony_ci                        {.offset = 6144, .pitch = 256},
394bf215546Sopenharmony_ci                     },
395bf215546Sopenharmony_ci               },
396bf215546Sopenharmony_ci         },
397bf215546Sopenharmony_ci
398bf215546Sopenharmony_ci         /* Tiled mode testing of the unusual 1/2-bytes-per-pixel pitch
399bf215546Sopenharmony_ci            alignment */
400bf215546Sopenharmony_ci         {
401bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8_UNORM,
402bf215546Sopenharmony_ci            .layout =
403bf215546Sopenharmony_ci               {
404bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
405bf215546Sopenharmony_ci                  .width0 = 129,
406bf215546Sopenharmony_ci                  .height0 = 1,
407bf215546Sopenharmony_ci                  .slices =
408bf215546Sopenharmony_ci                     {
409bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 256},
410bf215546Sopenharmony_ci                        {.offset = 8192, .pitch = 128},
411bf215546Sopenharmony_ci                        {.offset = 12288, .pitch = 128},
412bf215546Sopenharmony_ci                        {.offset = 16384, .pitch = 128},
413bf215546Sopenharmony_ci                        {.offset = 20480, .pitch = 128},
414bf215546Sopenharmony_ci                        {.offset = 20608, .pitch = 128},
415bf215546Sopenharmony_ci                        {.offset = 20736, .pitch = 128},
416bf215546Sopenharmony_ci                        {.offset = 20864, .pitch = 128},
417bf215546Sopenharmony_ci                     },
418bf215546Sopenharmony_ci               },
419bf215546Sopenharmony_ci         },
420bf215546Sopenharmony_ci
421bf215546Sopenharmony_ci         /* Single-level RGBA8888 UBWC following UBWC alignment rules laid out
422bf215546Sopenharmony_ci          * in msm_media_info.h to verify that we don't break buffer sharing.
423bf215546Sopenharmony_ci          */
424bf215546Sopenharmony_ci         {
425bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
426bf215546Sopenharmony_ci            .layout =
427bf215546Sopenharmony_ci               {
428bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
429bf215546Sopenharmony_ci                  .ubwc = true,
430bf215546Sopenharmony_ci                  .width0 = 16384,
431bf215546Sopenharmony_ci                  .height0 = 129,
432bf215546Sopenharmony_ci                  .slices =
433bf215546Sopenharmony_ci                     {
434bf215546Sopenharmony_ci                        {.offset = 1024 * 48, .pitch = 16384 * 4},
435bf215546Sopenharmony_ci                     },
436bf215546Sopenharmony_ci                  .ubwc_slices =
437bf215546Sopenharmony_ci                     {
438bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1024},
439bf215546Sopenharmony_ci                     },
440bf215546Sopenharmony_ci               },
441bf215546Sopenharmony_ci         },
442bf215546Sopenharmony_ci
443bf215546Sopenharmony_ci         /* UBWC: Pitch comes from POT-aligned level 0. */
444bf215546Sopenharmony_ci         /* Pitch fixed in this commit, but offsets broken.  Will be fixed in
445bf215546Sopenharmony_ci          * following commits.
446bf215546Sopenharmony_ci          */
447bf215546Sopenharmony_ci         {
448bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
449bf215546Sopenharmony_ci            .layout =
450bf215546Sopenharmony_ci               {
451bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
452bf215546Sopenharmony_ci                  .ubwc = true,
453bf215546Sopenharmony_ci                  .width0 = 2049,
454bf215546Sopenharmony_ci                  .height0 = 128,
455bf215546Sopenharmony_ci                  .slices =
456bf215546Sopenharmony_ci                     {
457bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 8448},
458bf215546Sopenharmony_ci                        {.offset = 1081344, .pitch = 4352},
459bf215546Sopenharmony_ci                        {.offset = 1359872, .pitch = 2304},
460bf215546Sopenharmony_ci                        {.offset = 1433600, .pitch = 1280},
461bf215546Sopenharmony_ci                        {.offset = 1454080, .pitch = 768},
462bf215546Sopenharmony_ci                        {.offset = 1466368, .pitch = 512},
463bf215546Sopenharmony_ci                        {.offset = 1474560, .pitch = 256},
464bf215546Sopenharmony_ci                        {.offset = 1478656, .pitch = 256},
465bf215546Sopenharmony_ci                        {.offset = 1482752, .pitch = 256},
466bf215546Sopenharmony_ci                        {.offset = 1486848, .pitch = 256},
467bf215546Sopenharmony_ci                        {.offset = 1490944, .pitch = 256},
468bf215546Sopenharmony_ci                        {.offset = 1495040, .pitch = 256},
469bf215546Sopenharmony_ci                     },
470bf215546Sopenharmony_ci                  .ubwc_slices =
471bf215546Sopenharmony_ci                     {
472bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 256},
473bf215546Sopenharmony_ci                        {.offset = 16384, .pitch = 128},
474bf215546Sopenharmony_ci                        {.offset = 24576, .pitch = 64},
475bf215546Sopenharmony_ci                        {.offset = 28672, .pitch = 64},
476bf215546Sopenharmony_ci                        {.offset = 32768, .pitch = 64},
477bf215546Sopenharmony_ci                        {.offset = 36864, .pitch = 64},
478bf215546Sopenharmony_ci                        {.offset = 40960, .pitch = 64},
479bf215546Sopenharmony_ci                        {.offset = 45056, .pitch = 64},
480bf215546Sopenharmony_ci                        {.offset = 49152, .pitch = 64},
481bf215546Sopenharmony_ci                        {.offset = 53248, .pitch = 64},
482bf215546Sopenharmony_ci                        {.offset = 57344, .pitch = 64},
483bf215546Sopenharmony_ci                        {.offset = 61440, .pitch = 64},
484bf215546Sopenharmony_ci                     },
485bf215546Sopenharmony_ci               },
486bf215546Sopenharmony_ci         },
487bf215546Sopenharmony_ci         /* UBWC: Height comes from POT-aligned level 0. */
488bf215546Sopenharmony_ci         {
489bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
490bf215546Sopenharmony_ci            .layout =
491bf215546Sopenharmony_ci               {
492bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
493bf215546Sopenharmony_ci                  .ubwc = true,
494bf215546Sopenharmony_ci                  .width0 = 1024,
495bf215546Sopenharmony_ci                  .height0 = 1025,
496bf215546Sopenharmony_ci                  .slices =
497bf215546Sopenharmony_ci                     {
498bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 4096},
499bf215546Sopenharmony_ci                        {.offset = 4259840, .pitch = 2048},
500bf215546Sopenharmony_ci                        {.offset = 5308416, .pitch = 1024},
501bf215546Sopenharmony_ci                        {.offset = 5570560, .pitch = 512},
502bf215546Sopenharmony_ci                        {.offset = 5636096, .pitch = 256},
503bf215546Sopenharmony_ci                        {.offset = 5652480, .pitch = 256},
504bf215546Sopenharmony_ci                        {.offset = 5660672, .pitch = 256},
505bf215546Sopenharmony_ci                        {.offset = 5664768, .pitch = 256},
506bf215546Sopenharmony_ci                        {.offset = 5668864, .pitch = 256},
507bf215546Sopenharmony_ci                        {.offset = 5672960, .pitch = 256},
508bf215546Sopenharmony_ci                        {.offset = 5677056, .pitch = 256},
509bf215546Sopenharmony_ci                     },
510bf215546Sopenharmony_ci                  .ubwc_slices =
511bf215546Sopenharmony_ci                     {
512bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 64},
513bf215546Sopenharmony_ci                        {.offset = 32768, .pitch = 64},
514bf215546Sopenharmony_ci                        {.offset = 49152, .pitch = 64},
515bf215546Sopenharmony_ci                        {.offset = 57344, .pitch = 64},
516bf215546Sopenharmony_ci                        {.offset = 61440, .pitch = 64},
517bf215546Sopenharmony_ci                        {.offset = 65536, .pitch = 64},
518bf215546Sopenharmony_ci                        {.offset = 69632, .pitch = 64},
519bf215546Sopenharmony_ci                        {.offset = 73728, .pitch = 64},
520bf215546Sopenharmony_ci                        {.offset = 77824, .pitch = 64},
521bf215546Sopenharmony_ci                        {.offset = 81920, .pitch = 64},
522bf215546Sopenharmony_ci                        {.offset = 86016, .pitch = 64},
523bf215546Sopenharmony_ci                     },
524bf215546Sopenharmony_ci               },
525bf215546Sopenharmony_ci         },
526bf215546Sopenharmony_ci
527bf215546Sopenharmony_ci         /* UBWC: Get at minimum height of a level across cpps */
528bf215546Sopenharmony_ci         {
529bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R16_UINT,
530bf215546Sopenharmony_ci            .layout =
531bf215546Sopenharmony_ci               {
532bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
533bf215546Sopenharmony_ci                  .ubwc = true,
534bf215546Sopenharmony_ci                  .width0 = 16384,
535bf215546Sopenharmony_ci                  .height0 = 1,
536bf215546Sopenharmony_ci                  .slices =
537bf215546Sopenharmony_ci                     {
538bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 32768},
539bf215546Sopenharmony_ci                        {.offset = 524288, .pitch = 16384},
540bf215546Sopenharmony_ci                        {.offset = 786432, .pitch = 8192},
541bf215546Sopenharmony_ci                        {.offset = 917504, .pitch = 4096},
542bf215546Sopenharmony_ci                        {.offset = 983040, .pitch = 2048},
543bf215546Sopenharmony_ci                        {.offset = 1015808, .pitch = 1024},
544bf215546Sopenharmony_ci                        {.offset = 1032192, .pitch = 512},
545bf215546Sopenharmony_ci                        {.offset = 1040384, .pitch = 256},
546bf215546Sopenharmony_ci                        {.offset = 1044480, .pitch = 256},
547bf215546Sopenharmony_ci                        {.offset = 1048576, .pitch = 256},
548bf215546Sopenharmony_ci                        {.offset = 1052672, .pitch = 256},
549bf215546Sopenharmony_ci                        {.offset = 1056768, .pitch = 256},
550bf215546Sopenharmony_ci                        {.offset = 1060864, .pitch = 256},
551bf215546Sopenharmony_ci                        {.offset = 1064960, .pitch = 256},
552bf215546Sopenharmony_ci                        {.offset = 1069056, .pitch = 256},
553bf215546Sopenharmony_ci                     },
554bf215546Sopenharmony_ci                  .ubwc_slices =
555bf215546Sopenharmony_ci                     {
556bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1024},
557bf215546Sopenharmony_ci                        {.offset = 65536, .pitch = 512},
558bf215546Sopenharmony_ci                        {.offset = 98304, .pitch = 256},
559bf215546Sopenharmony_ci                        {.offset = 114688, .pitch = 128},
560bf215546Sopenharmony_ci                        {.offset = 122880, .pitch = 64},
561bf215546Sopenharmony_ci                        {.offset = 126976, .pitch = 64},
562bf215546Sopenharmony_ci                        {.offset = 131072, .pitch = 64},
563bf215546Sopenharmony_ci                        {.offset = 135168, .pitch = 64},
564bf215546Sopenharmony_ci                        {.offset = 139264, .pitch = 64},
565bf215546Sopenharmony_ci                        {.offset = 143360, .pitch = 64},
566bf215546Sopenharmony_ci                        {.offset = 147456, .pitch = 64},
567bf215546Sopenharmony_ci                        {.offset = 151552, .pitch = 64},
568bf215546Sopenharmony_ci                        {.offset = 155648, .pitch = 64},
569bf215546Sopenharmony_ci                        {.offset = 159744, .pitch = 64},
570bf215546Sopenharmony_ci                        {.offset = 163840, .pitch = 64},
571bf215546Sopenharmony_ci                     },
572bf215546Sopenharmony_ci               },
573bf215546Sopenharmony_ci         },
574bf215546Sopenharmony_ci         {
575bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
576bf215546Sopenharmony_ci            .layout =
577bf215546Sopenharmony_ci               {
578bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
579bf215546Sopenharmony_ci                  .ubwc = true,
580bf215546Sopenharmony_ci                  .width0 = 16384,
581bf215546Sopenharmony_ci                  .height0 = 1,
582bf215546Sopenharmony_ci                  .slices =
583bf215546Sopenharmony_ci                     {
584bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 65536},
585bf215546Sopenharmony_ci                        {.offset = 1048576, .pitch = 32768},
586bf215546Sopenharmony_ci                        {.offset = 1572864, .pitch = 16384},
587bf215546Sopenharmony_ci                        {.offset = 1835008, .pitch = 8192},
588bf215546Sopenharmony_ci                        {.offset = 1966080, .pitch = 4096},
589bf215546Sopenharmony_ci                        {.offset = 2031616, .pitch = 2048},
590bf215546Sopenharmony_ci                        {.offset = 2064384, .pitch = 1024},
591bf215546Sopenharmony_ci                        {.offset = 2080768, .pitch = 512},
592bf215546Sopenharmony_ci                        {.offset = 2088960, .pitch = 256},
593bf215546Sopenharmony_ci                        {.offset = 2093056, .pitch = 256},
594bf215546Sopenharmony_ci                        {.offset = 2097152, .pitch = 256},
595bf215546Sopenharmony_ci                        {.offset = 2101248, .pitch = 256},
596bf215546Sopenharmony_ci                        {.offset = 2105344, .pitch = 256},
597bf215546Sopenharmony_ci                        {.offset = 2109440, .pitch = 256},
598bf215546Sopenharmony_ci                        {.offset = 2113536, .pitch = 256},
599bf215546Sopenharmony_ci                     },
600bf215546Sopenharmony_ci                  .ubwc_slices =
601bf215546Sopenharmony_ci                     {
602bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 1024},
603bf215546Sopenharmony_ci                        {.offset = 65536, .pitch = 512},
604bf215546Sopenharmony_ci                        {.offset = 98304, .pitch = 256},
605bf215546Sopenharmony_ci                        {.offset = 114688, .pitch = 128},
606bf215546Sopenharmony_ci                        {.offset = 122880, .pitch = 64},
607bf215546Sopenharmony_ci                        {.offset = 126976, .pitch = 64},
608bf215546Sopenharmony_ci                        {.offset = 131072, .pitch = 64},
609bf215546Sopenharmony_ci                        {.offset = 135168, .pitch = 64},
610bf215546Sopenharmony_ci                        {.offset = 139264, .pitch = 64},
611bf215546Sopenharmony_ci                        {.offset = 143360, .pitch = 64},
612bf215546Sopenharmony_ci                        {.offset = 147456, .pitch = 64},
613bf215546Sopenharmony_ci                        {.offset = 151552, .pitch = 64},
614bf215546Sopenharmony_ci                        {.offset = 155648, .pitch = 64},
615bf215546Sopenharmony_ci                        {.offset = 159744, .pitch = 64},
616bf215546Sopenharmony_ci                        {.offset = 163840, .pitch = 64},
617bf215546Sopenharmony_ci                     },
618bf215546Sopenharmony_ci               },
619bf215546Sopenharmony_ci         },
620bf215546Sopenharmony_ci         {
621bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R32G32B32A32_FLOAT,
622bf215546Sopenharmony_ci            .layout =
623bf215546Sopenharmony_ci               {
624bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
625bf215546Sopenharmony_ci                  .ubwc = true,
626bf215546Sopenharmony_ci                  .width0 = 16384,
627bf215546Sopenharmony_ci                  .height0 = 1,
628bf215546Sopenharmony_ci                  .slices =
629bf215546Sopenharmony_ci                     {
630bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 262144},
631bf215546Sopenharmony_ci                        {.offset = 4194304, .pitch = 131072},
632bf215546Sopenharmony_ci                        {.offset = 6291456, .pitch = 65536},
633bf215546Sopenharmony_ci                        {.offset = 7340032, .pitch = 32768},
634bf215546Sopenharmony_ci                        {.offset = 7864320, .pitch = 16384},
635bf215546Sopenharmony_ci                        {.offset = 8126464, .pitch = 8192},
636bf215546Sopenharmony_ci                        {.offset = 8257536, .pitch = 4096},
637bf215546Sopenharmony_ci                        {.offset = 8323072, .pitch = 2048},
638bf215546Sopenharmony_ci                        {.offset = 8355840, .pitch = 1024},
639bf215546Sopenharmony_ci                        {.offset = 8372224, .pitch = 1024},
640bf215546Sopenharmony_ci                        {.offset = 8388608, .pitch = 1024},
641bf215546Sopenharmony_ci                        {.offset = 8404992, .pitch = 1024},
642bf215546Sopenharmony_ci                        {.offset = 8421376, .pitch = 1024},
643bf215546Sopenharmony_ci                        {.offset = 8437760, .pitch = 1024},
644bf215546Sopenharmony_ci                        {.offset = 8454144, .pitch = 1024},
645bf215546Sopenharmony_ci                     },
646bf215546Sopenharmony_ci                  .ubwc_slices =
647bf215546Sopenharmony_ci                     {
648bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 4096},
649bf215546Sopenharmony_ci                        {.offset = 262144, .pitch = 2048},
650bf215546Sopenharmony_ci                        {.offset = 393216, .pitch = 1024},
651bf215546Sopenharmony_ci                        {.offset = 458752, .pitch = 512},
652bf215546Sopenharmony_ci                        {.offset = 491520, .pitch = 256},
653bf215546Sopenharmony_ci                        {.offset = 507904, .pitch = 128},
654bf215546Sopenharmony_ci                        {.offset = 516096, .pitch = 64},
655bf215546Sopenharmony_ci                        {.offset = 520192, .pitch = 64},
656bf215546Sopenharmony_ci                        {.offset = 524288, .pitch = 64},
657bf215546Sopenharmony_ci                        {.offset = 528384, .pitch = 64},
658bf215546Sopenharmony_ci                        {.offset = 532480, .pitch = 64},
659bf215546Sopenharmony_ci                        {.offset = 536576, .pitch = 64},
660bf215546Sopenharmony_ci                        {.offset = 540672, .pitch = 64},
661bf215546Sopenharmony_ci                        {.offset = 544768, .pitch = 64},
662bf215546Sopenharmony_ci                        {.offset = 548864, .pitch = 64},
663bf215546Sopenharmony_ci                     },
664bf215546Sopenharmony_ci               },
665bf215546Sopenharmony_ci         },
666bf215546Sopenharmony_ci
667bf215546Sopenharmony_ci         {
668bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R8G8B8A8_UNORM,
669bf215546Sopenharmony_ci            .layout =
670bf215546Sopenharmony_ci               {
671bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
672bf215546Sopenharmony_ci                  .ubwc = true,
673bf215546Sopenharmony_ci                  .nr_samples = 4,
674bf215546Sopenharmony_ci                  .width0 = 412,
675bf215546Sopenharmony_ci                  .height0 = 732,
676bf215546Sopenharmony_ci                  .slices =
677bf215546Sopenharmony_ci                     {
678bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 7168},
679bf215546Sopenharmony_ci                     },
680bf215546Sopenharmony_ci                  .ubwc_slices =
681bf215546Sopenharmony_ci                     {
682bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 128},
683bf215546Sopenharmony_ci                     },
684bf215546Sopenharmony_ci               },
685bf215546Sopenharmony_ci         },
686bf215546Sopenharmony_ci
687bf215546Sopenharmony_ci         /* Easy 32x32x32 3d case */
688bf215546Sopenharmony_ci         {
689bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
690bf215546Sopenharmony_ci            .is_3d = true,
691bf215546Sopenharmony_ci            .layout =
692bf215546Sopenharmony_ci               {
693bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
694bf215546Sopenharmony_ci                  .ubwc = false,
695bf215546Sopenharmony_ci                  .width0 = 32,
696bf215546Sopenharmony_ci                  .height0 = 32,
697bf215546Sopenharmony_ci                  .depth0 = 32,
698bf215546Sopenharmony_ci                  .slices =
699bf215546Sopenharmony_ci                     {
700bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 256, .size0 = 8192},
701bf215546Sopenharmony_ci                        {.offset = 262144, .pitch = 256, .size0 = 4096},
702bf215546Sopenharmony_ci                        {.offset = 327680, .pitch = 256, .size0 = 4096},
703bf215546Sopenharmony_ci                        {.offset = 360448, .pitch = 256, .size0 = 4096},
704bf215546Sopenharmony_ci                        {.offset = 376832, .pitch = 256, .size0 = 4096},
705bf215546Sopenharmony_ci                        {.offset = 385024, .pitch = 256},
706bf215546Sopenharmony_ci                     },
707bf215546Sopenharmony_ci               },
708bf215546Sopenharmony_ci         },
709bf215546Sopenharmony_ci
710bf215546Sopenharmony_ci         /* Scale up a bit to 128x128x32 3d */
711bf215546Sopenharmony_ci         {
712bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
713bf215546Sopenharmony_ci            .is_3d = true,
714bf215546Sopenharmony_ci            .layout =
715bf215546Sopenharmony_ci               {
716bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
717bf215546Sopenharmony_ci                  .ubwc = false,
718bf215546Sopenharmony_ci                  .width0 = 128,
719bf215546Sopenharmony_ci                  .height0 = 128,
720bf215546Sopenharmony_ci                  .depth0 = 32,
721bf215546Sopenharmony_ci                  .slices =
722bf215546Sopenharmony_ci                     {
723bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 512, .size0 = 65536},
724bf215546Sopenharmony_ci                        {.offset = 2097152, .pitch = 256, .size0 = 16384},
725bf215546Sopenharmony_ci                        {.offset = 2359296, .pitch = 256, .size0 = 8192},
726bf215546Sopenharmony_ci                        {.offset = 2424832, .pitch = 256, .size0 = 8192},
727bf215546Sopenharmony_ci                        {.offset = 2457600, .pitch = 256, .size0 = 8192},
728bf215546Sopenharmony_ci                        {.offset = 2473984, .pitch = 256},
729bf215546Sopenharmony_ci                        {.offset = 2482176, .pitch = 256},
730bf215546Sopenharmony_ci                        {.offset = 2490368, .pitch = 256},
731bf215546Sopenharmony_ci                     },
732bf215546Sopenharmony_ci               },
733bf215546Sopenharmony_ci         },
734bf215546Sopenharmony_ci
735bf215546Sopenharmony_ci         /* Changing width to 1 changes where minimum layer size happens. */
736bf215546Sopenharmony_ci         {
737bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
738bf215546Sopenharmony_ci            .is_3d = true,
739bf215546Sopenharmony_ci            .layout =
740bf215546Sopenharmony_ci               {
741bf215546Sopenharmony_ci                  .tile_mode = TILE6_LINEAR,
742bf215546Sopenharmony_ci                  .ubwc = false,
743bf215546Sopenharmony_ci                  .width0 = 1,
744bf215546Sopenharmony_ci                  .height0 = 128,
745bf215546Sopenharmony_ci                  .depth0 = 32,
746bf215546Sopenharmony_ci                  .slices =
747bf215546Sopenharmony_ci                     {
748bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 256, .size0 = 32768},
749bf215546Sopenharmony_ci                        {.offset = 1048576, .pitch = 256, .size0 = 16384},
750bf215546Sopenharmony_ci                        {.offset = 1310720, .pitch = 256, .size0 = 16384},
751bf215546Sopenharmony_ci                        {.offset = 1441792, .pitch = 256, .size0 = 16384},
752bf215546Sopenharmony_ci                        {.offset = 1507328, .pitch = 256, .size0 = 16384},
753bf215546Sopenharmony_ci                        {.offset = 1540096, .pitch = 256},
754bf215546Sopenharmony_ci                        {.offset = 1556480, .pitch = 256},
755bf215546Sopenharmony_ci                        {.offset = 1572864, .pitch = 256},
756bf215546Sopenharmony_ci                     },
757bf215546Sopenharmony_ci               },
758bf215546Sopenharmony_ci         },
759bf215546Sopenharmony_ci
760bf215546Sopenharmony_ci         /* And increasing width makes it happen later. */
761bf215546Sopenharmony_ci         {
762bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
763bf215546Sopenharmony_ci            .is_3d = true,
764bf215546Sopenharmony_ci            .layout =
765bf215546Sopenharmony_ci               {
766bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
767bf215546Sopenharmony_ci                  .ubwc = false,
768bf215546Sopenharmony_ci                  .width0 = 1024,
769bf215546Sopenharmony_ci                  .height0 = 128,
770bf215546Sopenharmony_ci                  .depth0 = 32,
771bf215546Sopenharmony_ci                  .slices =
772bf215546Sopenharmony_ci                     {
773bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 4096, .size0 = 524288},
774bf215546Sopenharmony_ci                        {.offset = 16777216, .pitch = 2048, .size0 = 131072},
775bf215546Sopenharmony_ci                        {.offset = 18874368, .pitch = 1024, .size0 = 32768},
776bf215546Sopenharmony_ci                        {.offset = 19136512, .pitch = 512, .size0 = 8192},
777bf215546Sopenharmony_ci                        {.offset = 19169280, .pitch = 256, .size0 = 4096},
778bf215546Sopenharmony_ci                        {.offset = 19177472, .pitch = 256},
779bf215546Sopenharmony_ci                        {.offset = 19181568, .pitch = 256},
780bf215546Sopenharmony_ci                        {.offset = 19185664, .pitch = 256},
781bf215546Sopenharmony_ci                        {.offset = 19189760, .pitch = 256},
782bf215546Sopenharmony_ci                        {.offset = 19193856, .pitch = 256},
783bf215546Sopenharmony_ci                        {.offset = 19197952, .pitch = 256},
784bf215546Sopenharmony_ci                     },
785bf215546Sopenharmony_ci               },
786bf215546Sopenharmony_ci         },
787bf215546Sopenharmony_ci
788bf215546Sopenharmony_ci         /* NPOT height case that piglit was catching 3d texture failure in, we
789bf215546Sopenharmony_ci          * use a higher depth though to get more slice pitches detected from
790bf215546Sopenharmony_ci          * the blob.
791bf215546Sopenharmony_ci          */
792bf215546Sopenharmony_ci         {
793bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
794bf215546Sopenharmony_ci            .is_3d = true,
795bf215546Sopenharmony_ci            .layout =
796bf215546Sopenharmony_ci               {
797bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
798bf215546Sopenharmony_ci                  .ubwc = false,
799bf215546Sopenharmony_ci                  .width0 = 128,
800bf215546Sopenharmony_ci                  .height0 = 129,
801bf215546Sopenharmony_ci                  .depth0 = 16,
802bf215546Sopenharmony_ci                  .slices =
803bf215546Sopenharmony_ci                     {
804bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 512, .size0 = 73728},
805bf215546Sopenharmony_ci                        {.offset = 1179648, .pitch = 256, .size0 = 20480},
806bf215546Sopenharmony_ci                        {.offset = 1343488, .pitch = 256, .size0 = 20480},
807bf215546Sopenharmony_ci                        {.offset = 1425408, .pitch = 256, .size0 = 20480},
808bf215546Sopenharmony_ci                        {.offset = 1466368, .pitch = 256},
809bf215546Sopenharmony_ci                        {.offset = 1486848, .pitch = 256},
810bf215546Sopenharmony_ci                        {.offset = 1507328, .pitch = 256},
811bf215546Sopenharmony_ci                        {.offset = 1527808, .pitch = 256},
812bf215546Sopenharmony_ci                     },
813bf215546Sopenharmony_ci               },
814bf215546Sopenharmony_ci         },
815bf215546Sopenharmony_ci
816bf215546Sopenharmony_ci         /* NPOT height case that my first 3d layout ideas failed on. */
817bf215546Sopenharmony_ci         {
818bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
819bf215546Sopenharmony_ci            .is_3d = true,
820bf215546Sopenharmony_ci            .layout =
821bf215546Sopenharmony_ci               {
822bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
823bf215546Sopenharmony_ci                  .ubwc = false,
824bf215546Sopenharmony_ci                  .width0 = 128,
825bf215546Sopenharmony_ci                  .height0 = 132,
826bf215546Sopenharmony_ci                  .depth0 = 16,
827bf215546Sopenharmony_ci                  .slices =
828bf215546Sopenharmony_ci                     {
829bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 512, .size0 = 73728},
830bf215546Sopenharmony_ci                        {.offset = 1179648, .pitch = 256, .size0 = 20480},
831bf215546Sopenharmony_ci                        {.offset = 1343488, .pitch = 256, .size0 = 20480},
832bf215546Sopenharmony_ci                        {.offset = 1425408, .pitch = 256, .size0 = 20480},
833bf215546Sopenharmony_ci                        {.offset = 1466368, .pitch = 256},
834bf215546Sopenharmony_ci                        {.offset = 1486848, .pitch = 256},
835bf215546Sopenharmony_ci                        {.offset = 1507328, .pitch = 256},
836bf215546Sopenharmony_ci                        {.offset = 1527808, .pitch = 256},
837bf215546Sopenharmony_ci                     },
838bf215546Sopenharmony_ci               },
839bf215546Sopenharmony_ci         },
840bf215546Sopenharmony_ci
841bf215546Sopenharmony_ci         /* blob used MIN_LAYERSZ = 0x3000 here.
842bf215546Sopenharmony_ci          *
843bf215546Sopenharmony_ci          * This is an interesting case for 3d layout, since pitch stays NPOT for a while.
844bf215546Sopenharmony_ci          */
845bf215546Sopenharmony_ci         {
846bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R9G9B9E5_FLOAT,
847bf215546Sopenharmony_ci            .is_3d = true,
848bf215546Sopenharmony_ci            .layout =
849bf215546Sopenharmony_ci               {
850bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
851bf215546Sopenharmony_ci                  .ubwc = false,
852bf215546Sopenharmony_ci                  .width0 = 768,
853bf215546Sopenharmony_ci                  .height0 = 32,
854bf215546Sopenharmony_ci                  .depth0 = 128,
855bf215546Sopenharmony_ci                  .slices =
856bf215546Sopenharmony_ci                     {
857bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 3072, .size0 = 98304},
858bf215546Sopenharmony_ci                        {.offset = 12582912, .pitch = 1536, .size0 = 24576},
859bf215546Sopenharmony_ci                        {.offset = 14155776, .pitch = 768, .size0 = 12288},
860bf215546Sopenharmony_ci                        {.offset = 14548992, .pitch = 512, .size0 = 12288},
861bf215546Sopenharmony_ci                        {.offset = 14745600, .pitch = 256, .size0 = 12288},
862bf215546Sopenharmony_ci                        {.offset = 14843904, .pitch = 256, .size0 = 12288},
863bf215546Sopenharmony_ci                        {.offset = 14893056, .pitch = 256, .size0 = 12288},
864bf215546Sopenharmony_ci                        {.offset = 14917632, .pitch = 256},
865bf215546Sopenharmony_ci                        {.offset = 14929920, .pitch = 256},
866bf215546Sopenharmony_ci                        {.offset = 14942208, .pitch = 256},
867bf215546Sopenharmony_ci                     },
868bf215546Sopenharmony_ci               },
869bf215546Sopenharmony_ci         },
870bf215546Sopenharmony_ci
871bf215546Sopenharmony_ci         /* dEQP-GLES31.functional.copy_image.mixed.viewclass_128_bits_mixed.rgba32f_rg11_eac.texture3d_to_texture2d */
872bf215546Sopenharmony_ci#if 0 /* XXX: We disagree with the blob about level 0 size0, but the testcase passes. */
873bf215546Sopenharmony_ci         {
874bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R32G32B32A32_FLOAT,
875bf215546Sopenharmony_ci            .is_3d = true,
876bf215546Sopenharmony_ci            .layout =
877bf215546Sopenharmony_ci               {
878bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
879bf215546Sopenharmony_ci                  .ubwc = false,
880bf215546Sopenharmony_ci                  .width0 = 129,
881bf215546Sopenharmony_ci                  .height0 = 129,
882bf215546Sopenharmony_ci                  .depth0 = 17,
883bf215546Sopenharmony_ci                  .slices =
884bf215546Sopenharmony_ci                     {
885bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 3072, .size0 = 524288},
886bf215546Sopenharmony_ci                        {.offset = 8912896, .pitch = 2048, .size0 = 131072},
887bf215546Sopenharmony_ci                        {.offset = 9961472, .pitch = 1024, .size0 = 32768},
888bf215546Sopenharmony_ci                        {.offset = 10092544, .pitch = 1024, .size0 = 16384},
889bf215546Sopenharmony_ci                        {.offset = 10125312, .pitch = 1024},
890bf215546Sopenharmony_ci                        {.offset = 10141696, .pitch = 1024},
891bf215546Sopenharmony_ci                        {.offset = 10158080, .pitch = 1024},
892bf215546Sopenharmony_ci                        {.offset = 10174464, .pitch = 1024},
893bf215546Sopenharmony_ci                     },
894bf215546Sopenharmony_ci               },
895bf215546Sopenharmony_ci         },
896bf215546Sopenharmony_ci#endif
897bf215546Sopenharmony_ci
898bf215546Sopenharmony_ci         /* Size minification issue found while looking at the above test. */
899bf215546Sopenharmony_ci         {
900bf215546Sopenharmony_ci            .format = PIPE_FORMAT_R32G32B32A32_FLOAT,
901bf215546Sopenharmony_ci            .is_3d = true,
902bf215546Sopenharmony_ci            .layout =
903bf215546Sopenharmony_ci               {
904bf215546Sopenharmony_ci                  .tile_mode = TILE6_3,
905bf215546Sopenharmony_ci                  .ubwc = false,
906bf215546Sopenharmony_ci                  .width0 = 129,
907bf215546Sopenharmony_ci                  .height0 = 9,
908bf215546Sopenharmony_ci                  .depth0 = 8,
909bf215546Sopenharmony_ci                  .slices =
910bf215546Sopenharmony_ci                     {
911bf215546Sopenharmony_ci                        {.offset = 0, .pitch = 3072, .size0 = 49152},
912bf215546Sopenharmony_ci                        {.offset = 393216, .pitch = 2048, .size0 = 32768},
913bf215546Sopenharmony_ci                        {.offset = 524288, .pitch = 1024, .size0 = 32768},
914bf215546Sopenharmony_ci                        {.offset = 589824, .pitch = 1024},
915bf215546Sopenharmony_ci                        {.offset = 622592, .pitch = 1024},
916bf215546Sopenharmony_ci                        {.offset = 655360, .pitch = 1024},
917bf215546Sopenharmony_ci                        {.offset = 688128, .pitch = 1024},
918bf215546Sopenharmony_ci                        {.offset = 720896, .pitch = 1024},
919bf215546Sopenharmony_ci                     },
920bf215546Sopenharmony_ci               },
921bf215546Sopenharmony_ci         },
922bf215546Sopenharmony_ci
923bf215546Sopenharmony_ci};
924bf215546Sopenharmony_ci
925bf215546Sopenharmony_ciint
926bf215546Sopenharmony_cimain(int argc, char **argv)
927bf215546Sopenharmony_ci{
928bf215546Sopenharmony_ci   int ret = 0;
929bf215546Sopenharmony_ci
930bf215546Sopenharmony_ci   for (int i = 0; i < ARRAY_SIZE(testcases); i++) {
931bf215546Sopenharmony_ci      if (!fdl_test_layout(&testcases[i], 630))
932bf215546Sopenharmony_ci         ret = 1;
933bf215546Sopenharmony_ci   }
934bf215546Sopenharmony_ci
935bf215546Sopenharmony_ci   return ret;
936bf215546Sopenharmony_ci}
937