From 5abafc2a385cddd2aa692e86fb9ba0c171a3c424 Mon Sep 17 00:00:00 2001 From: jonahwilliams Date: Thu, 26 Jan 2023 18:39:58 -0800 Subject: [PATCH 1/3] [Impeller] ensure 1x1 has mipcount of 1 --- impeller/geometry/geometry_unittests.cc | 1 + impeller/geometry/size.h | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/impeller/geometry/geometry_unittests.cc b/impeller/geometry/geometry_unittests.cc index f60cf50bfeaeb..2f5cce754671b 100644 --- a/impeller/geometry/geometry_unittests.cc +++ b/impeller/geometry/geometry_unittests.cc @@ -640,6 +640,7 @@ 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); } TEST(GeometryTest, CanConvertTTypesExplicitly) { diff --git a/impeller/geometry/size.h b/impeller/geometry/size.h index 6cb55cab47472..445e3de2dbad9 100644 --- a/impeller/geometry/size.h +++ b/impeller/geometry/size.h @@ -102,7 +102,9 @@ struct TSize { if (!IsPositive()) { return 1u; } - return std::max(ceil(log2(width)), ceil(log2(height))); + constexpr size_t minimumMip = 1u; + size_t result = std::max(ceil(log2(width)), ceil(log2(height))); + return std::max(result, minimumMip); } }; From 08518ab5800a7826ee9e0e3c9b2dd062e9617dc0 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 26 Jan 2023 18:51:48 -0800 Subject: [PATCH 2/3] Update geometry_unittests.cc --- impeller/geometry/geometry_unittests.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/impeller/geometry/geometry_unittests.cc b/impeller/geometry/geometry_unittests.cc index 2f5cce754671b..6d615a94e8f11 100644 --- a/impeller/geometry/geometry_unittests.cc +++ b/impeller/geometry/geometry_unittests.cc @@ -641,6 +641,7 @@ TEST(GeometryTest, CanGenerateMipCounts) { 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) { From a4721ba70469b0231c001816644466fe1007793b Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Thu, 26 Jan 2023 18:52:10 -0800 Subject: [PATCH 3/3] Update size.h --- impeller/geometry/size.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/impeller/geometry/size.h b/impeller/geometry/size.h index 445e3de2dbad9..dc6abd4126d6e 100644 --- a/impeller/geometry/size.h +++ b/impeller/geometry/size.h @@ -99,12 +99,12 @@ struct TSize { } constexpr size_t MipCount() const { + constexpr size_t minimum_mip = 1u; if (!IsPositive()) { - return 1u; + return minimum_mip; } - constexpr size_t minimumMip = 1u; size_t result = std::max(ceil(log2(width)), ceil(log2(height))); - return std::max(result, minimumMip); + return std::max(result, minimum_mip); } };