mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 10:44:41 +00:00
[ConfigStore] Add useColorManagement method.
Previously we couple wide color gamut display and color management together, which is because we only do color management when we have wide color gamut display. However, we would also want display that doesn't support wide color gamut but is calibrated and is capable of managing sRGB gamut to have color management. This means we will decouple wide color gamut display from color management, a device can indicate that it's color managed without having wide color gamut display and only manage color within sRGB gamut. BUG: 111505327 Test: BUild, flash and check Natural/Boosted mode. Change-Id: If1241ce040a6f691609d8f8d72a2d6f3141557cf
This commit is contained in:
@@ -66,3 +66,5 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/vndk-sp/android.hardware
|
||||
$(call add-clean-step, find $(PRODUCT_OUT)/system $(PRODUCT_OUT)/vendor -type f -name "android\.hardware\.configstore\@1\.1*" -print0 | xargs -0 rm -f)
|
||||
$(call add-clean-step, find $(PRODUCT_OUT)/system $(PRODUCT_OUT)/vendor -type f -name "android\.hardware\.configstore*" -print0 | xargs -0 rm -f)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/seccomp_policy/configstore@1.0.policy)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/seccomp_policy/configstore@1.1.policy)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.configstore@1.1-service)
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
</hal>
|
||||
<hal format="hidl" optional="false">
|
||||
<name>android.hardware.configstore</name>
|
||||
<version>1.1</version>
|
||||
<version>1.2</version>
|
||||
<interface>
|
||||
<name>ISurfaceFlingerConfigs</name>
|
||||
<instance>default</instance>
|
||||
|
||||
18
configstore/1.2/Android.bp
Normal file
18
configstore/1.2/Android.bp
Normal file
@@ -0,0 +1,18 @@
|
||||
// This file is autogenerated by hidl-gen -Landroidbp.
|
||||
|
||||
hidl_interface {
|
||||
name: "android.hardware.configstore@1.2",
|
||||
root: "android.hardware",
|
||||
vndk: {
|
||||
enabled: true,
|
||||
},
|
||||
srcs: [
|
||||
"ISurfaceFlingerConfigs.hal",
|
||||
],
|
||||
interfaces: [
|
||||
"android.hardware.configstore@1.1",
|
||||
"android.hardware.configstore@1.0",
|
||||
"android.hidl.base@1.0",
|
||||
],
|
||||
gen_java: true,
|
||||
}
|
||||
33
configstore/1.2/ISurfaceFlingerConfigs.hal
Normal file
33
configstore/1.2/ISurfaceFlingerConfigs.hal
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.1 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.1
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package android.hardware.configstore@1.2;
|
||||
|
||||
import @1.1::ISurfaceFlingerConfigs;
|
||||
import @1.0::OptionalBool;
|
||||
|
||||
/**
|
||||
* New revision of ISurfaceFlingerConfigs
|
||||
*/
|
||||
interface ISurfaceFlingerConfigs extends @1.1::ISurfaceFlingerConfigs {
|
||||
/**
|
||||
* useColorManagement indicates whether SurfaceFlinger should manage color
|
||||
* by switching to appropriate color mode automatically depending on the
|
||||
* Dataspace of the surfaces on screen.
|
||||
* This function must return true when hasWideColorDisplay or hasHDRDisplay
|
||||
* return true.
|
||||
*/
|
||||
useColorManagement() generates (OptionalBool value);
|
||||
};
|
||||
@@ -2,15 +2,15 @@ LOCAL_PATH := $(call my-dir)
|
||||
|
||||
################################################################################
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := android.hardware.configstore@1.1-service
|
||||
LOCAL_MODULE := android.hardware.configstore@1.2-service
|
||||
# seccomp is not required for coverage build.
|
||||
ifneq ($(NATIVE_COVERAGE),true)
|
||||
LOCAL_REQUIRED_MODULES_arm64 := configstore@1.1.policy
|
||||
LOCAL_REQUIRED_MODULES_arm64 := configstore.policy
|
||||
endif
|
||||
LOCAL_PROPRIETARY_MODULE := true
|
||||
LOCAL_VENDOR_MODULE := true
|
||||
LOCAL_MODULE_CLASS := EXECUTABLES
|
||||
LOCAL_MODULE_RELATIVE_PATH := hw
|
||||
LOCAL_INIT_RC := android.hardware.configstore@1.1-service.rc
|
||||
LOCAL_INIT_RC := android.hardware.configstore@1.2-service.rc
|
||||
LOCAL_SRC_FILES:= service.cpp
|
||||
|
||||
include $(LOCAL_PATH)/surfaceflinger.mk
|
||||
@@ -23,16 +23,17 @@ LOCAL_SHARED_LIBRARIES := \
|
||||
liblog \
|
||||
libutils \
|
||||
android.hardware.configstore@1.0 \
|
||||
android.hardware.configstore@1.1
|
||||
android.hardware.configstore@1.1 \
|
||||
android.hardware.configstore@1.2
|
||||
|
||||
include $(BUILD_EXECUTABLE)
|
||||
|
||||
# seccomp filter for configstore
|
||||
ifeq ($(TARGET_ARCH), $(filter $(TARGET_ARCH), arm64))
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := configstore@1.1.policy
|
||||
LOCAL_MODULE := configstore.policy
|
||||
LOCAL_MODULE_CLASS := ETC
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/seccomp_policy
|
||||
LOCAL_SRC_FILES := seccomp_policy/configstore@1.1-$(TARGET_ARCH).policy
|
||||
LOCAL_SRC_FILES := seccomp_policy/configstore-$(TARGET_ARCH).policy
|
||||
include $(BUILD_PREBUILT)
|
||||
endif
|
||||
@@ -22,11 +22,10 @@
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace configstore {
|
||||
namespace V1_1 {
|
||||
namespace V1_2 {
|
||||
namespace implementation {
|
||||
|
||||
// Methods from ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs
|
||||
// follow.
|
||||
// ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs implementation.
|
||||
Return<void> SurfaceFlingerConfigs::vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) {
|
||||
#ifdef VSYNC_EVENT_PHASE_OFFSET_NS
|
||||
_hidl_cb({true, VSYNC_EVENT_PHASE_OFFSET_NS});
|
||||
@@ -142,8 +141,7 @@ Return<void> SurfaceFlingerConfigs::startGraphicsAllocatorService(
|
||||
return Void();
|
||||
}
|
||||
|
||||
// Methods from ::android::hardware::configstore::V1_1::ISurfaceFlingerConfigs
|
||||
// follow.
|
||||
// ::android::hardware::configstore::V1_1::ISurfaceFlingerConfigs implementation.
|
||||
|
||||
#ifdef PRIMARY_DISPLAY_ORIENTATION
|
||||
static_assert(PRIMARY_DISPLAY_ORIENTATION == 0 || PRIMARY_DISPLAY_ORIENTATION == 90 ||
|
||||
@@ -191,10 +189,18 @@ Return<void> SurfaceFlingerConfigs::primaryDisplayOrientation(
|
||||
return Void();
|
||||
}
|
||||
|
||||
// Methods from ::android::hidl::base::V1_0::IBase follow.
|
||||
// ::android::hardware::configstore::V1_2::ISurfaceFlingerConfigs implementation.
|
||||
Return<void> SurfaceFlingerConfigs::useColorManagement(useColorManagement_cb _hidl_cb) {
|
||||
#if defined(USE_COLOR_MANAGEMENT) || defined(HAS_WIDE_COLOR_DISPLAY) || defined(HAS_HDR_DISPLAY)
|
||||
_hidl_cb({true, true});
|
||||
#else
|
||||
_hidl_cb({true, false});
|
||||
#endif
|
||||
return Void();
|
||||
}
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_1
|
||||
} // namespace V1_2
|
||||
} // namespace configstore
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
@@ -1,24 +1,39 @@
|
||||
#ifndef ANDROID_HARDWARE_CONFIGSTORE_V1_1_SURFACEFLINGERCONFIGS_H
|
||||
#define ANDROID_HARDWARE_CONFIGSTORE_V1_1_SURFACEFLINGERCONFIGS_H
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.1 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.1
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <android/hardware/configstore/1.1/ISurfaceFlingerConfigs.h>
|
||||
#ifndef ANDROID_HARDWARE_CONFIGSTORE_V1_2_SURFACEFLINGERCONFIGS_H
|
||||
#define ANDROID_HARDWARE_CONFIGSTORE_V1_2_SURFACEFLINGERCONFIGS_H
|
||||
|
||||
#include <android/hardware/configstore/1.2/ISurfaceFlingerConfigs.h>
|
||||
#include <hidl/MQDescriptor.h>
|
||||
#include <hidl/Status.h>
|
||||
|
||||
namespace android {
|
||||
namespace hardware {
|
||||
namespace configstore {
|
||||
namespace V1_1 {
|
||||
namespace V1_2 {
|
||||
namespace implementation {
|
||||
|
||||
using ::android::hardware::configstore::V1_1::ISurfaceFlingerConfigs;
|
||||
using ::android::sp;
|
||||
using ::android::hardware::Return;
|
||||
using ::android::hardware::Void;
|
||||
using ::android::sp;
|
||||
using ::android::hardware::configstore::V1_2::ISurfaceFlingerConfigs;
|
||||
|
||||
struct SurfaceFlingerConfigs : public ISurfaceFlingerConfigs {
|
||||
// Methods from
|
||||
// ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs follow.
|
||||
// ::android::hardware::configstore::V1_0::ISurfaceFlingerConfigs implementation.
|
||||
Return<void> vsyncEventPhaseOffsetNs(vsyncEventPhaseOffsetNs_cb _hidl_cb) override;
|
||||
Return<void> vsyncSfEventPhaseOffsetNs(vsyncSfEventPhaseOffsetNs_cb _hidl_cb) override;
|
||||
Return<void> useContextPriority(useContextPriority_cb _hidl_cb) override;
|
||||
@@ -32,17 +47,17 @@ struct SurfaceFlingerConfigs : public ISurfaceFlingerConfigs {
|
||||
Return<void> maxFrameBufferAcquiredBuffers(maxFrameBufferAcquiredBuffers_cb _hidl_cb) override;
|
||||
Return<void> startGraphicsAllocatorService(startGraphicsAllocatorService_cb _hidl_cb) override;
|
||||
|
||||
// Methods from
|
||||
// ::android::hardware::configstore::V1_1::ISurfaceFlingerConfigs follow.
|
||||
// ::android::hardware::configstore::V1_1::ISurfaceFlingerConfigs follow implementation.
|
||||
Return<void> primaryDisplayOrientation(primaryDisplayOrientation_cb _hidl_cb) override;
|
||||
|
||||
// Methods from ::android::hidl::base::V1_0::IBase follow.
|
||||
// ::android::hardware::configstore::V1_2::ISurfaceFlingerConfigs follow implementation.
|
||||
Return<void> useColorManagement(useColorManagement_cb _hidl_cb) override;
|
||||
};
|
||||
|
||||
} // namespace implementation
|
||||
} // namespace V1_1
|
||||
} // namespace V1_2
|
||||
} // namespace configstore
|
||||
} // namespace hardware
|
||||
} // namespace android
|
||||
|
||||
#endif // ANDROID_HARDWARE_CONFIGSTORE_V1_1_SURFACEFLINGERCONFIGS_H
|
||||
#endif // ANDROID_HARDWARE_CONFIGSTORE_V1_2_SURFACEFLINGERCONFIGS_H
|
||||
@@ -1,4 +1,4 @@
|
||||
service vendor.configstore-hal /vendor/bin/hw/android.hardware.configstore@1.1-service
|
||||
service vendor.configstore-hal /vendor/bin/hw/android.hardware.configstore@1.2-service
|
||||
class hal animation
|
||||
user system
|
||||
group system
|
||||
@@ -14,27 +14,27 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define LOG_TAG "android.hardware.configstore@1.1-service"
|
||||
#define LOG_TAG "android.hardware.configstore@1.2-service"
|
||||
|
||||
#include <android/hardware/configstore/1.1/ISurfaceFlingerConfigs.h>
|
||||
#include <android/hardware/configstore/1.2/ISurfaceFlingerConfigs.h>
|
||||
#include <hidl/HidlTransportSupport.h>
|
||||
#include <hwminijail/HardwareMinijail.h>
|
||||
|
||||
#include "SurfaceFlingerConfigs.h"
|
||||
|
||||
using android::hardware::configureRpcThreadpool;
|
||||
using android::hardware::joinRpcThreadpool;
|
||||
using android::hardware::configstore::V1_1::ISurfaceFlingerConfigs;
|
||||
using android::hardware::configstore::V1_1::implementation::SurfaceFlingerConfigs;
|
||||
using android::hardware::SetupMinijail;
|
||||
using android::OK;
|
||||
using android::sp;
|
||||
using android::status_t;
|
||||
using android::OK;
|
||||
using android::hardware::configureRpcThreadpool;
|
||||
using android::hardware::joinRpcThreadpool;
|
||||
using android::hardware::SetupMinijail;
|
||||
using android::hardware::configstore::V1_2::ISurfaceFlingerConfigs;
|
||||
using android::hardware::configstore::V1_2::implementation::SurfaceFlingerConfigs;
|
||||
|
||||
int main() {
|
||||
configureRpcThreadpool(10, true);
|
||||
|
||||
SetupMinijail("/vendor/etc/seccomp_policy/configstore@1.1.policy");
|
||||
SetupMinijail("/vendor/etc/seccomp_policy/configstore.policy");
|
||||
|
||||
sp<ISurfaceFlingerConfigs> surfaceFlingerConfigs = new SurfaceFlingerConfigs;
|
||||
status_t status = surfaceFlingerConfigs->registerAsService();
|
||||
@@ -54,3 +54,7 @@ endif
|
||||
ifneq ($(SF_PRIMARY_DISPLAY_ORIENTATION),)
|
||||
LOCAL_CFLAGS += -DPRIMARY_DISPLAY_ORIENTATION=$(SF_PRIMARY_DISPLAY_ORIENTATION)
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_USE_COLOR_MANAGEMENT),true)
|
||||
LOCAL_CFLAGS += -DUSE_COLOR_MANAGEMENT
|
||||
endif
|
||||
@@ -30,12 +30,14 @@ cc_library_shared {
|
||||
shared_libs: [
|
||||
"android.hardware.configstore@1.0",
|
||||
"android.hardware.configstore@1.1",
|
||||
"android.hardware.configstore@1.2",
|
||||
"libbase",
|
||||
"libhidlbase"
|
||||
],
|
||||
export_shared_lib_headers: [
|
||||
"android.hardware.configstore@1.0",
|
||||
"android.hardware.configstore@1.1",
|
||||
"android.hardware.configstore@1.2",
|
||||
"libbase",
|
||||
"libhidlbase"
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user