Merge "[ConfigStore] Add useColorManagement method."

This commit is contained in:
Peiyong Lin
2018-08-22 16:15:09 +00:00
committed by Android (Google) Code Review
12 changed files with 119 additions and 38 deletions

View File

@@ -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)

View File

@@ -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>

View 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,
}

View 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);
};

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

@@ -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

View File

@@ -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"
],