diff options
5 files changed, 59 insertions, 20 deletions
diff --git a/libs/binder/ndk/include_cpp/android/persistable_bundle_aidl.h b/libs/binder/ndk/include_cpp/android/persistable_bundle_aidl.h index b771e9677e..d54d62e0c9 100644 --- a/libs/binder/ndk/include_cpp/android/persistable_bundle_aidl.h +++ b/libs/binder/ndk/include_cpp/android/persistable_bundle_aidl.h @@ -25,11 +25,13 @@ // Include llndk-versioning.h only for vendor build as it is not available for NDK headers. #if defined(__ANDROID_VENDOR__) #include <android/llndk-versioning.h> -#else // __ANDROID_VENDOR__ -#if !defined(API_LEVEL_AT_LEAST) +#elif !defined(API_LEVEL_AT_LEAST) +#if defined(__BIONIC__) #define API_LEVEL_AT_LEAST(sdk_api_level, vendor_api_level) \ (__builtin_available(android sdk_api_level, *)) -#endif +#else +#define API_LEVEL_AT_LEAST(sdk_api_level, vendor_api_level) (true) +#endif // __BIONIC__ #endif // __ANDROID_VENDOR__ namespace aidl::android::os { diff --git a/libs/binder/ndk/include_ndk/android/binder_status.h b/libs/binder/ndk/include_ndk/android/binder_status.h index 14edf2bfb6..e968bac539 100644 --- a/libs/binder/ndk/include_ndk/android/binder_status.h +++ b/libs/binder/ndk/include_ndk/android/binder_status.h @@ -117,9 +117,9 @@ enum { }; /** - * One of the EXCEPTION_* types. + * One of the EX_* enumerators. * - * All unrecognized values are coerced into EXCEPTION_TRANSACTION_FAILED. + * All unrecognized values are coerced into EX_TRANSACTION_FAILED. * * These exceptions values are used by the SDK for parcelables. Also see Parcel.java. */ diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp index 9b1b64ae8c..3efd84f145 100644 --- a/libs/binder/tests/binderRpcTest.cpp +++ b/libs/binder/tests/binderRpcTest.cpp @@ -1168,7 +1168,8 @@ bool testSupportVsockLoopback() { socklen_t len = sizeof(serverAddr); ret = getsockname(serverFd.get(), reinterpret_cast<sockaddr*>(&serverAddr), &len); LOG_ALWAYS_FATAL_IF(0 != ret, "Failed to getsockname: %s", strerror(errno)); - LOG_ALWAYS_FATAL_IF(len < sizeof(serverAddr), "getsockname didn't read the full addr struct"); + LOG_ALWAYS_FATAL_IF(len < static_cast<socklen_t>(sizeof(serverAddr)), + "getsockname didn't read the full addr struct"); ret = TEMP_FAILURE_RETRY(listen(serverFd.get(), 1 /*backlog*/)); LOG_ALWAYS_FATAL_IF(0 != ret, "Could not listen socket on port %u: %s", serverAddr.svm_port, diff --git a/services/surfaceflinger/CompositionEngine/src/DisplayColorProfile.cpp b/services/surfaceflinger/CompositionEngine/src/DisplayColorProfile.cpp index f339d41ef8..4424a04541 100644 --- a/services/surfaceflinger/CompositionEngine/src/DisplayColorProfile.cpp +++ b/services/surfaceflinger/CompositionEngine/src/DisplayColorProfile.cpp @@ -260,10 +260,6 @@ const HdrCapabilities& DisplayColorProfile::getHdrCapabilities() const { void DisplayColorProfile::populateColorModes( const DisplayColorProfileCreationArgs::HwcColorModes& hwcColorModes) { - if (!hasWideColorGamut()) { - return; - } - // collect all known SDR render intents std::unordered_set<RenderIntent> sdrRenderIntents(sSdrRenderIntents.begin(), sSdrRenderIntents.end()); @@ -352,13 +348,9 @@ void DisplayColorProfile::getBestColorMode(Dataspace dataspace, RenderIntent int *outMode = iter->second.colorMode; *outIntent = iter->second.renderIntent; } else { - // this is unexpected on a WCG display - if (hasWideColorGamut()) { - ALOGE("map unknown (%s)/(%s) to default color mode", - dataspaceDetails(static_cast<android_dataspace_t>(dataspace)).c_str(), - decodeRenderIntent(intent).c_str()); - } - + ALOGI("map unknown (%s)/(%s) to default color mode", + dataspaceDetails(static_cast<android_dataspace_t>(dataspace)).c_str(), + decodeRenderIntent(intent).c_str()); *outDataspace = Dataspace::UNKNOWN; *outMode = ColorMode::NATIVE; *outIntent = RenderIntent::COLORIMETRIC; diff --git a/services/surfaceflinger/CompositionEngine/tests/DisplayColorProfileTest.cpp b/services/surfaceflinger/CompositionEngine/tests/DisplayColorProfileTest.cpp index 03a97dc770..c354e4a758 100644 --- a/services/surfaceflinger/CompositionEngine/tests/DisplayColorProfileTest.cpp +++ b/services/surfaceflinger/CompositionEngine/tests/DisplayColorProfileTest.cpp @@ -123,10 +123,10 @@ public: .build(); } - static impl::DisplayColorProfile createProfileWithSRGBColorModeSupport() { + static impl::DisplayColorProfile createProfileWithSRGBColorModeSupport(bool wcg = true) { return ProfileFactory() - .setHasWideColorGamut(true) .addHdrType(Hdr::HDR10) + .setHasWideColorGamut(wcg) .addColorModeRenderIntent(ColorMode::SRGB, RenderIntent::COLORIMETRIC) .addColorModeRenderIntent(ColorMode::SRGB, RenderIntent::ENHANCE) .addColorModeRenderIntent(ColorMode::SRGB, VendorRenderIntent) @@ -289,7 +289,7 @@ TEST_F(DisplayColorProfileTest, ctorUsesOrDefaultsLuminanceValuesFromInputArgs) TEST_F(DisplayColorProfileTest, hasRenderIntentReturnsExpectedValueWhenOutputHasNoSupport) { auto profile = ProfileFactory::createProfileWithNoColorModeSupport(); - EXPECT_FALSE(profile.hasRenderIntent(RenderIntent::COLORIMETRIC)); + EXPECT_TRUE(profile.hasRenderIntent(RenderIntent::COLORIMETRIC)); EXPECT_FALSE(profile.hasRenderIntent(RenderIntent::ENHANCE)); EXPECT_FALSE(profile.hasRenderIntent(RenderIntent::TONE_MAP_COLORIMETRIC)); EXPECT_FALSE(profile.hasRenderIntent(RenderIntent::TONE_MAP_ENHANCE)); @@ -306,6 +306,16 @@ TEST_F(DisplayColorProfileTest, hasRenderIntentReturnsExpectedValueWhenOutputHas EXPECT_FALSE(profile.hasRenderIntent(VendorRenderIntent)); } +TEST_F(DisplayColorProfileTest, hasRenderIntentReturnsExpectedValueWhenOutputHasSRGBSupport_NoWCG) { + auto profile = ProfileFactory::createProfileWithSRGBColorModeSupport(false); + + EXPECT_TRUE(profile.hasRenderIntent(RenderIntent::COLORIMETRIC)); + EXPECT_TRUE(profile.hasRenderIntent(RenderIntent::ENHANCE)); + EXPECT_FALSE(profile.hasRenderIntent(RenderIntent::TONE_MAP_COLORIMETRIC)); + EXPECT_FALSE(profile.hasRenderIntent(RenderIntent::TONE_MAP_ENHANCE)); + EXPECT_TRUE(profile.hasRenderIntent(VendorRenderIntent)); +} + TEST_F(DisplayColorProfileTest, hasRenderIntentReturnsExpectedValueWhenOutputHasSRGBSupport) { auto profile = ProfileFactory::createProfileWithSRGBColorModeSupport(); @@ -476,6 +486,40 @@ TEST_F(DisplayColorProfileTest, getBestColorModeReturnsExpectedModesWhenOutputHa checkGetBestColorMode(profile, expectedResults); } +TEST_F(DisplayColorProfileTest, + getBestColorModeReturnsExpectedModesWhenOutputHasSRGBSupport_NoWCG) { + auto profile = ProfileFactory::createProfileWithSRGBColorModeSupport(false); + + // Note: This table of expected values goes with the table of arguments + // used in checkGetBestColorMode. + using Result = std::tuple<Dataspace, ColorMode, RenderIntent>; + std::array<Result, 15> expectedResults = { + /* clang-format off */ + /* 0 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 1 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::ENHANCE}, + /* 2 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, VendorRenderIntent}, + + /* 3 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 4 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::ENHANCE}, + /* 5 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, VendorRenderIntent}, + + /* 6 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 7 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::ENHANCE}, + /* 8 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, VendorRenderIntent}, + + /* 9 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 10 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 11 */ Result{Dataspace::UNKNOWN, ColorMode::NATIVE, RenderIntent::COLORIMETRIC}, + + /* 12 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 13 */ Result{Dataspace::V0_SRGB, ColorMode::SRGB, RenderIntent::COLORIMETRIC}, + /* 14 */ Result{Dataspace::UNKNOWN, ColorMode::NATIVE, RenderIntent::COLORIMETRIC}, + /* clang-format on */ + }; + + checkGetBestColorMode(profile, expectedResults); +} + TEST_F(DisplayColorProfileTest, getBestColorModeReturnsExpectedModesWhenOutputHasSRGBSupport) { auto profile = ProfileFactory::createProfileWithSRGBColorModeSupport(); |