fd6_layout_test.c revision 7ec681f3
1/* 2 * Copyright © 2020 Google LLC 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21 * IN THE SOFTWARE. 22 */ 23 24#include "freedreno_layout.h" 25#include "fd_layout_test.h" 26#include "adreno_common.xml.h" 27#include "adreno_pm4.xml.h" 28#include "a6xx.xml.h" 29 30#include <stdio.h> 31 32static const struct testcase 33 testcases[] = 34 { 35 /* A straightforward first testcase, linear, with an obvious format. */ 36 { 37 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 38 .layout = 39 { 40 .width0 = 32, 41 .height0 = 32, 42 .slices = 43 { 44 {.offset = 0, .pitch = 256}, 45 {.offset = 8192, .pitch = 256}, 46 {.offset = 12288, .pitch = 256}, 47 {.offset = 14336, .pitch = 256}, 48 {.offset = 15360, .pitch = 256}, 49 {.offset = 15872, .pitch = 256}, 50 }, 51 }, 52 }, 53 54 /* A tiled/ubwc layout from the blob driver, at a size where the a630 55 * blob driver does something interesting for linear. 56 */ 57 { 58 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 59 .layout = 60 { 61 .tile_mode = TILE6_3, 62 .ubwc = true, 63 .width0 = 1024, 64 .height0 = 1, 65 .slices = 66 { 67 {.offset = 0, .pitch = 4096}, 68 {.offset = 65536, .pitch = 2048}, 69 {.offset = 98304, .pitch = 1024}, 70 {.offset = 114688, .pitch = 512}, 71 {.offset = 122880, .pitch = 256}, 72 {.offset = 126976, .pitch = 256}, 73 {.offset = 131072, .pitch = 256}, 74 {.offset = 135168, .pitch = 256}, 75 {.offset = 139264, .pitch = 256}, 76 {.offset = 143360, .pitch = 256}, 77 {.offset = 147456, .pitch = 256}, 78 }, 79 .ubwc_slices = 80 { 81 {.offset = 0, .pitch = 64}, 82 {.offset = 4096, .pitch = 64}, 83 {.offset = 8192, .pitch = 64}, 84 {.offset = 12288, .pitch = 64}, 85 {.offset = 16384, .pitch = 64}, 86 {.offset = 20480, .pitch = 64}, 87 {.offset = 24576, .pitch = 64}, 88 {.offset = 28672, .pitch = 64}, 89 {.offset = 32768, .pitch = 64}, 90 {.offset = 36864, .pitch = 64}, 91 {.offset = 40960, .pitch = 64}, 92 }, 93 }, 94 }, 95 96/* An interesting layout from the blob driver on a630, showing that 97 * per-level pitch must be derived from level 0's pitch, not width0. We 98 * don't do this level 0 pitch disalignment (we pick 4096), so disabled 99 * this test for now. 100 */ 101#if 0 102 { 103 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 104 .layout = { 105 .width0 = 1024, .height0 = 1, 106 .slices = { 107 { .offset = 0, .pitch = 5120 }, 108 { .offset = 5120, .pitch = 2560 }, 109 { .offset = 7680, .pitch = 1280 }, 110 { .offset = 8960, .pitch = 768 }, 111 { .offset = 9728, .pitch = 512 }, 112 { .offset = 10240, .pitch = 256 }, 113 { .offset = 10496, .pitch = 256 }, 114 { .offset = 10752, .pitch = 256 }, 115 { .offset = 11008, .pitch = 256 }, 116 { .offset = 11264, .pitch = 256 }, 117 { .offset = 11520, .pitch = 256 }, 118 }, 119 }, 120 }, 121#endif 122 123 /* A layout that we failed on (129 wide has a surprise level 1 pitch 124 * increase), and the sizes bracketing it. 125 */ 126 { 127 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 128 .layout = 129 { 130 .width0 = 128, 131 .height0 = 1, 132 .slices = 133 { 134 {.offset = 0, .pitch = 512}, 135 {.offset = 512, .pitch = 256}, 136 {.offset = 768, .pitch = 256}, 137 {.offset = 1024, .pitch = 256}, 138 {.offset = 1280, .pitch = 256}, 139 {.offset = 1536, .pitch = 256}, 140 {.offset = 1792, .pitch = 256}, 141 {.offset = 2048, .pitch = 256}, 142 }, 143 }, 144 }, 145 { 146 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 147 .layout = 148 { 149 .width0 = 129, 150 .height0 = 1, 151 .slices = 152 { 153 {.offset = 0, .pitch = 768}, 154 {.offset = 768, .pitch = 512}, 155 {.offset = 1280, .pitch = 256}, 156 {.offset = 1536, .pitch = 256}, 157 {.offset = 1792, .pitch = 256}, 158 {.offset = 2048, .pitch = 256}, 159 {.offset = 2304, .pitch = 256}, 160 {.offset = 2560, .pitch = 256}, 161 }, 162 }, 163 }, 164 { 165 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 166 .layout = 167 { 168 .width0 = 130, 169 .height0 = 1, 170 .slices = 171 { 172 {.offset = 0, .pitch = 768}, 173 {.offset = 768, .pitch = 512}, 174 {.offset = 1280, .pitch = 256}, 175 {.offset = 1536, .pitch = 256}, 176 {.offset = 1792, .pitch = 256}, 177 {.offset = 2048, .pitch = 256}, 178 {.offset = 2304, .pitch = 256}, 179 {.offset = 2560, .pitch = 256}, 180 }, 181 }, 182 }, 183 184 /* The 129 failure seems to be across formats, let's test some cpps */ 185 { 186 .format = PIPE_FORMAT_R8_UNORM, 187 .layout = 188 { 189 .width0 = 129, 190 .height0 = 1, 191 .slices = 192 { 193 {.offset = 0, .pitch = 192}, 194 {.offset = 192, .pitch = 128}, 195 {.offset = 320, .pitch = 64}, 196 {.offset = 384, .pitch = 64}, 197 {.offset = 448, .pitch = 64}, 198 {.offset = 512, .pitch = 64}, 199 {.offset = 576, .pitch = 64}, 200 {.offset = 640, .pitch = 64}, 201 }, 202 }, 203 }, 204 { 205 .format = PIPE_FORMAT_R16_UINT, 206 .layout = 207 { 208 .width0 = 129, 209 .height0 = 1, 210 .slices = 211 { 212 {.offset = 0, .pitch = 384}, 213 {.offset = 384, .pitch = 256}, 214 {.offset = 640, .pitch = 128}, 215 {.offset = 768, .pitch = 128}, 216 {.offset = 896, .pitch = 128}, 217 {.offset = 1024, .pitch = 128}, 218 {.offset = 1152, .pitch = 128}, 219 {.offset = 1280, .pitch = 128}, 220 }, 221 }, 222 }, 223 { 224 .format = PIPE_FORMAT_R32G32B32A32_FLOAT, 225 .layout = 226 { 227 .width0 = 129, 228 .height0 = 1, 229 .slices = 230 { 231 {.offset = 0, .pitch = 3072}, 232 {.offset = 3072, .pitch = 2048}, 233 {.offset = 5120, .pitch = 1024}, 234 {.offset = 6144, .pitch = 1024}, 235 {.offset = 7168, .pitch = 1024}, 236 {.offset = 8192, .pitch = 1024}, 237 {.offset = 9216, .pitch = 1024}, 238 {.offset = 10240, .pitch = 1024}, 239 }, 240 }, 241 }, 242 243 /* The 129 failure replicated at every +256 pixels wide. Pick one of 244 * them, and this time increase the height as a new variable as well. 245 */ 246 { 247 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 248 .layout = 249 { 250 .width0 = 385, 251 .height0 = 128, 252 .slices = 253 { 254 {.offset = 0, .pitch = 1792}, 255 {.offset = 229376, .pitch = 1024}, 256 {.offset = 294912, .pitch = 512}, 257 {.offset = 311296, .pitch = 256}, 258 {.offset = 315392, .pitch = 256}, 259 {.offset = 317440, .pitch = 256}, 260 {.offset = 318464, .pitch = 256}, 261 {.offset = 318976, .pitch = 256}, 262 {.offset = 319232, .pitch = 256}, 263 }, 264 }, 265 }, 266 267 /* At 257-259 (and replicated every +256 pixels) we had another 268 failure. */ 269 { 270 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 271 .layout = 272 { 273 .width0 = 257, 274 .height0 = 1, 275 .slices = 276 { 277 {.offset = 0, .pitch = 1280}, 278 {.offset = 1280, .pitch = 768}, 279 {.offset = 2048, .pitch = 512}, 280 {.offset = 2560, .pitch = 256}, 281 {.offset = 2816, .pitch = 256}, 282 {.offset = 3072, .pitch = 256}, 283 {.offset = 3328, .pitch = 256}, 284 {.offset = 3584, .pitch = 256}, 285 {.offset = 3840, .pitch = 256}, 286 }, 287 }, 288 }, 289 { 290 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 291 .layout = 292 { 293 .width0 = 258, 294 .height0 = 1, 295 .slices = 296 { 297 {.offset = 0, .pitch = 1280}, 298 {.offset = 1280, .pitch = 768}, 299 {.offset = 2048, .pitch = 512}, 300 {.offset = 2560, .pitch = 256}, 301 {.offset = 2816, .pitch = 256}, 302 {.offset = 3072, .pitch = 256}, 303 {.offset = 3328, .pitch = 256}, 304 {.offset = 3584, .pitch = 256}, 305 {.offset = 3840, .pitch = 256}, 306 }, 307 }, 308 }, 309 { 310 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 311 .layout = 312 { 313 .width0 = 259, 314 .height0 = 1, 315 .slices = 316 { 317 {.offset = 0, .pitch = 1280}, 318 {.offset = 1280, .pitch = 768}, 319 {.offset = 2048, .pitch = 512}, 320 {.offset = 2560, .pitch = 256}, 321 {.offset = 2816, .pitch = 256}, 322 {.offset = 3072, .pitch = 256}, 323 {.offset = 3328, .pitch = 256}, 324 {.offset = 3584, .pitch = 256}, 325 {.offset = 3840, .pitch = 256}, 326 }, 327 }, 328 }, 329 { 330 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 331 .layout = 332 { 333 .width0 = 260, 334 .height0 = 1, 335 .slices = 336 { 337 {.offset = 0, .pitch = 1280}, 338 {.offset = 1280, .pitch = 768}, 339 {.offset = 2048, .pitch = 512}, 340 {.offset = 2560, .pitch = 256}, 341 {.offset = 2816, .pitch = 256}, 342 {.offset = 3072, .pitch = 256}, 343 {.offset = 3328, .pitch = 256}, 344 {.offset = 3584, .pitch = 256}, 345 {.offset = 3840, .pitch = 256}, 346 }, 347 }, 348 }, 349 350 /* And, again for the 257-9 failure, test a replica with a larger size*/ 351 { 352 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 353 .layout = 354 { 355 .width0 = 513, 356 .height0 = 32, 357 .slices = 358 { 359 {.offset = 0, .pitch = 2304}, 360 {.offset = 73728, .pitch = 1280}, 361 {.offset = 94208, .pitch = 768}, 362 {.offset = 100352, .pitch = 512}, 363 {.offset = 102400, .pitch = 256}, 364 {.offset = 102912, .pitch = 256}, 365 {.offset = 103168, .pitch = 256}, 366 {.offset = 103424, .pitch = 256}, 367 {.offset = 103680, .pitch = 256}, 368 {.offset = 103936, .pitch = 256}, 369 }, 370 }, 371 }, 372 373 /* Oh, look. The 513-517 failure extends up to 518 at the next texture 374 * level! 375 */ 376 { 377 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 378 .layout = 379 { 380 .width0 = 518, 381 .height0 = 1, 382 .slices = 383 { 384 {.offset = 0, .pitch = 2304}, 385 {.offset = 2304, .pitch = 1280}, 386 {.offset = 3584, .pitch = 768}, 387 {.offset = 4352, .pitch = 512}, 388 {.offset = 4864, .pitch = 256}, 389 {.offset = 5120, .pitch = 256}, 390 {.offset = 5376, .pitch = 256}, 391 {.offset = 5632, .pitch = 256}, 392 {.offset = 5888, .pitch = 256}, 393 {.offset = 6144, .pitch = 256}, 394 }, 395 }, 396 }, 397 398 /* Tiled mode testing of the unusual 1/2-bytes-per-pixel pitch 399 alignment */ 400 { 401 .format = PIPE_FORMAT_R8_UNORM, 402 .layout = 403 { 404 .tile_mode = TILE6_3, 405 .width0 = 129, 406 .height0 = 1, 407 .slices = 408 { 409 {.offset = 0, .pitch = 256}, 410 {.offset = 8192, .pitch = 128}, 411 {.offset = 12288, .pitch = 128}, 412 {.offset = 16384, .pitch = 128}, 413 {.offset = 20480, .pitch = 128}, 414 {.offset = 20608, .pitch = 128}, 415 {.offset = 20736, .pitch = 128}, 416 {.offset = 20864, .pitch = 128}, 417 }, 418 }, 419 }, 420 421 /* Single-level RGBA8888 UBWC following UBWC alignment rules laid out 422 * in msm_media_info.h to verify that we don't break buffer sharing. 423 */ 424 { 425 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 426 .layout = 427 { 428 .tile_mode = TILE6_3, 429 .ubwc = true, 430 .width0 = 16384, 431 .height0 = 129, 432 .slices = 433 { 434 {.offset = 1024 * 48, .pitch = 16384 * 4}, 435 }, 436 .ubwc_slices = 437 { 438 {.offset = 0, .pitch = 1024}, 439 }, 440 }, 441 }, 442 443 /* UBWC: Pitch comes from POT-aligned level 0. */ 444 /* Pitch fixed in this commit, but offsets broken. Will be fixed in 445 * following commits. 446 */ 447 { 448 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 449 .layout = 450 { 451 .tile_mode = TILE6_3, 452 .ubwc = true, 453 .width0 = 2049, 454 .height0 = 128, 455 .slices = 456 { 457 {.offset = 0, .pitch = 8448}, 458 {.offset = 1081344, .pitch = 4352}, 459 {.offset = 1359872, .pitch = 2304}, 460 {.offset = 1433600, .pitch = 1280}, 461 {.offset = 1454080, .pitch = 768}, 462 {.offset = 1466368, .pitch = 512}, 463 {.offset = 1474560, .pitch = 256}, 464 {.offset = 1478656, .pitch = 256}, 465 {.offset = 1482752, .pitch = 256}, 466 {.offset = 1486848, .pitch = 256}, 467 {.offset = 1490944, .pitch = 256}, 468 {.offset = 1495040, .pitch = 256}, 469 }, 470 .ubwc_slices = 471 { 472 {.offset = 0, .pitch = 256}, 473 {.offset = 16384, .pitch = 128}, 474 {.offset = 24576, .pitch = 64}, 475 {.offset = 28672, .pitch = 64}, 476 {.offset = 32768, .pitch = 64}, 477 {.offset = 36864, .pitch = 64}, 478 {.offset = 40960, .pitch = 64}, 479 {.offset = 45056, .pitch = 64}, 480 {.offset = 49152, .pitch = 64}, 481 {.offset = 53248, .pitch = 64}, 482 {.offset = 57344, .pitch = 64}, 483 {.offset = 61440, .pitch = 64}, 484 }, 485 }, 486 }, 487 /* UBWC: Height comes from POT-aligned level 0. */ 488 { 489 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 490 .layout = 491 { 492 .tile_mode = TILE6_3, 493 .ubwc = true, 494 .width0 = 1024, 495 .height0 = 1025, 496 .slices = 497 { 498 {.offset = 0, .pitch = 4096}, 499 {.offset = 4259840, .pitch = 2048}, 500 {.offset = 5308416, .pitch = 1024}, 501 {.offset = 5570560, .pitch = 512}, 502 {.offset = 5636096, .pitch = 256}, 503 {.offset = 5652480, .pitch = 256}, 504 {.offset = 5660672, .pitch = 256}, 505 {.offset = 5664768, .pitch = 256}, 506 {.offset = 5668864, .pitch = 256}, 507 {.offset = 5672960, .pitch = 256}, 508 {.offset = 5677056, .pitch = 256}, 509 }, 510 .ubwc_slices = 511 { 512 {.offset = 0, .pitch = 64}, 513 {.offset = 32768, .pitch = 64}, 514 {.offset = 49152, .pitch = 64}, 515 {.offset = 57344, .pitch = 64}, 516 {.offset = 61440, .pitch = 64}, 517 {.offset = 65536, .pitch = 64}, 518 {.offset = 69632, .pitch = 64}, 519 {.offset = 73728, .pitch = 64}, 520 {.offset = 77824, .pitch = 64}, 521 {.offset = 81920, .pitch = 64}, 522 {.offset = 86016, .pitch = 64}, 523 }, 524 }, 525 }, 526 527 /* UBWC: Get at minimum height of a level across cpps */ 528 { 529 .format = PIPE_FORMAT_R16_UINT, 530 .layout = 531 { 532 .tile_mode = TILE6_3, 533 .ubwc = true, 534 .width0 = 16384, 535 .height0 = 1, 536 .slices = 537 { 538 {.offset = 0, .pitch = 32768}, 539 {.offset = 524288, .pitch = 16384}, 540 {.offset = 786432, .pitch = 8192}, 541 {.offset = 917504, .pitch = 4096}, 542 {.offset = 983040, .pitch = 2048}, 543 {.offset = 1015808, .pitch = 1024}, 544 {.offset = 1032192, .pitch = 512}, 545 {.offset = 1040384, .pitch = 256}, 546 {.offset = 1044480, .pitch = 256}, 547 {.offset = 1048576, .pitch = 256}, 548 {.offset = 1052672, .pitch = 256}, 549 {.offset = 1056768, .pitch = 256}, 550 {.offset = 1060864, .pitch = 256}, 551 {.offset = 1064960, .pitch = 256}, 552 {.offset = 1069056, .pitch = 256}, 553 }, 554 .ubwc_slices = 555 { 556 {.offset = 0, .pitch = 1024}, 557 {.offset = 65536, .pitch = 512}, 558 {.offset = 98304, .pitch = 256}, 559 {.offset = 114688, .pitch = 128}, 560 {.offset = 122880, .pitch = 64}, 561 {.offset = 126976, .pitch = 64}, 562 {.offset = 131072, .pitch = 64}, 563 {.offset = 135168, .pitch = 64}, 564 {.offset = 139264, .pitch = 64}, 565 {.offset = 143360, .pitch = 64}, 566 {.offset = 147456, .pitch = 64}, 567 {.offset = 151552, .pitch = 64}, 568 {.offset = 155648, .pitch = 64}, 569 {.offset = 159744, .pitch = 64}, 570 {.offset = 163840, .pitch = 64}, 571 }, 572 }, 573 }, 574 { 575 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 576 .layout = 577 { 578 .tile_mode = TILE6_3, 579 .ubwc = true, 580 .width0 = 16384, 581 .height0 = 1, 582 .slices = 583 { 584 {.offset = 0, .pitch = 65536}, 585 {.offset = 1048576, .pitch = 32768}, 586 {.offset = 1572864, .pitch = 16384}, 587 {.offset = 1835008, .pitch = 8192}, 588 {.offset = 1966080, .pitch = 4096}, 589 {.offset = 2031616, .pitch = 2048}, 590 {.offset = 2064384, .pitch = 1024}, 591 {.offset = 2080768, .pitch = 512}, 592 {.offset = 2088960, .pitch = 256}, 593 {.offset = 2093056, .pitch = 256}, 594 {.offset = 2097152, .pitch = 256}, 595 {.offset = 2101248, .pitch = 256}, 596 {.offset = 2105344, .pitch = 256}, 597 {.offset = 2109440, .pitch = 256}, 598 {.offset = 2113536, .pitch = 256}, 599 }, 600 .ubwc_slices = 601 { 602 {.offset = 0, .pitch = 1024}, 603 {.offset = 65536, .pitch = 512}, 604 {.offset = 98304, .pitch = 256}, 605 {.offset = 114688, .pitch = 128}, 606 {.offset = 122880, .pitch = 64}, 607 {.offset = 126976, .pitch = 64}, 608 {.offset = 131072, .pitch = 64}, 609 {.offset = 135168, .pitch = 64}, 610 {.offset = 139264, .pitch = 64}, 611 {.offset = 143360, .pitch = 64}, 612 {.offset = 147456, .pitch = 64}, 613 {.offset = 151552, .pitch = 64}, 614 {.offset = 155648, .pitch = 64}, 615 {.offset = 159744, .pitch = 64}, 616 {.offset = 163840, .pitch = 64}, 617 }, 618 }, 619 }, 620 { 621 .format = PIPE_FORMAT_R32G32B32A32_FLOAT, 622 .layout = 623 { 624 .tile_mode = TILE6_3, 625 .ubwc = true, 626 .width0 = 16384, 627 .height0 = 1, 628 .slices = 629 { 630 {.offset = 0, .pitch = 262144}, 631 {.offset = 4194304, .pitch = 131072}, 632 {.offset = 6291456, .pitch = 65536}, 633 {.offset = 7340032, .pitch = 32768}, 634 {.offset = 7864320, .pitch = 16384}, 635 {.offset = 8126464, .pitch = 8192}, 636 {.offset = 8257536, .pitch = 4096}, 637 {.offset = 8323072, .pitch = 2048}, 638 {.offset = 8355840, .pitch = 1024}, 639 {.offset = 8372224, .pitch = 1024}, 640 {.offset = 8388608, .pitch = 1024}, 641 {.offset = 8404992, .pitch = 1024}, 642 {.offset = 8421376, .pitch = 1024}, 643 {.offset = 8437760, .pitch = 1024}, 644 {.offset = 8454144, .pitch = 1024}, 645 }, 646 .ubwc_slices = 647 { 648 {.offset = 0, .pitch = 4096}, 649 {.offset = 262144, .pitch = 2048}, 650 {.offset = 393216, .pitch = 1024}, 651 {.offset = 458752, .pitch = 512}, 652 {.offset = 491520, .pitch = 256}, 653 {.offset = 507904, .pitch = 128}, 654 {.offset = 516096, .pitch = 64}, 655 {.offset = 520192, .pitch = 64}, 656 {.offset = 524288, .pitch = 64}, 657 {.offset = 528384, .pitch = 64}, 658 {.offset = 532480, .pitch = 64}, 659 {.offset = 536576, .pitch = 64}, 660 {.offset = 540672, .pitch = 64}, 661 {.offset = 544768, .pitch = 64}, 662 {.offset = 548864, .pitch = 64}, 663 }, 664 }, 665 }, 666 667 { 668 .format = PIPE_FORMAT_R8G8B8A8_UNORM, 669 .layout = 670 { 671 .tile_mode = TILE6_3, 672 .ubwc = true, 673 .nr_samples = 4, 674 .width0 = 412, 675 .height0 = 732, 676 .slices = 677 { 678 {.offset = 0, .pitch = 7168}, 679 }, 680 .ubwc_slices = 681 { 682 {.offset = 0, .pitch = 128}, 683 }, 684 }, 685 }, 686}; 687 688int 689main(int argc, char **argv) 690{ 691 int ret = 0; 692 693 for (int i = 0; i < ARRAY_SIZE(testcases); i++) { 694 if (!fdl_test_layout(&testcases[i], 630)) 695 ret = 1; 696 } 697 698 return ret; 699} 700