vr_composer_client.cpp revision 69f8fb7e5c8cb3ec4cb77ee3354231c5e6703026
151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara/*
251a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * Copyright 2016 The Android Open Source Project
351a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara *
451a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * Licensed under the Apache License, Version 2.0 (the "License");
551a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * you may not use this file except in compliance with the License.
651a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * You may obtain a copy of the License at
751a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara *
851a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara *      http://www.apache.org/licenses/LICENSE-2.0
951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara *
1051a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * Unless required by applicable law or agreed to in writing, software
1151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * distributed under the License is distributed on an "AS IS" BASIS,
1251a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1351a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * See the License for the specific language governing permissions and
1451a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara * limitations under the License.
1551a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara */
1651a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
1795a99a1d3cdbd19343d0d27271098c9c01a63e78Daniel Nicoara#include <android/frameworks/vr/composer/1.0/IVrComposerClient.h>
1851a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara#include <hardware/gralloc.h>
1951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara#include <hardware/gralloc1.h>
2051a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara#include <log/log.h>
2151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
224251e92b6dacb5653aa9528d88484085ee333e3bDaniel Nicoara#include "impl/vr_hwc.h"
234251e92b6dacb5653aa9528d88484085ee333e3bDaniel Nicoara#include "impl/vr_composer_client.h"
2451a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
2551a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoaranamespace android {
2651a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoaranamespace dvr {
27a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoaranamespace {
2851a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
2951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoarausing android::hardware::graphics::common::V1_0::PixelFormat;
3095a99a1d3cdbd19343d0d27271098c9c01a63e78Daniel Nicoarausing android::frameworks::vr::composer::V1_0::IVrComposerClient;
3151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
32a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoaraclass ComposerClientImpl : public ComposerClient {
33a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara public:
34a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  ComposerClientImpl(android::dvr::VrHwc& hal);
35a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  virtual ~ComposerClientImpl();
36a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
37a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara private:
3869f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu  class VrCommandEngine : public ComposerCommandEngine {
39a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara   public:
4069f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    VrCommandEngine(ComposerClientImpl& client);
4169f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    ~VrCommandEngine() override;
42a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
4369f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    bool executeCommand(IComposerClient::Command command,
4469f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu                        uint16_t length) override;
45a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
46a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara   private:
4769f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    bool executeSetLayerInfo(uint16_t length);
4869f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    bool executeSetClientTargetMetadata(uint16_t length);
4969f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    bool executeSetLayerBufferMetadata(uint16_t length);
50a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
51a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    IVrComposerClient::BufferMetadata readBufferMetadata();
52a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
53a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    ComposerClientImpl& mVrClient;
54a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    android::dvr::VrHwc& mVrHal;
55a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
5669f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    VrCommandEngine(const VrCommandEngine&) = delete;
5769f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    void operator=(const VrCommandEngine&) = delete;
58a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  };
59a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
6069f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu  std::unique_ptr<ComposerCommandEngine> createCommandEngine() override;
61a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
62a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  dvr::VrHwc& mVrHal;
63a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
64a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  ComposerClientImpl(const ComposerClientImpl&) = delete;
65a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  void operator=(const ComposerClientImpl&) = delete;
66a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara};
67a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
68a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraComposerClientImpl::ComposerClientImpl(android::dvr::VrHwc& hal)
6951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara    : ComposerClient(hal), mVrHal(hal) {}
7051a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
71a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraComposerClientImpl::~ComposerClientImpl() {}
7251a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
7369f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wustd::unique_ptr<ComposerCommandEngine>
7469f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I WuComposerClientImpl::createCommandEngine() {
7569f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu  return std::unique_ptr<VrCommandEngine>(new VrCommandEngine(*this));
7651a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara}
7751a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
7869f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I WuComposerClientImpl::VrCommandEngine::VrCommandEngine(ComposerClientImpl& client)
7969f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu    : ComposerCommandEngine(&client.mHal, client.mResources.get()), mVrClient(client),
8069f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu      mVrHal(client.mVrHal) {}
8151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
8269f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I WuComposerClientImpl::VrCommandEngine::~VrCommandEngine() {}
8351a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
8469f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wubool ComposerClientImpl::VrCommandEngine::executeCommand(
8551a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara    IComposerClient::Command command, uint16_t length) {
8651a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  IVrComposerClient::VrCommand vrCommand =
8751a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara      static_cast<IVrComposerClient::VrCommand>(command);
8851a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  switch (vrCommand) {
8951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara    case IVrComposerClient::VrCommand::SET_LAYER_INFO:
9069f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu      return executeSetLayerInfo(length);
911f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    case IVrComposerClient::VrCommand::SET_CLIENT_TARGET_METADATA:
9269f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu      return executeSetClientTargetMetadata(length);
931f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    case IVrComposerClient::VrCommand::SET_LAYER_BUFFER_METADATA:
9469f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu      return executeSetLayerBufferMetadata(length);
9551a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara    default:
9669f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu      return ComposerCommandEngine::executeCommand(command, length);
9751a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  }
9851a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara}
9951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
10069f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wubool ComposerClientImpl::VrCommandEngine::executeSetLayerInfo(uint16_t length) {
10151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  if (length != 2) {
10251a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara    return false;
10351a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  }
10451a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
10569f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu  auto err = mVrHal.setLayerInfo(mCurrentDisplay, mCurrentLayer, read(), read());
10651a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  if (err != Error::NONE) {
10751a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara    mWriter.setError(getCommandLoc(), err);
10851a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  }
10951a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
11051a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara  return true;
11151a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara}
11251a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara
11369f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wubool ComposerClientImpl::VrCommandEngine::executeSetClientTargetMetadata(
1141f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    uint16_t length) {
1151f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  if (length != 7)
1161f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    return false;
1171f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
11869f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu  auto err = mVrHal.setClientTargetMetadata(mCurrentDisplay, readBufferMetadata());
1191f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  if (err != Error::NONE)
1201f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    mWriter.setError(getCommandLoc(), err);
1211f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
1221f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  return true;
1231f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara}
1241f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
12569f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wubool ComposerClientImpl::VrCommandEngine::executeSetLayerBufferMetadata(
1261f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    uint16_t length) {
1271f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  if (length != 7)
1281f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    return false;
1291f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
13069f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I Wu  auto err = mVrHal.setLayerBufferMetadata(mCurrentDisplay, mCurrentLayer,
1311f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara                                           readBufferMetadata());
1321f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  if (err != Error::NONE)
1331f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    mWriter.setError(getCommandLoc(), err);
1341f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
1351f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  return true;
1361f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara}
1371f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
1381f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel NicoaraIVrComposerClient::BufferMetadata
13969f8fb7e5c8cb3ec4cb77ee3354231c5e6703026Chia-I WuComposerClientImpl::VrCommandEngine::readBufferMetadata() {
1401f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  IVrComposerClient::BufferMetadata metadata = {
1411f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    .width = read(),
1421f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    .height = read(),
1431f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    .stride = read(),
1441f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    .layerCount = read(),
1451f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    .format = static_cast<PixelFormat>(readSigned()),
1461f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara    .usage = read64(),
1471f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  };
1481f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara  return metadata;
1491f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara}
1501f42e3a02c4f9a1ba1916a2f0e47082bedb73e41Daniel Nicoara
151a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}  // namespace
152a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
153a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraVrComposerClient::VrComposerClient(dvr::VrHwc& hal)
154a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    : client_(new ComposerClientImpl(hal)) {
155a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  client_->initialize();
156a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
157a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
158a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraVrComposerClient::~VrComposerClient() {}
159a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
160a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoaravoid VrComposerClient::onHotplug(Display display,
161a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    IComposerCallback::Connection connected) {
162a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  client_->onHotplug(display, connected);
163a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
164a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
1658fc9822f3b20f6547c3398c55e8b70c4f3940db9Daniel Nicoaravoid VrComposerClient::onRefresh(Display display) {
1668fc9822f3b20f6547c3398c55e8b70c4f3940db9Daniel Nicoara  client_->onRefresh(display);
1678fc9822f3b20f6547c3398c55e8b70c4f3940db9Daniel Nicoara}
1688fc9822f3b20f6547c3398c55e8b70c4f3940db9Daniel Nicoara
169a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::registerCallback(
170a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    const sp<IComposerCallback>& callback) {
171a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->registerCallback(callback);
172a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
173a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
174a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<uint32_t> VrComposerClient::getMaxVirtualDisplayCount() {
175a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getMaxVirtualDisplayCount();
176a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
177a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
178a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::createVirtualDisplay(uint32_t width,
179a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    uint32_t height, PixelFormat formatHint, uint32_t outputBufferSlotCount,
180a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    createVirtualDisplay_cb hidl_cb) {
181a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->createVirtualDisplay(
182a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara      width, height, formatHint, outputBufferSlotCount, hidl_cb);
183a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
184a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
185a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::destroyVirtualDisplay(Display display) {
186a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->destroyVirtualDisplay(display);
187a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
188a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
189a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::createLayer(Display display,
190a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    uint32_t bufferSlotCount, createLayer_cb hidl_cb) {
191a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->createLayer(display, bufferSlotCount, hidl_cb);
192a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
193a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
194a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::destroyLayer(Display display, Layer layer) {
195a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->destroyLayer(display, layer);
196a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
197a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
198a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getActiveConfig(Display display,
199a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    getActiveConfig_cb hidl_cb) {
200a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getActiveConfig(display, hidl_cb);
201a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
202a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
203a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::getClientTargetSupport(Display display,
204a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    uint32_t width, uint32_t height, PixelFormat format, Dataspace dataspace) {
205a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getClientTargetSupport(display, width, height, format,
206a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara                                         dataspace);
207a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
208a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
209a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getColorModes(Display display,
210a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    getColorModes_cb hidl_cb) {
211a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getColorModes(display, hidl_cb);
212a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
213a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
214a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getDisplayAttribute(Display display,
215a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    Config config, Attribute attribute, getDisplayAttribute_cb hidl_cb) {
216a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getDisplayAttribute(display, config, attribute, hidl_cb);
217a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
218a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
219a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getDisplayConfigs(Display display,
220a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    getDisplayConfigs_cb hidl_cb) {
221a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getDisplayConfigs(display, hidl_cb);
222a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
223a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
224a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getDisplayName(Display display,
225a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    getDisplayName_cb hidl_cb) {
226a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getDisplayName(display, hidl_cb);
227a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
228a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
229a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getDisplayType(Display display,
230a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    getDisplayType_cb hidl_cb) {
231a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getDisplayType(display, hidl_cb);
232a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
233a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
234a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getDozeSupport(
235a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    Display display, getDozeSupport_cb hidl_cb) {
236a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getDozeSupport(display, hidl_cb);
237a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
238a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
239a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getHdrCapabilities(
240a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    Display display, getHdrCapabilities_cb hidl_cb) {
241a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getHdrCapabilities(display, hidl_cb);
242a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
243a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
244a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::setActiveConfig(Display display,
245a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    Config config) {
246a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->setActiveConfig(display, config);
247a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
248a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
249a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::setColorMode(Display display, ColorMode mode) {
250a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->setColorMode(display, mode);
251a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
252a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
253a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::setPowerMode(Display display, PowerMode mode) {
254a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->setPowerMode(display, mode);
255a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
256a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
257a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::setVsyncEnabled(Display display,
258a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    Vsync enabled) {
259a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->setVsyncEnabled(display, enabled);
260a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
261a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
262a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::setClientTargetSlotCount(
263a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    Display display, uint32_t clientTargetSlotCount) {
264a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->setClientTargetSlotCount(display, clientTargetSlotCount);
265a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
266a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
267a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<Error> VrComposerClient::setInputCommandQueue(
268a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    const hardware::MQDescriptorSync<uint32_t>& descriptor) {
269a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->setInputCommandQueue(descriptor);
270a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
271a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
272a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::getOutputCommandQueue(
273a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    getOutputCommandQueue_cb hidl_cb) {
274a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->getOutputCommandQueue(hidl_cb);
275a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
276a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
277a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel NicoaraReturn<void> VrComposerClient::executeCommands(uint32_t inLength,
278a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara    const hidl_vec<hidl_handle>& inHandles, executeCommands_cb hidl_cb) {
279a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara  return client_->executeCommands(inLength, inHandles, hidl_cb);
280a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara}
281a50abc2fbbc1ab4ac00aa5d3b41d77b24048f81bDaniel Nicoara
28251a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara}  // namespace dvr
28351a0a56385f4176447d8168f9395341b3e7574a0Daniel Nicoara}  // namespace android
284