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 "util/half_float.h" 28#include "util/u_math.h" 29#include "a5xx.xml.h" 30 31#include <stdio.h> 32 33/* Testcases generated from cffdump --script texturator-to-unit-test-5xx.lua 34 * on a Pixel 2 35 */ 36static const struct testcase testcases[] = { 37 /* Basic POT, non-UBWC layout test */ 38 { 39 .format = PIPE_FORMAT_R9G9B9E5_FLOAT, 40 .layout = 41 { 42 .tile_mode = TILE5_3, 43 .width0 = 32, 44 .height0 = 32, 45 .slices = 46 { 47 {.offset = 0, .pitch = 256}, 48 {.offset = 8192, .pitch = 256}, 49 {.offset = 12288, .pitch = 256}, 50 {.offset = 14336, .pitch = 256}, 51 {.offset = 15360, .pitch = 256}, 52 {.offset = 15872, .pitch = 256}, 53 }, 54 }, 55 }, 56 57 /* Some 3D cases of sizes from the CTS, when I was suspicious of our 3D 58 * layout. 59 */ 60 { 61 .format = PIPE_FORMAT_R9G9B9E5_FLOAT, 62 .is_3d = true, 63 .layout = 64 { 65 .tile_mode = TILE5_3, 66 .ubwc = false, 67 .width0 = 59, 68 .height0 = 37, 69 .depth0 = 11, 70 .slices = 71 { 72 {.offset = 0, .pitch = 256}, 73 {.offset = 135168, .pitch = 256}, 74 {.offset = 176128, .pitch = 256}, 75 {.offset = 192512, .pitch = 256}, 76 {.offset = 200704, .pitch = 256}, 77 {.offset = 208896, .pitch = 256}, 78 }, 79 }, 80 }, 81 { 82 .format = PIPE_FORMAT_R32G32_FLOAT, 83 .is_3d = true, 84 .layout = 85 { 86 .tile_mode = TILE5_3, 87 .ubwc = false, 88 .width0 = 63, 89 .height0 = 29, 90 .depth0 = 11, 91 .slices = 92 { 93 {.offset = 0, .pitch = 512}, 94 {.offset = 180224, .pitch = 512}, 95 {.offset = 221184, .pitch = 512}, 96 {.offset = 237568, .pitch = 512}, 97 {.offset = 245760, .pitch = 512}, 98 {.offset = 253952, .pitch = 512}, 99 }, 100 }, 101 }, 102}; 103 104int 105main(int argc, char **argv) 106{ 107 int ret = 0; 108 109 for (int i = 0; i < ARRAY_SIZE(testcases); i++) { 110 if (!fdl_test_layout(&testcases[i], 540)) 111 ret = 1; 112 } 113 114 return ret; 115} 116