Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6b5d740d authored by Dan Stoza's avatar Dan Stoza Committed by android-build-merger
Browse files

Merge "HWC2: Fix breakage from header change" into nyc-dev am: 80bc52ae am: fce9f9cf

am: 8827b8a7

* commit '8827b8a7':
  HWC2: Fix breakage from header change

Change-Id: I282f18bdaccc9c792ec967775bf4779f6d91ed2c
parents 92bc57a4 8827b8a7
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -192,19 +192,21 @@ uint32_t Device::getMaxVirtualDisplayCount() const
}
}


Error Device::createVirtualDisplay(uint32_t width, uint32_t height,
Error Device::createVirtualDisplay(uint32_t width, uint32_t height,
        std::shared_ptr<Display>* outDisplay)
        android_pixel_format_t* format, std::shared_ptr<Display>* outDisplay)
{
{
    ALOGI("Creating virtual display");
    ALOGI("Creating virtual display");


    hwc2_display_t displayId = 0;
    hwc2_display_t displayId = 0;
    int32_t intFormat = static_cast<int32_t>(*format);
    int32_t intError = mCreateVirtualDisplay(mHwcDevice, width, height,
    int32_t intError = mCreateVirtualDisplay(mHwcDevice, width, height,
            &displayId);
            &intFormat, &displayId);
    auto error = static_cast<Error>(intError);
    auto error = static_cast<Error>(intError);
    if (error != Error::None) {
    if (error != Error::None) {
        return error;
        return error;
    }
    }


    ALOGI("Created virtual display");
    ALOGI("Created virtual display");
    *format = static_cast<android_pixel_format_t>(intFormat);
    *outDisplay = getDisplayById(displayId);
    *outDisplay = getDisplayById(displayId);
    (*outDisplay)->setVirtual();
    (*outDisplay)->setVirtual();
    return Error::None;
    return Error::None;
@@ -780,9 +782,10 @@ Error Display::setActiveConfig(const std::shared_ptr<const Config>& config)
Error Display::setClientTarget(buffer_handle_t target,
Error Display::setClientTarget(buffer_handle_t target,
        const sp<Fence>& acquireFence, android_dataspace_t dataspace)
        const sp<Fence>& acquireFence, android_dataspace_t dataspace)
{
{
    // TODO: Properly encode client target surface damage
    int32_t fenceFd = acquireFence->dup();
    int32_t fenceFd = acquireFence->dup();
    int32_t intError = mDevice.mSetClientTarget(mDevice.mHwcDevice, mId, target,
    int32_t intError = mDevice.mSetClientTarget(mDevice.mHwcDevice, mId, target,
            fenceFd, static_cast<int32_t>(dataspace));
            fenceFd, static_cast<int32_t>(dataspace), {0, nullptr});
    return static_cast<Error>(intError);
    return static_cast<Error>(intError);
}
}


+1 −0
Original line number Original line Diff line number Diff line
@@ -72,6 +72,7 @@ public:


    uint32_t getMaxVirtualDisplayCount() const;
    uint32_t getMaxVirtualDisplayCount() const;
    Error createVirtualDisplay(uint32_t width, uint32_t height,
    Error createVirtualDisplay(uint32_t width, uint32_t height,
            android_pixel_format_t* format,
            std::shared_ptr<Display>* outDisplay);
            std::shared_ptr<Display>* outDisplay);


    void registerHotplugCallback(HotplugCallback hotplug);
    void registerHotplugCallback(HotplugCallback hotplug);
+3 −3
Original line number Original line Diff line number Diff line
@@ -266,7 +266,7 @@ hwc2_function_pointer_t HWC2On1Adapter::doGetFunction(
            return asFP<HWC2_PFN_SET_CLIENT_TARGET>(
            return asFP<HWC2_PFN_SET_CLIENT_TARGET>(
                    displayHook<decltype(&Display::setClientTarget),
                    displayHook<decltype(&Display::setClientTarget),
                    &Display::setClientTarget, buffer_handle_t, int32_t,
                    &Display::setClientTarget, buffer_handle_t, int32_t,
                    int32_t>);
                    int32_t, hwc_region_t>);
        case FunctionDescriptor::SetColorMode:
        case FunctionDescriptor::SetColorMode:
            return asFP<HWC2_PFN_SET_COLOR_MODE>(
            return asFP<HWC2_PFN_SET_COLOR_MODE>(
                    displayHook<decltype(&Display::setColorMode),
                    displayHook<decltype(&Display::setColorMode),
@@ -883,14 +883,14 @@ Error HWC2On1Adapter::Display::setActiveConfig(hwc2_config_t configId)
}
}


Error HWC2On1Adapter::Display::setClientTarget(buffer_handle_t target,
Error HWC2On1Adapter::Display::setClientTarget(buffer_handle_t target,
        int32_t acquireFence, int32_t /*dataspace*/)
        int32_t acquireFence, int32_t /*dataspace*/, hwc_region_t /*damage*/)
{
{
    std::unique_lock<std::recursive_mutex> lock(mStateMutex);
    std::unique_lock<std::recursive_mutex> lock(mStateMutex);


    ALOGV("[%" PRIu64 "] setClientTarget(%p, %d)", mId, target, acquireFence);
    ALOGV("[%" PRIu64 "] setClientTarget(%p, %d)", mId, target, acquireFence);
    mClientTarget.setBuffer(target);
    mClientTarget.setBuffer(target);
    mClientTarget.setFence(acquireFence);
    mClientTarget.setFence(acquireFence);
    // dataspace can't be used by HWC1, so ignore it
    // dataspace and damage can't be used by HWC1, so ignore them
    return Error::None;
    return Error::None;
}
}


+6 −2
Original line number Original line Diff line number Diff line
@@ -77,7 +77,10 @@ private:
    HWC2::Error createVirtualDisplay(uint32_t width, uint32_t height,
    HWC2::Error createVirtualDisplay(uint32_t width, uint32_t height,
            hwc2_display_t* outDisplay);
            hwc2_display_t* outDisplay);
    static int32_t createVirtualDisplayHook(hwc2_device_t* device,
    static int32_t createVirtualDisplayHook(hwc2_device_t* device,
            uint32_t width, uint32_t height, hwc2_display_t* outDisplay) {
            uint32_t width, uint32_t height, int32_t* /*format*/,
            hwc2_display_t* outDisplay) {
        // HWC1 implementations cannot override the buffer format requested by
        // the consumer
        auto error = getAdapter(device)->createVirtualDisplay(width, height,
        auto error = getAdapter(device)->createVirtualDisplay(width, height,
                outDisplay);
                outDisplay);
        return static_cast<int32_t>(error);
        return static_cast<int32_t>(error);
@@ -208,7 +211,8 @@ private:
            HWC2::Error present(int32_t* outRetireFence);
            HWC2::Error present(int32_t* outRetireFence);
            HWC2::Error setActiveConfig(hwc2_config_t configId);
            HWC2::Error setActiveConfig(hwc2_config_t configId);
            HWC2::Error setClientTarget(buffer_handle_t target,
            HWC2::Error setClientTarget(buffer_handle_t target,
                    int32_t acquireFence, int32_t dataspace);
                    int32_t acquireFence, int32_t dataspace,
                    hwc_region_t damage);
            HWC2::Error setColorMode(int32_t mode);
            HWC2::Error setColorMode(int32_t mode);
            HWC2::Error setColorTransform(android_color_transform_t hint);
            HWC2::Error setColorTransform(android_color_transform_t hint);
            HWC2::Error setOutputBuffer(buffer_handle_t buffer,
            HWC2::Error setOutputBuffer(buffer_handle_t buffer,
+3 −2
Original line number Original line Diff line number Diff line
@@ -249,14 +249,15 @@ void HWComposer::vsync(const std::shared_ptr<HWC2::Display>& display,
}
}


status_t HWComposer::allocateVirtualDisplay(uint32_t width, uint32_t height,
status_t HWComposer::allocateVirtualDisplay(uint32_t width, uint32_t height,
        int32_t *outId) {
        android_pixel_format_t* format, int32_t *outId) {
    if (mRemainingHwcVirtualDisplays == 0) {
    if (mRemainingHwcVirtualDisplays == 0) {
        ALOGE("allocateVirtualDisplay: No remaining virtual displays");
        ALOGE("allocateVirtualDisplay: No remaining virtual displays");
        return NO_MEMORY;
        return NO_MEMORY;
    }
    }


    std::shared_ptr<HWC2::Display> display;
    std::shared_ptr<HWC2::Display> display;
    auto error = mHwcDevice->createVirtualDisplay(width, height, &display);
    auto error = mHwcDevice->createVirtualDisplay(width, height, format,
            &display);
    if (error != HWC2::Error::None) {
    if (error != HWC2::Error::None) {
        ALOGE("allocateVirtualDisplay: Failed to create HWC virtual display");
        ALOGE("allocateVirtualDisplay: Failed to create HWC virtual display");
        return NO_MEMORY;
        return NO_MEMORY;
Loading