Loading libs/gui/ISurfaceComposer.cpp +53 −0 Original line number Diff line number Diff line Loading @@ -599,6 +599,43 @@ public: } return err; } virtual status_t getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask) const { if (!outFormat || !outDataspace || !outComponentMask) return BAD_VALUE; Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); status_t error = remote()->transact(BnSurfaceComposer::GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES, data, &reply); if (error != NO_ERROR) { return error; } uint32_t value = 0; error = reply.readUint32(&value); if (error != NO_ERROR) { return error; } *outFormat = static_cast<ui::PixelFormat>(value); error = reply.readUint32(&value); if (error != NO_ERROR) { return error; } *outDataspace = static_cast<ui::Dataspace>(value); error = reply.readUint32(&value); if (error != NO_ERROR) { return error; } *outComponentMask = static_cast<uint8_t>(value); return error; } }; // Out-of-line virtual method definition to trigger vtable emission in this Loading Loading @@ -951,6 +988,22 @@ status_t BnSurfaceComposer::onTransact( } return result; } case GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); ui::PixelFormat format; ui::Dataspace dataspace; uint8_t component = 0; auto result = getDisplayedContentSamplingAttributes(display, &format, &dataspace, &component); if (result == NO_ERROR) { reply->writeUint32(static_cast<uint32_t>(format)); reply->writeUint32(static_cast<uint32_t>(dataspace)); reply->writeUint32(static_cast<uint32_t>(component)); } return result; } default: { return BBinder::onTransact(code, data, reply, flags); } Loading libs/gui/SurfaceComposerClient.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -1077,6 +1077,15 @@ status_t SurfaceComposerClient::getHdrCapabilities(const sp<IBinder>& display, outCapabilities); } status_t SurfaceComposerClient::getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask) { return ComposerService::getComposerService() ->getDisplayedContentSamplingAttributes(display, outFormat, outDataspace, outComponentMask); } // ---------------------------------------------------------------------------- status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, Loading libs/gui/include/gui/ISurfaceComposer.h +8 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,13 @@ public: ui::PixelFormat* defaultPixelFormat, ui::Dataspace* wideColorGamutDataspace, ui::PixelFormat* wideColorGamutPixelFormat) const = 0; /* * Requires the ACCESS_SURFACE_FLINGER permission. */ virtual status_t getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask) const = 0; }; // ---------------------------------------------------------------------------- Loading Loading @@ -332,6 +339,7 @@ public: CREATE_SCOPED_CONNECTION, GET_COMPOSITION_PREFERENCE, GET_COLOR_MANAGEMENT, GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES, }; virtual status_t onTransact(uint32_t code, const Parcel& data, Loading libs/gui/include/gui/SurfaceComposerClient.h +5 −0 Original line number Diff line number Diff line Loading @@ -381,6 +381,11 @@ public: inline sp<ISurfaceComposerClient> getClient() { return mClient; } static status_t getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask); private: virtual void onFirstRef(); Loading libs/gui/tests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ cc_test { "BufferQueue_test.cpp", "CpuConsumer_test.cpp", "EndToEndNativeInputTest.cpp", "DisplayedContentSampling_test.cpp", "FillBuffer.cpp", "GLTest.cpp", "IGraphicBufferProducer_test.cpp", Loading Loading
libs/gui/ISurfaceComposer.cpp +53 −0 Original line number Diff line number Diff line Loading @@ -599,6 +599,43 @@ public: } return err; } virtual status_t getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask) const { if (!outFormat || !outDataspace || !outComponentMask) return BAD_VALUE; Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); status_t error = remote()->transact(BnSurfaceComposer::GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES, data, &reply); if (error != NO_ERROR) { return error; } uint32_t value = 0; error = reply.readUint32(&value); if (error != NO_ERROR) { return error; } *outFormat = static_cast<ui::PixelFormat>(value); error = reply.readUint32(&value); if (error != NO_ERROR) { return error; } *outDataspace = static_cast<ui::Dataspace>(value); error = reply.readUint32(&value); if (error != NO_ERROR) { return error; } *outComponentMask = static_cast<uint8_t>(value); return error; } }; // Out-of-line virtual method definition to trigger vtable emission in this Loading Loading @@ -951,6 +988,22 @@ status_t BnSurfaceComposer::onTransact( } return result; } case GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES: { CHECK_INTERFACE(ISurfaceComposer, data, reply); sp<IBinder> display = data.readStrongBinder(); ui::PixelFormat format; ui::Dataspace dataspace; uint8_t component = 0; auto result = getDisplayedContentSamplingAttributes(display, &format, &dataspace, &component); if (result == NO_ERROR) { reply->writeUint32(static_cast<uint32_t>(format)); reply->writeUint32(static_cast<uint32_t>(dataspace)); reply->writeUint32(static_cast<uint32_t>(component)); } return result; } default: { return BBinder::onTransact(code, data, reply, flags); } Loading
libs/gui/SurfaceComposerClient.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -1077,6 +1077,15 @@ status_t SurfaceComposerClient::getHdrCapabilities(const sp<IBinder>& display, outCapabilities); } status_t SurfaceComposerClient::getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask) { return ComposerService::getComposerService() ->getDisplayedContentSamplingAttributes(display, outFormat, outDataspace, outComponentMask); } // ---------------------------------------------------------------------------- status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, Loading
libs/gui/include/gui/ISurfaceComposer.h +8 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,13 @@ public: ui::PixelFormat* defaultPixelFormat, ui::Dataspace* wideColorGamutDataspace, ui::PixelFormat* wideColorGamutPixelFormat) const = 0; /* * Requires the ACCESS_SURFACE_FLINGER permission. */ virtual status_t getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask) const = 0; }; // ---------------------------------------------------------------------------- Loading Loading @@ -332,6 +339,7 @@ public: CREATE_SCOPED_CONNECTION, GET_COMPOSITION_PREFERENCE, GET_COLOR_MANAGEMENT, GET_DISPLAYED_CONTENT_SAMPLING_ATTRIBUTES, }; virtual status_t onTransact(uint32_t code, const Parcel& data, Loading
libs/gui/include/gui/SurfaceComposerClient.h +5 −0 Original line number Diff line number Diff line Loading @@ -381,6 +381,11 @@ public: inline sp<ISurfaceComposerClient> getClient() { return mClient; } static status_t getDisplayedContentSamplingAttributes(const sp<IBinder>& display, ui::PixelFormat* outFormat, ui::Dataspace* outDataspace, uint8_t* outComponentMask); private: virtual void onFirstRef(); Loading
libs/gui/tests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ cc_test { "BufferQueue_test.cpp", "CpuConsumer_test.cpp", "EndToEndNativeInputTest.cpp", "DisplayedContentSampling_test.cpp", "FillBuffer.cpp", "GLTest.cpp", "IGraphicBufferProducer_test.cpp", Loading