mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-20 13:28:09 +02:00
See 0afd691f29 ("panfrost: clang-format the tree") for why I'm doing this.
Asahi already mostly follows Mesa style so this doesn't do much. But this means
we can all stop thinking about formatting and trust the robot poets to do that
for us.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20434>
158 lines
3.5 KiB
C++
158 lines
3.5 KiB
C++
/*
|
|
* Copyright 2022 Alyssa Rosenzweig
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#include "util/format/u_format.h"
|
|
#include "agx_tilebuffer.h"
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
struct test {
|
|
const char *name;
|
|
uint8_t nr_samples;
|
|
enum pipe_format formats[8];
|
|
struct agx_tilebuffer_layout layout;
|
|
uint32_t total_size;
|
|
};
|
|
|
|
/* clang-format off */
|
|
struct test tests[] = {
|
|
{
|
|
"Simple test",
|
|
1,
|
|
{ PIPE_FORMAT_R8G8B8A8_UNORM },
|
|
{
|
|
.offset_B = { 0 },
|
|
.sample_size_B = 8,
|
|
.nr_samples = 1,
|
|
.tile_size = { 32, 32 },
|
|
},
|
|
8192
|
|
},
|
|
{
|
|
"MSAA 2x",
|
|
2,
|
|
{ PIPE_FORMAT_R8G8B8A8_UNORM },
|
|
{
|
|
.offset_B = { 0 },
|
|
.sample_size_B = 8,
|
|
.nr_samples = 2,
|
|
.tile_size = { 32, 32 },
|
|
},
|
|
16384
|
|
},
|
|
{
|
|
"MSAA 4x",
|
|
4,
|
|
{ PIPE_FORMAT_R8G8B8A8_UNORM },
|
|
{
|
|
.offset_B = { 0 },
|
|
.sample_size_B = 8,
|
|
.nr_samples = 4,
|
|
.tile_size = { 32, 16 },
|
|
},
|
|
16384
|
|
},
|
|
{
|
|
"MRT",
|
|
1,
|
|
{
|
|
PIPE_FORMAT_R16_SINT,
|
|
PIPE_FORMAT_R32G32_FLOAT,
|
|
PIPE_FORMAT_R8_SINT,
|
|
PIPE_FORMAT_R32G32_SINT,
|
|
},
|
|
{
|
|
.offset_B = { 0, 4, 12, 16 },
|
|
.sample_size_B = 24,
|
|
.nr_samples = 1,
|
|
.tile_size = { 32, 32 },
|
|
},
|
|
24576
|
|
},
|
|
{
|
|
"MRT with MSAA 2x",
|
|
2,
|
|
{
|
|
PIPE_FORMAT_R16_SINT,
|
|
PIPE_FORMAT_R32G32_FLOAT,
|
|
PIPE_FORMAT_R8_SINT,
|
|
PIPE_FORMAT_R32G32_SINT,
|
|
},
|
|
{
|
|
.offset_B = { 0, 4, 12, 16 },
|
|
.sample_size_B = 24,
|
|
.nr_samples = 2,
|
|
.tile_size = { 32, 16 },
|
|
},
|
|
24576
|
|
},
|
|
{
|
|
"MRT with MSAA 4x",
|
|
4,
|
|
{
|
|
PIPE_FORMAT_R16_SINT,
|
|
PIPE_FORMAT_R32G32_FLOAT,
|
|
PIPE_FORMAT_R8_SINT,
|
|
PIPE_FORMAT_R32G32_SINT,
|
|
},
|
|
{
|
|
.offset_B = { 0, 4, 12, 16 },
|
|
.sample_size_B = 24,
|
|
.nr_samples = 4,
|
|
.tile_size = { 16, 16 },
|
|
},
|
|
24576
|
|
},
|
|
{
|
|
"MRT test requiring 2 alignment on the second RT",
|
|
1,
|
|
{ PIPE_FORMAT_R8_UNORM, PIPE_FORMAT_R16G16_SNORM },
|
|
{
|
|
.offset_B = { 0, 2 },
|
|
.sample_size_B = 8,
|
|
.nr_samples = 1,
|
|
.tile_size = { 32, 32 },
|
|
},
|
|
8192
|
|
},
|
|
{
|
|
"Simple MRT test requiring 4 alignment on the second RT",
|
|
1,
|
|
{ PIPE_FORMAT_R8_UNORM, PIPE_FORMAT_R10G10B10A2_UNORM },
|
|
{
|
|
.offset_B = { 0, 4 },
|
|
.sample_size_B = 8,
|
|
.nr_samples = 1,
|
|
.tile_size = { 32, 32 },
|
|
},
|
|
8192
|
|
}
|
|
};
|
|
/* clang-format on */
|
|
|
|
TEST(Tilebuffer, Layouts)
|
|
{
|
|
for (unsigned i = 0; i < ARRAY_SIZE(tests); ++i) {
|
|
unsigned nr_cbufs;
|
|
|
|
for (nr_cbufs = 0; nr_cbufs < ARRAY_SIZE(tests[i].formats) &&
|
|
tests[i].formats[nr_cbufs] != PIPE_FORMAT_NONE;
|
|
++nr_cbufs)
|
|
;
|
|
|
|
struct agx_tilebuffer_layout actual = agx_build_tilebuffer_layout(
|
|
tests[i].formats, nr_cbufs, tests[i].nr_samples);
|
|
|
|
ASSERT_EQ(tests[i].layout.sample_size_B, actual.sample_size_B)
|
|
<< tests[i].name;
|
|
ASSERT_EQ(tests[i].layout.nr_samples, actual.nr_samples) << tests[i].name;
|
|
ASSERT_EQ(tests[i].layout.tile_size.width, actual.tile_size.width)
|
|
<< tests[i].name;
|
|
ASSERT_EQ(tests[i].layout.tile_size.height, actual.tile_size.height)
|
|
<< tests[i].name;
|
|
ASSERT_EQ(tests[i].total_size, agx_tilebuffer_total_size(&tests[i].layout))
|
|
<< tests[i].name;
|
|
}
|
|
}
|