diff options
| author | 2018-01-30 12:17:56 -0800 | |
|---|---|---|
| committer | 2018-02-21 11:02:48 -0800 | |
| commit | 29e146b284b74ae65670a3a4f3698cd9ee155f1d (patch) | |
| tree | f46892c2592553b7743b90add5099716649479cd | |
| parent | 69f8fb7e5c8cb3ec4cb77ee3354231c5e6703026 (diff) | |
fakehwc, libvr_hwc-hal: ComposerClient is moved
ComposerClient is moved to another library with some changes. This
allows us to kill the has-a relation between VrComposerClient and
ComposerClientImpl in VR.
Test: builds
Change-Id: I0c32386f7d62f33e2e4d1271be42953f6880fd75
8 files changed, 54 insertions, 245 deletions
diff --git a/services/surfaceflinger/tests/fakehwc/Android.bp b/services/surfaceflinger/tests/fakehwc/Android.bp index 63da4e2b21..00bc621df0 100644 --- a/services/surfaceflinger/tests/fakehwc/Android.bp +++ b/services/surfaceflinger/tests/fakehwc/Android.bp @@ -29,7 +29,6 @@ cc_test { "libutils", ], static_libs: [ - "libhwcomposer-client", "libtrace_proto", "libgmock" ], diff --git a/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h b/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h index 7c111dcb21..95c274a798 100644 --- a/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h +++ b/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h @@ -18,7 +18,7 @@ #define HWC2_USE_CPP11 #define HWC2_INCLUDE_STRINGIFICATION -#include "ComposerClient.h" +#include <composer-hal/2.1/ComposerClient.h> #undef HWC2_USE_CPP11 #undef HWC2_INCLUDE_STRINGIFICATION #include "RenderState.h" @@ -32,7 +32,6 @@ using namespace android::hardware::graphics::composer::V2_1; using namespace android::hardware::graphics::composer::V2_1::hal; -using namespace android::hardware::graphics::composer::V2_1::implementation; using namespace android::hardware; using namespace std::chrono_literals; diff --git a/services/surfaceflinger/tests/fakehwc/FakeComposerService.cpp b/services/surfaceflinger/tests/fakehwc/FakeComposerService.cpp index c411604587..f70cbdbc63 100644 --- a/services/surfaceflinger/tests/fakehwc/FakeComposerService.cpp +++ b/services/surfaceflinger/tests/fakehwc/FakeComposerService.cpp @@ -46,7 +46,9 @@ Return<void> FakeComposerService::dumpDebugInfo(dumpDebugInfo_cb hidl_cb) { Return<void> FakeComposerService::createClient(createClient_cb hidl_cb) { ALOGI("FakeComposerService::createClient %p", mClient.get()); - mClient->initialize(); + if (!mClient->init()) { + LOG_ALWAYS_FATAL("failed to initialize ComposerClient"); + } hidl_cb(Error::NONE, mClient); return Void(); } diff --git a/services/surfaceflinger/tests/fakehwc/FakeComposerService.h b/services/surfaceflinger/tests/fakehwc/FakeComposerService.h index 520408496f..c439b7e3b2 100644 --- a/services/surfaceflinger/tests/fakehwc/FakeComposerService.h +++ b/services/surfaceflinger/tests/fakehwc/FakeComposerService.h @@ -16,10 +16,10 @@ #pragma once -#include "ComposerClient.h" +#include <composer-hal/2.1/ComposerClient.h> using namespace android::hardware::graphics::composer::V2_1; -using namespace android::hardware::graphics::composer::V2_1::implementation; +using namespace android::hardware::graphics::composer::V2_1::hal; using android::hardware::Return; namespace sftest { diff --git a/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp b/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp index 18738325f8..74b2efc0ea 100644 --- a/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp +++ b/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp @@ -168,7 +168,7 @@ void DisplayTest::SetUp() { // interface instead of the current Composer interface might also // change the situation. mMockComposer = new MockComposerClient; - sp<ComposerClient> client = new ComposerClient(*mMockComposer); + sp<ComposerClient> client = new ComposerClient(mMockComposer); mMockComposer->setClient(client.get()); mFakeService = new FakeComposerService(client); (void)mFakeService->registerAsService("mock"); @@ -446,7 +446,7 @@ void TransactionTest::SetUpTestCase() { // TODO: See TODO comment at DisplayTest::SetUp for background on // the lifetime of the FakeComposerClient. sFakeComposer = new FakeComposerClient; - sp<ComposerClient> client = new ComposerClient(*sFakeComposer); + sp<ComposerClient> client = new ComposerClient(sFakeComposer); sFakeComposer->setClient(client.get()); sp<IComposer> fakeService = new FakeComposerService(client); (void)fakeService->registerAsService("mock"); diff --git a/services/vr/hardware_composer/Android.bp b/services/vr/hardware_composer/Android.bp index 55557931f4..90edf69697 100644 --- a/services/vr/hardware_composer/Android.bp +++ b/services/vr/hardware_composer/Android.bp @@ -8,7 +8,6 @@ cc_library_shared { static_libs: [ "libbroadcastring", - "libhwcomposer-client", "libdisplay", ], @@ -40,10 +39,6 @@ cc_library_shared { "android.hardware.graphics.composer@2.1-hal", ], - export_static_lib_headers: [ - "libhwcomposer-client", - ], - export_shared_lib_headers: [ "android.frameworks.vr.composer@1.0", "android.hardware.graphics.composer@2.1", diff --git a/services/vr/hardware_composer/impl/vr_composer_client.cpp b/services/vr/hardware_composer/impl/vr_composer_client.cpp index 8794ec9f9c..4b900314d3 100644 --- a/services/vr/hardware_composer/impl/vr_composer_client.cpp +++ b/services/vr/hardware_composer/impl/vr_composer_client.cpp @@ -24,64 +24,31 @@ namespace android { namespace dvr { -namespace { using android::hardware::graphics::common::V1_0::PixelFormat; using android::frameworks::vr::composer::V1_0::IVrComposerClient; -class ComposerClientImpl : public ComposerClient { - public: - ComposerClientImpl(android::dvr::VrHwc& hal); - virtual ~ComposerClientImpl(); - - private: - class VrCommandEngine : public ComposerCommandEngine { - public: - VrCommandEngine(ComposerClientImpl& client); - ~VrCommandEngine() override; - - bool executeCommand(IComposerClient::Command command, - uint16_t length) override; - - private: - bool executeSetLayerInfo(uint16_t length); - bool executeSetClientTargetMetadata(uint16_t length); - bool executeSetLayerBufferMetadata(uint16_t length); - - IVrComposerClient::BufferMetadata readBufferMetadata(); - - ComposerClientImpl& mVrClient; - android::dvr::VrHwc& mVrHal; - - VrCommandEngine(const VrCommandEngine&) = delete; - void operator=(const VrCommandEngine&) = delete; - }; - - std::unique_ptr<ComposerCommandEngine> createCommandEngine() override; - - dvr::VrHwc& mVrHal; - - ComposerClientImpl(const ComposerClientImpl&) = delete; - void operator=(const ComposerClientImpl&) = delete; -}; - -ComposerClientImpl::ComposerClientImpl(android::dvr::VrHwc& hal) - : ComposerClient(hal), mVrHal(hal) {} +VrComposerClient::VrComposerClient(dvr::VrHwc& hal) + : ComposerClient(&hal), mVrHal(hal) { + if (!init()) { + LOG_ALWAYS_FATAL("failed to initialize VrComposerClient"); + } +} -ComposerClientImpl::~ComposerClientImpl() {} +VrComposerClient::~VrComposerClient() {} std::unique_ptr<ComposerCommandEngine> -ComposerClientImpl::createCommandEngine() { +VrComposerClient::createCommandEngine() { return std::unique_ptr<VrCommandEngine>(new VrCommandEngine(*this)); } -ComposerClientImpl::VrCommandEngine::VrCommandEngine(ComposerClientImpl& client) - : ComposerCommandEngine(&client.mHal, client.mResources.get()), mVrClient(client), +VrComposerClient::VrCommandEngine::VrCommandEngine(VrComposerClient& client) + : ComposerCommandEngine(client.mHal, client.mResources.get()), mVrClient(client), mVrHal(client.mVrHal) {} -ComposerClientImpl::VrCommandEngine::~VrCommandEngine() {} +VrComposerClient::VrCommandEngine::~VrCommandEngine() {} -bool ComposerClientImpl::VrCommandEngine::executeCommand( +bool VrComposerClient::VrCommandEngine::executeCommand( IComposerClient::Command command, uint16_t length) { IVrComposerClient::VrCommand vrCommand = static_cast<IVrComposerClient::VrCommand>(command); @@ -97,7 +64,7 @@ bool ComposerClientImpl::VrCommandEngine::executeCommand( } } -bool ComposerClientImpl::VrCommandEngine::executeSetLayerInfo(uint16_t length) { +bool VrComposerClient::VrCommandEngine::executeSetLayerInfo(uint16_t length) { if (length != 2) { return false; } @@ -110,7 +77,7 @@ bool ComposerClientImpl::VrCommandEngine::executeSetLayerInfo(uint16_t length) { return true; } -bool ComposerClientImpl::VrCommandEngine::executeSetClientTargetMetadata( +bool VrComposerClient::VrCommandEngine::executeSetClientTargetMetadata( uint16_t length) { if (length != 7) return false; @@ -122,7 +89,7 @@ bool ComposerClientImpl::VrCommandEngine::executeSetClientTargetMetadata( return true; } -bool ComposerClientImpl::VrCommandEngine::executeSetLayerBufferMetadata( +bool VrComposerClient::VrCommandEngine::executeSetLayerBufferMetadata( uint16_t length) { if (length != 7) return false; @@ -136,7 +103,7 @@ bool ComposerClientImpl::VrCommandEngine::executeSetLayerBufferMetadata( } IVrComposerClient::BufferMetadata -ComposerClientImpl::VrCommandEngine::readBufferMetadata() { +VrComposerClient::VrCommandEngine::readBufferMetadata() { IVrComposerClient::BufferMetadata metadata = { .width = read(), .height = read(), @@ -148,136 +115,5 @@ ComposerClientImpl::VrCommandEngine::readBufferMetadata() { return metadata; } -} // namespace - -VrComposerClient::VrComposerClient(dvr::VrHwc& hal) - : client_(new ComposerClientImpl(hal)) { - client_->initialize(); -} - -VrComposerClient::~VrComposerClient() {} - -void VrComposerClient::onHotplug(Display display, - IComposerCallback::Connection connected) { - client_->onHotplug(display, connected); -} - -void VrComposerClient::onRefresh(Display display) { - client_->onRefresh(display); -} - -Return<void> VrComposerClient::registerCallback( - const sp<IComposerCallback>& callback) { - return client_->registerCallback(callback); -} - -Return<uint32_t> VrComposerClient::getMaxVirtualDisplayCount() { - return client_->getMaxVirtualDisplayCount(); -} - -Return<void> VrComposerClient::createVirtualDisplay(uint32_t width, - uint32_t height, PixelFormat formatHint, uint32_t outputBufferSlotCount, - createVirtualDisplay_cb hidl_cb) { - return client_->createVirtualDisplay( - width, height, formatHint, outputBufferSlotCount, hidl_cb); -} - -Return<Error> VrComposerClient::destroyVirtualDisplay(Display display) { - return client_->destroyVirtualDisplay(display); -} - -Return<void> VrComposerClient::createLayer(Display display, - uint32_t bufferSlotCount, createLayer_cb hidl_cb) { - return client_->createLayer(display, bufferSlotCount, hidl_cb); -} - -Return<Error> VrComposerClient::destroyLayer(Display display, Layer layer) { - return client_->destroyLayer(display, layer); -} - -Return<void> VrComposerClient::getActiveConfig(Display display, - getActiveConfig_cb hidl_cb) { - return client_->getActiveConfig(display, hidl_cb); -} - -Return<Error> VrComposerClient::getClientTargetSupport(Display display, - uint32_t width, uint32_t height, PixelFormat format, Dataspace dataspace) { - return client_->getClientTargetSupport(display, width, height, format, - dataspace); -} - -Return<void> VrComposerClient::getColorModes(Display display, - getColorModes_cb hidl_cb) { - return client_->getColorModes(display, hidl_cb); -} - -Return<void> VrComposerClient::getDisplayAttribute(Display display, - Config config, Attribute attribute, getDisplayAttribute_cb hidl_cb) { - return client_->getDisplayAttribute(display, config, attribute, hidl_cb); -} - -Return<void> VrComposerClient::getDisplayConfigs(Display display, - getDisplayConfigs_cb hidl_cb) { - return client_->getDisplayConfigs(display, hidl_cb); -} - -Return<void> VrComposerClient::getDisplayName(Display display, - getDisplayName_cb hidl_cb) { - return client_->getDisplayName(display, hidl_cb); -} - -Return<void> VrComposerClient::getDisplayType(Display display, - getDisplayType_cb hidl_cb) { - return client_->getDisplayType(display, hidl_cb); -} - -Return<void> VrComposerClient::getDozeSupport( - Display display, getDozeSupport_cb hidl_cb) { - return client_->getDozeSupport(display, hidl_cb); -} - -Return<void> VrComposerClient::getHdrCapabilities( - Display display, getHdrCapabilities_cb hidl_cb) { - return client_->getHdrCapabilities(display, hidl_cb); -} - -Return<Error> VrComposerClient::setActiveConfig(Display display, - Config config) { - return client_->setActiveConfig(display, config); -} - -Return<Error> VrComposerClient::setColorMode(Display display, ColorMode mode) { - return client_->setColorMode(display, mode); -} - -Return<Error> VrComposerClient::setPowerMode(Display display, PowerMode mode) { - return client_->setPowerMode(display, mode); -} - -Return<Error> VrComposerClient::setVsyncEnabled(Display display, - Vsync enabled) { - return client_->setVsyncEnabled(display, enabled); -} - -Return<Error> VrComposerClient::setClientTargetSlotCount( - Display display, uint32_t clientTargetSlotCount) { - return client_->setClientTargetSlotCount(display, clientTargetSlotCount); -} - -Return<Error> VrComposerClient::setInputCommandQueue( - const hardware::MQDescriptorSync<uint32_t>& descriptor) { - return client_->setInputCommandQueue(descriptor); -} - -Return<void> VrComposerClient::getOutputCommandQueue( - getOutputCommandQueue_cb hidl_cb) { - return client_->getOutputCommandQueue(hidl_cb); -} - -Return<void> VrComposerClient::executeCommands(uint32_t inLength, - const hidl_vec<hidl_handle>& inHandles, executeCommands_cb hidl_cb) { - return client_->executeCommands(inLength, inHandles, hidl_cb); -} - } // namespace dvr } // namespace android diff --git a/services/vr/hardware_composer/impl/vr_composer_client.h b/services/vr/hardware_composer/impl/vr_composer_client.h index 4a4096eddb..76b1c4ff83 100644 --- a/services/vr/hardware_composer/impl/vr_composer_client.h +++ b/services/vr/hardware_composer/impl/vr_composer_client.h @@ -17,9 +17,9 @@ #ifndef ANDROID_DVR_HARDWARE_COMPOSER_IMPL_VR_COMPOSER_CLIENT_H #define ANDROID_DVR_HARDWARE_COMPOSER_IMPL_VR_COMPOSER_CLIENT_H -#include <ComposerClient.h> #include <android/frameworks/vr/composer/1.0/IVrComposerClient.h> #include <composer-command-buffer/2.1/ComposerCommandBuffer.h> +#include <composer-hal/2.1/ComposerClient.h> #include <composer-hal/2.1/ComposerCommandEngine.h> namespace android { @@ -27,67 +27,45 @@ namespace dvr { class VrHwc; -using hardware::graphics::common::V1_0::PixelFormat; using hardware::graphics::composer::V2_1::hal::ComposerCommandEngine; -using hardware::graphics::composer::V2_1::implementation::ComposerClient; +using hardware::graphics::composer::V2_1::hal::ComposerHal; +using hardware::graphics::composer::V2_1::hal::detail::ComposerClientImpl; -class VrComposerClient : public IVrComposerClient { +using ComposerClient = ComposerClientImpl<IVrComposerClient, ComposerHal>; + +class VrComposerClient : public ComposerClient { public: VrComposerClient(android::dvr::VrHwc& hal); virtual ~VrComposerClient(); - void onHotplug(Display display, IComposerCallback::Connection connected); - void onRefresh(Display display); - - // IComposerClient - Return<void> registerCallback(const sp<IComposerCallback>& callback) override; - Return<uint32_t> getMaxVirtualDisplayCount() override; - Return<void> createVirtualDisplay( - uint32_t width, uint32_t height, PixelFormat formatHint, - uint32_t outputBufferSlotCount, createVirtualDisplay_cb hidl_cb) override; - Return<Error> destroyVirtualDisplay(Display display) override; - Return<void> createLayer(Display display, uint32_t bufferSlotCount, - createLayer_cb hidl_cb) override; - Return<Error> destroyLayer(Display display, Layer layer) override; - Return<void> getActiveConfig(Display display, - getActiveConfig_cb hidl_cb) override; - Return<Error> getClientTargetSupport( - Display display, uint32_t width, uint32_t height, PixelFormat format, - Dataspace dataspace) override; - Return<void> getColorModes(Display display, - getColorModes_cb hidl_cb) override; - Return<void> getDisplayAttribute( - Display display, Config config, Attribute attribute, - getDisplayAttribute_cb hidl_cb) override; - Return<void> getDisplayConfigs(Display display, - getDisplayConfigs_cb hidl_cb) override; - Return<void> getDisplayName(Display display, - getDisplayName_cb hidl_cb) override; - Return<void> getDisplayType(Display display, - getDisplayType_cb hidl_cb) override; - Return<void> getDozeSupport(Display display, - getDozeSupport_cb hidl_cb) override; - Return<void> getHdrCapabilities(Display display, - getHdrCapabilities_cb hidl_cb) override; - Return<Error> setActiveConfig(Display display, Config config) override; - Return<Error> setColorMode(Display display, ColorMode mode) override; - Return<Error> setPowerMode(Display display, PowerMode mode) override; - Return<Error> setVsyncEnabled(Display display, Vsync enabled) override; - Return<Error> setClientTargetSlotCount( - Display display, uint32_t clientTargetSlotCount) override; - Return<Error> setInputCommandQueue( - const hardware::MQDescriptorSync<uint32_t>& descriptor) override; - Return<void> getOutputCommandQueue( - getOutputCommandQueue_cb hidl_cb) override; - Return<void> executeCommands( - uint32_t inLength, const hidl_vec<hidl_handle>& inHandles, - executeCommands_cb hidl_cb) override; - private: - std::unique_ptr<ComposerClient> client_; + class VrCommandEngine : public ComposerCommandEngine { + public: + VrCommandEngine(VrComposerClient& client); + ~VrCommandEngine() override; + + bool executeCommand(IComposerClient::Command command, + uint16_t length) override; + + private: + bool executeSetLayerInfo(uint16_t length); + bool executeSetClientTargetMetadata(uint16_t length); + bool executeSetLayerBufferMetadata(uint16_t length); + + IVrComposerClient::BufferMetadata readBufferMetadata(); + + VrComposerClient& mVrClient; + android::dvr::VrHwc& mVrHal; + + VrCommandEngine(const VrCommandEngine&) = delete; + void operator=(const VrCommandEngine&) = delete; + }; VrComposerClient(const VrComposerClient&) = delete; void operator=(const VrComposerClient&) = delete; + + std::unique_ptr<ComposerCommandEngine> createCommandEngine() override; + dvr::VrHwc& mVrHal; }; } // namespace dvr |