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