diff options
| author | 2018-11-02 00:26:19 +0000 | |
|---|---|---|
| committer | 2018-11-02 00:26:19 +0000 | |
| commit | 7434f865cb716b87d8f4c6642a06ff5f328167ad (patch) | |
| tree | bf7a1a1149bb30bfdb53f86572096b39a4ba6b6b /libs | |
| parent | 1544922b65a9cc36ad09754bdc0c1f09c613e4b4 (diff) | |
| parent | c678097979379cdf59a91697a1fcfa020cda70b6 (diff) | |
Merge "[SurfaceFlinger] Expose WCG composition preference through ISurfaceComposer API."
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/gui/ISurfaceComposer.cpp | 28 | ||||
| -rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 9 | ||||
| -rw-r--r-- | libs/gui/include/gui/ISurfaceComposer.h | 15 | ||||
| -rw-r--r-- | libs/gui/include/gui/SurfaceComposerClient.h | 12 | ||||
| -rw-r--r-- | libs/gui/tests/Surface_test.cpp | 6 |
5 files changed, 50 insertions, 20 deletions
diff --git a/libs/gui/ISurfaceComposer.cpp b/libs/gui/ISurfaceComposer.cpp index cc0a307c65..e66c0e5dd6 100644 --- a/libs/gui/ISurfaceComposer.cpp +++ b/libs/gui/ISurfaceComposer.cpp @@ -565,8 +565,10 @@ public: return reply.readParcelableVector(outLayers); } - virtual status_t getCompositionPreference(ui::Dataspace* dataSpace, - ui::PixelFormat* pixelFormat) const { + virtual status_t getCompositionPreference(ui::Dataspace* defaultDataspace, + ui::PixelFormat* defaultPixelFormat, + ui::Dataspace* wideColorGamutDataspace, + ui::PixelFormat* wideColorGamutPixelFormat) const { Parcel data, reply; status_t error = data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); if (error != NO_ERROR) { @@ -578,8 +580,10 @@ public: } error = static_cast<status_t>(reply.readInt32()); if (error == NO_ERROR) { - *dataSpace = static_cast<ui::Dataspace>(reply.readInt32()); - *pixelFormat = static_cast<ui::PixelFormat>(reply.readInt32()); + *defaultDataspace = static_cast<ui::Dataspace>(reply.readInt32()); + *defaultPixelFormat = static_cast<ui::PixelFormat>(reply.readInt32()); + *wideColorGamutDataspace = static_cast<ui::Dataspace>(reply.readInt32()); + *wideColorGamutPixelFormat = static_cast<ui::PixelFormat>(reply.readInt32()); } return error; } @@ -925,13 +929,19 @@ status_t BnSurfaceComposer::onTransact( } case GET_COMPOSITION_PREFERENCE: { CHECK_INTERFACE(ISurfaceComposer, data, reply); - ui::Dataspace dataSpace; - ui::PixelFormat pixelFormat; - status_t error = getCompositionPreference(&dataSpace, &pixelFormat); + ui::Dataspace defaultDataspace; + ui::PixelFormat defaultPixelFormat; + ui::Dataspace wideColorGamutDataspace; + ui::PixelFormat wideColorGamutPixelFormat; + status_t error = + getCompositionPreference(&defaultDataspace, &defaultPixelFormat, + &wideColorGamutDataspace, &wideColorGamutPixelFormat); reply->writeInt32(error); if (error == NO_ERROR) { - reply->writeInt32(static_cast<int32_t>(dataSpace)); - reply->writeInt32(static_cast<int32_t>(pixelFormat)); + reply->writeInt32(static_cast<int32_t>(defaultDataspace)); + reply->writeInt32(static_cast<int32_t>(defaultPixelFormat)); + reply->writeInt32(static_cast<int32_t>(wideColorGamutDataspace)); + reply->writeInt32(static_cast<int32_t>(wideColorGamutDataspace)); } return NO_ERROR; } diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 7498f365a0..e5a2454db3 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -866,9 +866,12 @@ void SurfaceComposerClient::setDisplayPowerMode(const sp<IBinder>& token, ComposerService::getComposerService()->setPowerMode(token, mode); } -status_t SurfaceComposerClient::getCompositionPreference(ui::Dataspace* dataSpace, - ui::PixelFormat* pixelFormat) { - return ComposerService::getComposerService()->getCompositionPreference(dataSpace, pixelFormat); +status_t SurfaceComposerClient::getCompositionPreference( + ui::Dataspace* defaultDataspace, ui::PixelFormat* defaultPixelFormat, + ui::Dataspace* wideColorGamutDataspace, ui::PixelFormat* wideColorGamutPixelFormat) { + return ComposerService::getComposerService() + ->getCompositionPreference(defaultDataspace, defaultPixelFormat, + wideColorGamutDataspace, wideColorGamutPixelFormat); } status_t SurfaceComposerClient::clearAnimationFrameStats() { diff --git a/libs/gui/include/gui/ISurfaceComposer.h b/libs/gui/include/gui/ISurfaceComposer.h index 35cb3be7df..9316ae69bc 100644 --- a/libs/gui/include/gui/ISurfaceComposer.h +++ b/libs/gui/include/gui/ISurfaceComposer.h @@ -280,10 +280,19 @@ public: */ virtual status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* outLayers) const = 0; - virtual status_t getCompositionPreference(ui::Dataspace* dataSpace, - ui::PixelFormat* pixelFormat) const = 0; - virtual bool isColorManagementUsed() const = 0; + + /* Gets the composition preference of the default data space and default pixel format, + * as well as the wide color gamut data space and wide color gamut pixel format. + * If the wide color gamut data space is V0_SRGB, then it implies that the platform + * has no wide color gamut support. + * + * Requires the ACCESS_SURFACE_FLINGER permission. + */ + virtual status_t getCompositionPreference(ui::Dataspace* defaultDataspace, + ui::PixelFormat* defaultPixelFormat, + ui::Dataspace* wideColorGamutDataspace, + ui::PixelFormat* wideColorGamutPixelFormat) const = 0; }; // ---------------------------------------------------------------------------- diff --git a/libs/gui/include/gui/SurfaceComposerClient.h b/libs/gui/include/gui/SurfaceComposerClient.h index 1b4eda720a..8ccee05ba4 100644 --- a/libs/gui/include/gui/SurfaceComposerClient.h +++ b/libs/gui/include/gui/SurfaceComposerClient.h @@ -101,9 +101,15 @@ public: /* Triggers screen on/off or low power mode and waits for it to complete */ static void setDisplayPowerMode(const sp<IBinder>& display, int mode); - // - static status_t getCompositionPreference(ui::Dataspace* dataSpace, - ui::PixelFormat* pixelFormat); + /* Returns the composition preference of the default data space and default pixel format, + * as well as the wide color gamut data space and wide color gamut pixel format. + * If the wide color gamut data space is V0_SRGB, then it implies that the platform + * has no wide color gamut support. + */ + static status_t getCompositionPreference(ui::Dataspace* defaultDataspace, + ui::PixelFormat* defaultPixelFormat, + ui::Dataspace* wideColorGamutDataspace, + ui::PixelFormat* wideColorGamutPixelFormat); // ------------------------------------------------------------------------ // surface creation / destruction diff --git a/libs/gui/tests/Surface_test.cpp b/libs/gui/tests/Surface_test.cpp index 25f762bbe3..a3e9249ac2 100644 --- a/libs/gui/tests/Surface_test.cpp +++ b/libs/gui/tests/Surface_test.cpp @@ -628,8 +628,10 @@ public: status_t getLayerDebugInfo(std::vector<LayerDebugInfo>* /*layers*/) const override { return NO_ERROR; } - status_t getCompositionPreference(ui::Dataspace* /*outDataSpace*/, - ui::PixelFormat* /*outPixelFormat*/) const override { + status_t getCompositionPreference( + ui::Dataspace* /*outDefaultDataspace*/, ui::PixelFormat* /*outDefaultPixelFormat*/, + ui::Dataspace* /*outWideColorGamutDataspace*/, + ui::PixelFormat* /*outWideColorGamutPixelFormat*/) const override { return NO_ERROR; } |