From 1c270abef6f68cf2fea5a6515c5001bd765035cb Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 26 Jan 2023 19:33:27 -0800 Subject: [PATCH] [Impeller] ensure 1x1 has mipcount of 1 (#39182) * [Impeller] ensure 1x1 has mipcount of 1 * Update geometry_unittests.cc * Update size.h --- impeller/geometry/geometry_unittests.cc | 2 ++ impeller/geometry/size.h | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/impeller/geometry/geometry_unittests.cc b/impeller/geometry/geometry_unittests.cc index 2d40b7eac8ed7..9b6706ba9a763 100644 --- a/impeller/geometry/geometry_unittests.cc +++ b/impeller/geometry/geometry_unittests.cc @@ -646,6 +646,8 @@ TEST(GeometryTest, CanGenerateMipCounts) { ASSERT_EQ((Size{128, 0}.MipCount()), 1u); ASSERT_EQ((Size{128, -25}.MipCount()), 1u); ASSERT_EQ((Size{-128, 25}.MipCount()), 1u); + ASSERT_EQ((Size{1, 1}.MipCount()), 1u); + ASSERT_EQ((Size{0, 0}.MipCount()), 1u); } TEST(GeometryTest, CanConvertTTypesExplicitly) { diff --git a/impeller/geometry/size.h b/impeller/geometry/size.h index 6cb55cab47472..dc6abd4126d6e 100644 --- a/impeller/geometry/size.h +++ b/impeller/geometry/size.h @@ -99,10 +99,12 @@ struct TSize { } constexpr size_t MipCount() const { + constexpr size_t minimum_mip = 1u; if (!IsPositive()) { - return 1u; + return minimum_mip; } - return std::max(ceil(log2(width)), ceil(log2(height))); + size_t result = std::max(ceil(log2(width)), ceil(log2(height))); + return std::max(result, minimum_mip); } };