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

Commit a91c2355 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7428328 from fda42697 to sc-d1-release

Change-Id: I2ec84bc19a4fa1797103adaf87f4687e7d19c10f
parents fba15984 fda42697
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -213,6 +213,7 @@ int ANativeWindow_query(const ANativeWindow* window, ANativeWindowQuery what, in
        case ANATIVEWINDOW_QUERY_DEFAULT_WIDTH:
        case ANATIVEWINDOW_QUERY_DEFAULT_HEIGHT:
        case ANATIVEWINDOW_QUERY_TRANSFORM_HINT:
        case ANATIVEWINDOW_QUERY_BUFFER_AGE:
            // these are part of the VNDK API
            break;
        case ANATIVEWINDOW_QUERY_MIN_SWAP_INTERVAL:
+9 −36
Original line number Diff line number Diff line
@@ -21,13 +21,10 @@
#include <string>

#include <ui/DisplayId.h>
#include <ui/PixelFormat.h>
#include <ui/Size.h>
#include <ui/StaticDisplayInfo.h>

#include "DisplayHardware/DisplayIdentification.h"
#include "DisplayHardware/PowerAdvisor.h"
#include "DisplayIdGenerator.h"

namespace android::compositionengine {

@@ -37,24 +34,14 @@ class CompositionEngine;
 * A parameter object for creating Display instances
 */
struct DisplayCreationArgs {
    struct Physical {
    DisplayId id;
        ui::DisplayConnectionType type;
    };

    // Required for physical displays. Gives the HWC display id for the existing
    // display along with the connection type.
    std::optional<Physical> physical;
    // Unset for virtual displays
    std::optional<ui::DisplayConnectionType> connectionType;

    // Size of the display in pixels
    ui::Size pixels = ui::Size::INVALID;

    // Pixel format of the display
    ui::PixelFormat pixelFormat = static_cast<ui::PixelFormat>(PIXEL_FORMAT_UNKNOWN);

    // True if virtual displays should be created with the HWC API if possible
    bool useHwcVirtualDisplays = false;

    // True if this display should be considered secure
    bool isSecure = false;

@@ -67,9 +54,6 @@ struct DisplayCreationArgs {

    // Debugging. Human readable name for the display.
    std::string name;

    // Generator for IDs of virtual displays, which are backed by the GPU.
    DisplayIdGenerator<GpuVirtualDisplayId>* gpuVirtualDisplayIdGenerator;
};

/**
@@ -80,29 +64,18 @@ class DisplayCreationArgsBuilder {
public:
    DisplayCreationArgs build() { return std::move(mArgs); }

    DisplayCreationArgsBuilder& setPhysical(DisplayCreationArgs::Physical physical) {
        mArgs.physical = physical;
        return *this;
    }

    DisplayCreationArgsBuilder& setPixels(ui::Size pixels) {
        mArgs.pixels = pixels;
    DisplayCreationArgsBuilder& setId(DisplayId id) {
        mArgs.id = id;
        return *this;
    }

    DisplayCreationArgsBuilder& setPixelFormat(ui::PixelFormat pixelFormat) {
        mArgs.pixelFormat = pixelFormat;
    DisplayCreationArgsBuilder& setConnectionType(ui::DisplayConnectionType connectionType) {
        mArgs.connectionType = connectionType;
        return *this;
    }

    DisplayCreationArgsBuilder& setUseHwcVirtualDisplays(bool useHwcVirtualDisplays) {
        mArgs.useHwcVirtualDisplays = useHwcVirtualDisplays;
        return *this;
    }

    DisplayCreationArgsBuilder& setGpuVirtualDisplayIdGenerator(
            DisplayIdGenerator<GpuVirtualDisplayId>& generator) {
        mArgs.gpuVirtualDisplayIdGenerator = &generator;
    DisplayCreationArgsBuilder& setPixels(ui::Size pixels) {
        mArgs.pixels = pixels;
        return *this;
    }

+27 −2
Original line number Diff line number Diff line
@@ -78,6 +78,30 @@ public:
    virtual void prepareCompositionState(StateSubset) = 0;

    struct ClientCompositionTargetSettings {
        enum class BlurSetting {
            Disabled,
            BackgroundBlurOnly,
            BlurRegionsOnly,
            Enabled,
        };

        friend std::string toString(BlurSetting blurSetting) {
            switch (blurSetting) {
                case BlurSetting::Enabled:
                    return "Enabled";
                case BlurSetting::BlurRegionsOnly:
                    return "BlurRegionsOnly";
                case BlurSetting::BackgroundBlurOnly:
                    return "BackgroundBlurOnly";
                case BlurSetting::Disabled:
                    return "Disabled";
            }
        }

        friend std::ostream& operator<<(std::ostream& os, const BlurSetting& setting) {
            return os << toString(setting);
        }

        // The clip region, or visible region that is being rendered to
        const Region& clip;

@@ -110,8 +134,8 @@ public:
        // This may be requested by the HWC
        const bool clearContent;

        // If set to true, change the layer settings to not use any blurs.
        const bool disableBlurs;
        // Configure layer settings for using blurs
        BlurSetting blurSetting;
    };

    // A superset of LayerSettings required by RenderEngine to compose a layer
@@ -186,6 +210,7 @@ static inline void PrintTo(const LayerFE::ClientCompositionTargetSettings& setti
    PrintTo(settings.dataspace, os);
    *os << "\n    .realContentIsVisible = " << settings.realContentIsVisible;
    *os << "\n    .clearContent = " << settings.clearContent;
    *os << "\n    .blurSetting = " << settings.blurSetting;
    *os << "\n}";
}

+14 −25
Original line number Diff line number Diff line
@@ -24,21 +24,17 @@

struct ANativeWindow;

namespace android {

namespace compositionengine {

class Display;
namespace android::compositionengine {

/**
 * A parameter object for creating RenderSurface instances
 */
struct RenderSurfaceCreationArgs {
    // The initial width of the surface
    int32_t displayWidth;
    int32_t displayWidth = -1;

    // The initial height of the surface
    int32_t displayHeight;
    int32_t displayHeight = -1;

    // The ANativeWindow for the buffer queue for this surface
    sp<ANativeWindow> nativeWindow;
@@ -46,22 +42,16 @@ struct RenderSurfaceCreationArgs {
    // The DisplaySurface for this surface
    sp<DisplaySurface> displaySurface;

    size_t maxTextureCacheSize;
    // The maximum size of the renderengine::ExternalTexture cache
    size_t maxTextureCacheSize = 0;

private:
    friend class RenderSurfaceCreationArgsBuilder;

    // Not defaulted to disable aggregate initialization.
    RenderSurfaceCreationArgs() {}
};

/**
 * A helper for setting up a RenderSurfaceCreationArgs value in-line.
 * Prefer this builder over raw structure initialization.
 *
 * Instead of:
 *
 *   RenderSurfaceCreationArgs{1000, 1000, nativeWindow, displaySurface}
 *
 * Prefer:
 *
 *  RenderSurfaceCreationArgsBuilder().setDisplayWidth(1000).setDisplayHeight(1000)
 *      .setNativeWindow(nativeWindow).setDisplaySurface(displaySurface).Build();
 */
class RenderSurfaceCreationArgsBuilder {
public:
    RenderSurfaceCreationArgs build() { return std::move(mArgs); }
@@ -75,11 +65,11 @@ public:
        return *this;
    }
    RenderSurfaceCreationArgsBuilder& setNativeWindow(sp<ANativeWindow> nativeWindow) {
        mArgs.nativeWindow = nativeWindow;
        mArgs.nativeWindow = std::move(nativeWindow);
        return *this;
    }
    RenderSurfaceCreationArgsBuilder& setDisplaySurface(sp<DisplaySurface> displaySurface) {
        mArgs.displaySurface = displaySurface;
        mArgs.displaySurface = std::move(displaySurface);
        return *this;
    }

@@ -92,5 +82,4 @@ private:
    RenderSurfaceCreationArgs mArgs;
};

} // namespace compositionengine
} // namespace android
} // namespace android::compositionengine
+0 −6
Original line number Diff line number Diff line
@@ -80,19 +80,13 @@ public:

    // Internal
    virtual void setConfiguration(const compositionengine::DisplayCreationArgs&);
    virtual std::optional<DisplayId> maybeAllocateDisplayIdForVirtualDisplay(ui::Size,
                                                                             ui::PixelFormat) const;
    std::unique_ptr<compositionengine::OutputLayer> createOutputLayer(const sp<LayerFE>&) const;

    // Testing
    void setDisplayIdForTesting(DisplayId displayId);

private:
    bool mIsVirtual = false;
    bool mIsDisconnected = false;
    DisplayId mId;
    Hwc2::PowerAdvisor* mPowerAdvisor = nullptr;
    DisplayIdGenerator<GpuVirtualDisplayId>* mGpuVirtualDisplayIdGenerator;
};

// This template factory function standardizes the implementation details of the
Loading