Android NDK: Migrate DEPS to NDK r27
https://github.com/android/ndk/releases/tag/r27 * Fixes sign-compare with new ADataSpace backing type. Replaces previous uint64_t with the actual ADataSpace enum. * Fixes unittest to ignore nullptr when compiling, as we're explicitly trying to test the SEGV behavior when that occurs. Bug: 353699308 Change-Id: I0f6672567354820980320719ccf6c3bd3aab36ee Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5718979 Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Alex Gough <ajgo@chromium.org> Commit-Queue: Prashanth Swaminathan <prashanthsw@google.com> Reviewed-by: Andrew Grieve <agrieve@chromium.org> Reviewed-by: Bo Liu <boliu@chromium.org> Cr-Commit-Position: refs/heads/main@{#1333126}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
6e437cee2e
commit
51bfd7aa11
DEPS
build/config/android
sandbox/linux/seccomp-bpf-helpers
third_party/android_toolchain
ui/gfx/android
2
DEPS
2
DEPS
@ -1419,7 +1419,7 @@ deps = {
|
||||
'packages': [
|
||||
{
|
||||
'package': 'chromium/third_party/android_toolchain/android_toolchain',
|
||||
'version': 'h9HeidXTeHQ-oskldbqCZx26-7VrVvXpLfqOI87uy4QC',
|
||||
'version': 'Idl-vYnWGnM8K3XJhM3h6zjYVDXlnljVz3FE00V9IM8C',
|
||||
},
|
||||
],
|
||||
'condition': 'checkout_android_native_support',
|
||||
|
@ -134,7 +134,7 @@ if (is_android || is_chromeos) {
|
||||
# Today (2023-08-30) only the canary Android NDK supports RISC-V64.
|
||||
default_android_ndk_root = "//third_party/android_toolchain_canary/ndk"
|
||||
}
|
||||
default_android_ndk_version = "r26b"
|
||||
default_android_ndk_version = "r27"
|
||||
} else {
|
||||
assert(defined(default_android_ndk_version))
|
||||
}
|
||||
|
@ -108,7 +108,10 @@ BPF_DEATH_TEST_C(
|
||||
GetSockoptPrintsCorrectMessage,
|
||||
DEATH_SEGV_MESSAGE(sandbox::GetSockoptErrorMessageContentForTests()),
|
||||
DisallowSockoptPolicy) {
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wnonnull"
|
||||
getsockopt(0, 0, 0, nullptr, nullptr);
|
||||
#pragma GCC diagnostic pop
|
||||
}
|
||||
|
||||
const char kSigsysMessage[] =
|
||||
|
@ -1,6 +1,6 @@
|
||||
Name: Android NDK
|
||||
URL: http://developer.android.com/ndk/index.html
|
||||
Version: r26b
|
||||
Version: r27
|
||||
Security Critical: no
|
||||
Shipped: yes
|
||||
License: Apache Version 2.0
|
||||
|
@ -100,7 +100,7 @@ using pASurfaceTransaction_setDamageRegion =
|
||||
using pASurfaceTransaction_setBufferDataSpace =
|
||||
void (*)(ASurfaceTransaction* transaction,
|
||||
ASurfaceControl* surface,
|
||||
uint64_t data_space);
|
||||
ADataSpace data_space);
|
||||
using pASurfaceTransaction_setHdrMetadata_cta861_3 =
|
||||
void (*)(ASurfaceTransaction* transaction,
|
||||
ASurfaceControl* surface,
|
||||
@ -359,48 +359,33 @@ int32_t OverlayTransformToWindowTransform(gfx::OverlayTransform transform) {
|
||||
return ANATIVEWINDOW_TRANSFORM_IDENTITY;
|
||||
}
|
||||
|
||||
// Remove this and use ADataSpace when SDK will roll. Note, this doesn't define
|
||||
// any new data spaces, just defines a primary(standard)/transfer/range
|
||||
// separately.
|
||||
enum DataSpace : uint64_t {
|
||||
// Primaries
|
||||
STANDARD_BT709 = 1 << 16,
|
||||
STANDARD_BT601_625 = 2 << 16,
|
||||
STANDARD_BT601_525 = 4 << 16,
|
||||
STANDARD_BT2020 = 6 << 16,
|
||||
STANDARD_DCI_P3 = 10 << 16,
|
||||
// Transfer functions
|
||||
TRANSFER_LINEAR = 1 << 22,
|
||||
TRANSFER_SRGB = 2 << 22,
|
||||
TRANSFER_SMPTE_170M = 3 << 22,
|
||||
TRANSFER_ST2084 = 7 << 22,
|
||||
TRANSFER_HLG = 8 << 22,
|
||||
// Ranges;
|
||||
RANGE_FULL = 1 << 27,
|
||||
RANGE_LIMITED = 2 << 27,
|
||||
RANGE_EXTENDED = 3 << 27,
|
||||
RANGE_MASK = 7 << 27,
|
||||
inline ADataSpace operator|(ADataSpace a, ADataSpace b) {
|
||||
return static_cast<ADataSpace>(static_cast<int32_t>(a) |
|
||||
static_cast<int32_t>(b));
|
||||
}
|
||||
|
||||
ADATASPACE_DCI_P3 = 155844608
|
||||
};
|
||||
inline ADataSpace& operator|=(ADataSpace& a, ADataSpace b) {
|
||||
return a = static_cast<ADataSpace>(static_cast<int32_t>(a) |
|
||||
static_cast<int32_t>(b));
|
||||
}
|
||||
|
||||
bool SetDataSpaceStandard(const gfx::ColorSpace& color_space,
|
||||
uint64_t& dataspace) {
|
||||
ADataSpace& dataspace) {
|
||||
switch (color_space.GetPrimaryID()) {
|
||||
case gfx::ColorSpace::PrimaryID::BT709:
|
||||
dataspace |= DataSpace::STANDARD_BT709;
|
||||
dataspace |= STANDARD_BT709;
|
||||
return true;
|
||||
case gfx::ColorSpace::PrimaryID::BT470BG:
|
||||
dataspace |= DataSpace::STANDARD_BT601_625;
|
||||
dataspace |= STANDARD_BT601_625;
|
||||
return true;
|
||||
case gfx::ColorSpace::PrimaryID::SMPTE170M:
|
||||
dataspace |= DataSpace::STANDARD_BT601_525;
|
||||
dataspace |= STANDARD_BT601_525;
|
||||
return true;
|
||||
case gfx::ColorSpace::PrimaryID::BT2020:
|
||||
dataspace |= DataSpace::STANDARD_BT2020;
|
||||
dataspace |= STANDARD_BT2020;
|
||||
return true;
|
||||
case gfx::ColorSpace::PrimaryID::P3:
|
||||
dataspace |= DataSpace::STANDARD_DCI_P3;
|
||||
dataspace |= STANDARD_DCI_P3;
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@ -408,29 +393,29 @@ bool SetDataSpaceStandard(const gfx::ColorSpace& color_space,
|
||||
}
|
||||
|
||||
bool SetDataSpaceTransfer(const gfx::ColorSpace& color_space,
|
||||
uint64_t& dataspace,
|
||||
ADataSpace& dataspace,
|
||||
float& extended_range_brightness_ratio) {
|
||||
extended_range_brightness_ratio = 1.f;
|
||||
switch (color_space.GetTransferID()) {
|
||||
case gfx::ColorSpace::TransferID::SMPTE170M:
|
||||
dataspace |= DataSpace::TRANSFER_SMPTE_170M;
|
||||
dataspace |= TRANSFER_SMPTE_170M;
|
||||
return true;
|
||||
case gfx::ColorSpace::TransferID::LINEAR_HDR:
|
||||
dataspace |= DataSpace::TRANSFER_LINEAR;
|
||||
dataspace |= TRANSFER_LINEAR;
|
||||
return true;
|
||||
case gfx::ColorSpace::TransferID::PQ:
|
||||
dataspace |= DataSpace::TRANSFER_ST2084;
|
||||
dataspace |= TRANSFER_ST2084;
|
||||
return true;
|
||||
case gfx::ColorSpace::TransferID::HLG:
|
||||
dataspace |= DataSpace::TRANSFER_HLG;
|
||||
dataspace |= TRANSFER_HLG;
|
||||
return true;
|
||||
case gfx::ColorSpace::TransferID::SRGB:
|
||||
dataspace |= DataSpace::TRANSFER_SRGB;
|
||||
dataspace |= TRANSFER_SRGB;
|
||||
return true;
|
||||
case gfx::ColorSpace::TransferID::BT709:
|
||||
// We use SRGB for BT709. See |ColorSpace::GetTransferFunction()| for
|
||||
// details.
|
||||
dataspace |= DataSpace::TRANSFER_SRGB;
|
||||
dataspace |= TRANSFER_SRGB;
|
||||
return true;
|
||||
default: {
|
||||
skcms_TransferFunction trfn;
|
||||
@ -438,12 +423,12 @@ bool SetDataSpaceTransfer(const gfx::ColorSpace& color_space,
|
||||
if (color_space.GetTransferFunction(&trfn)) {
|
||||
if (skia::IsScaledTransferFunction(SkNamedTransferFnExt::kSRGB, trfn,
|
||||
&extended_range_brightness_ratio)) {
|
||||
dataspace |= DataSpace::TRANSFER_SRGB;
|
||||
dataspace |= TRANSFER_SRGB;
|
||||
return true;
|
||||
}
|
||||
if (skia::IsScaledTransferFunction(SkNamedTransferFn::kLinear, trfn,
|
||||
&extended_range_brightness_ratio)) {
|
||||
dataspace |= DataSpace::TRANSFER_LINEAR;
|
||||
dataspace |= TRANSFER_LINEAR;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -455,18 +440,18 @@ bool SetDataSpaceTransfer(const gfx::ColorSpace& color_space,
|
||||
bool SetDataSpaceRange(const gfx::ColorSpace& color_space,
|
||||
float extended_range_brightness_ratio,
|
||||
float desired_brightness_ratio,
|
||||
uint64_t& dataspace) {
|
||||
ADataSpace& dataspace) {
|
||||
switch (color_space.GetRangeID()) {
|
||||
case gfx::ColorSpace::RangeID::FULL:
|
||||
if (extended_range_brightness_ratio > 1.f ||
|
||||
desired_brightness_ratio > 1.f) {
|
||||
dataspace |= DataSpace::RANGE_EXTENDED;
|
||||
dataspace |= RANGE_EXTENDED;
|
||||
} else {
|
||||
dataspace |= DataSpace::RANGE_FULL;
|
||||
dataspace |= RANGE_FULL;
|
||||
}
|
||||
return true;
|
||||
case gfx::ColorSpace::RangeID::LIMITED:
|
||||
dataspace |= DataSpace::RANGE_LIMITED;
|
||||
dataspace |= RANGE_LIMITED;
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@ -572,7 +557,7 @@ bool SurfaceControl::IsSupported() {
|
||||
|
||||
bool SurfaceControl::SupportsColorSpace(const gfx::ColorSpace& color_space) {
|
||||
float desired_brightness_ratio = 1.f;
|
||||
uint64_t dataspace = ADATASPACE_UNKNOWN;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 1.f;
|
||||
return ColorSpaceToADataSpace(color_space, desired_brightness_ratio,
|
||||
dataspace, extended_range_brightness_ratio);
|
||||
@ -581,7 +566,7 @@ bool SurfaceControl::SupportsColorSpace(const gfx::ColorSpace& color_space) {
|
||||
bool SurfaceControl::ColorSpaceToADataSpace(
|
||||
const gfx::ColorSpace& color_space,
|
||||
float desired_brightness_ratio,
|
||||
uint64_t& out_dataspace,
|
||||
ADataSpace& out_dataspace,
|
||||
float& out_extended_range_brightness_ratio) {
|
||||
out_dataspace = ADATASPACE_UNKNOWN;
|
||||
out_extended_range_brightness_ratio = 1.f;
|
||||
@ -594,12 +579,11 @@ bool SurfaceControl::ColorSpaceToADataSpace(
|
||||
if (base::android::BuildInfo::GetInstance()->sdk_int() >=
|
||||
base::android::SDK_VERSION_S) {
|
||||
if (color_space == gfx::ColorSpace::CreateExtendedSRGB()) {
|
||||
out_dataspace = DataSpace::STANDARD_BT709 | DataSpace::TRANSFER_SRGB |
|
||||
DataSpace::RANGE_EXTENDED;
|
||||
out_dataspace = STANDARD_BT709 | TRANSFER_SRGB | RANGE_EXTENDED;
|
||||
return true;
|
||||
}
|
||||
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 1.f;
|
||||
if (!SetDataSpaceStandard(color_space, dataspace)) {
|
||||
return false;
|
||||
@ -875,7 +859,7 @@ void SurfaceControl::Transaction::SetColorSpace(
|
||||
const gfx::ColorSpace& color_space,
|
||||
const std::optional<HDRMetadata>& metadata) {
|
||||
// Populate the data space and brightness ratios.
|
||||
uint64_t data_space = ADATASPACE_UNKNOWN;
|
||||
ADataSpace data_space = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 1.f;
|
||||
float desired_brightness_ratio = 1.f;
|
||||
if (metadata && metadata->extended_range &&
|
||||
@ -896,8 +880,7 @@ void SurfaceControl::Transaction::SetColorSpace(
|
||||
SurfaceControlMethods::Get().ASurfaceTransaction_setBufferDataSpaceFn(
|
||||
transaction_, surface.surface(), data_space);
|
||||
|
||||
const bool extended_range =
|
||||
(data_space & DataSpace::RANGE_MASK) == DataSpace::RANGE_EXTENDED;
|
||||
const bool extended_range = (data_space & RANGE_MASK) == RANGE_EXTENDED;
|
||||
|
||||
// Set the HDR metadata for not extended SRGB case.
|
||||
if (metadata && !extended_range) {
|
||||
|
@ -47,7 +47,7 @@ class GFX_EXPORT SurfaceControl {
|
||||
static bool ColorSpaceToADataSpace(
|
||||
const gfx::ColorSpace& color_space,
|
||||
float desired_brightness_ratio,
|
||||
uint64_t& out_dataspace,
|
||||
ADataSpace& out_dataspace,
|
||||
float& out_extended_range_brightness_ratio);
|
||||
|
||||
// Returns the usage flags required for using an AHardwareBuffer with the
|
||||
|
@ -168,7 +168,7 @@ TEST_F(SurfaceControlTransactionTest, CallbackSetupAfterGetTransaction) {
|
||||
TEST(SurfaceControl, ColorSpaceToADataSpace) {
|
||||
// Invalid color spaces are mapped to sRGB.
|
||||
{
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 0.f;
|
||||
EXPECT_TRUE(SurfaceControl::ColorSpaceToADataSpace(
|
||||
gfx::ColorSpace(), 1.f, dataspace, extended_range_brightness_ratio));
|
||||
@ -178,7 +178,7 @@ TEST(SurfaceControl, ColorSpaceToADataSpace) {
|
||||
|
||||
// sRGB.
|
||||
{
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 0.f;
|
||||
EXPECT_TRUE(SurfaceControl::ColorSpaceToADataSpace(
|
||||
gfx::ColorSpace::CreateSRGB(), 1.f, dataspace,
|
||||
@ -189,7 +189,7 @@ TEST(SurfaceControl, ColorSpaceToADataSpace) {
|
||||
|
||||
// Display P3.
|
||||
{
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 0.f;
|
||||
EXPECT_TRUE(SurfaceControl::ColorSpaceToADataSpace(
|
||||
gfx::ColorSpace::CreateDisplayP3D65(), 1.f, dataspace,
|
||||
@ -204,34 +204,27 @@ TEST(SurfaceControl, ColorSpaceToADataSpace) {
|
||||
return;
|
||||
}
|
||||
|
||||
constexpr uint64_t kStandardSRGB = 1 << 16;
|
||||
constexpr uint64_t kStandardP3 = 10 << 16;
|
||||
constexpr uint64_t kStandardBT2020 = 6 << 16;
|
||||
constexpr uint64_t kTransferSRGB = 2 << 22;
|
||||
constexpr uint64_t kRangeFull = 1 << 27;
|
||||
constexpr uint64_t kRangeExtended = 3 << 27;
|
||||
|
||||
// Rec2020 with an sRGB transfer function.
|
||||
{
|
||||
gfx::ColorSpace rec2020(gfx::ColorSpace::PrimaryID::BT2020,
|
||||
gfx::ColorSpace::TransferID::SRGB);
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 0.f;
|
||||
EXPECT_TRUE(SurfaceControl::ColorSpaceToADataSpace(
|
||||
rec2020, 1.f, dataspace, extended_range_brightness_ratio));
|
||||
EXPECT_EQ(dataspace, kStandardBT2020 | kTransferSRGB | kRangeFull);
|
||||
EXPECT_EQ(dataspace, STANDARD_BT2020 | TRANSFER_SRGB | RANGE_FULL);
|
||||
EXPECT_EQ(extended_range_brightness_ratio, 1.f);
|
||||
}
|
||||
|
||||
// sRGB, but it will come out as extended because there is a >1 desired
|
||||
// brightness ratio.
|
||||
{
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 0.f;
|
||||
EXPECT_TRUE(SurfaceControl::ColorSpaceToADataSpace(
|
||||
gfx::ColorSpace::CreateSRGB(), 4.f, dataspace,
|
||||
extended_range_brightness_ratio));
|
||||
EXPECT_EQ(dataspace, kStandardSRGB | kTransferSRGB | kRangeExtended);
|
||||
EXPECT_EQ(dataspace, STANDARD_BT709 | TRANSFER_SRGB | RANGE_EXTENDED);
|
||||
EXPECT_EQ(extended_range_brightness_ratio, 1.f);
|
||||
}
|
||||
|
||||
@ -243,11 +236,11 @@ TEST(SurfaceControl, ColorSpaceToADataSpace) {
|
||||
gfx::ColorSpace::PrimaryID::P3, gfx::ColorSpace::TransferID::CUSTOM_HDR,
|
||||
gfx::ColorSpace::MatrixID::RGB, gfx::ColorSpace::RangeID::FULL, nullptr,
|
||||
&trfn_srgb_scaled);
|
||||
uint64_t dataspace = 0;
|
||||
ADataSpace dataspace = ADATASPACE_UNKNOWN;
|
||||
float extended_range_brightness_ratio = 0.f;
|
||||
EXPECT_TRUE(SurfaceControl::ColorSpaceToADataSpace(
|
||||
p3_scaled, 1.f, dataspace, extended_range_brightness_ratio));
|
||||
EXPECT_EQ(dataspace, kStandardP3 | kTransferSRGB | kRangeExtended);
|
||||
EXPECT_EQ(dataspace, STANDARD_DCI_P3 | TRANSFER_SRGB | RANGE_EXTENDED);
|
||||
EXPECT_NEAR(extended_range_brightness_ratio, 2.f, 0.0001f);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user