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

Commit a7de3743 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add a DisplayCapability for multi-threaded present"

parents 9ea1ce13 b3e336ed
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -42,4 +42,5 @@ enum DisplayCapability {
  AUTO_LOW_LATENCY_MODE = 5,
  SUSPEND = 6,
  DISPLAY_IDLE_TIMER = 7,
  MULTI_THREADED_PRESENT = 8,
}
+16 −0
Original line number Diff line number Diff line
@@ -80,4 +80,20 @@ enum DisplayCapability {
     * IComposerCallback.onVsyncIdle.
     */
    DISPLAY_IDLE_TIMER = 7,
    /**
     * Indicates that both the composer HAL implementation and the given display
     * support calling executeCommands concurrently from separate threads.
     * executeCommands for a particular display will never run concurrently to
     * any other executeCommands for the same display. In addition, the
     * CommandResultPayload must only reference displays included in the
     * DisplayCommands passed to executeCommands. Displays referenced from
     * separate threads must have minimal interference with one another. If a
     * HWC-managed display has this capability, SurfaceFlinger can run
     * executeCommands for this display concurrently with other displays with the
     * same capability.
     * @see IComposerClient.executeCommands
     * @see DisplayCommand.presentDisplay
     * @see DisplayCommand.validateDisplay
     */
    MULTI_THREADED_PRESENT = 8,
}
+14 −0
Original line number Diff line number Diff line
@@ -2170,6 +2170,20 @@ TEST_P(GraphicsComposerAidlTest, GetDisplayConfigNoRepetitions) {
    }
}

TEST_P(GraphicsComposerAidlCommandTest, MultiThreadedPresent) {
    std::vector<VtsDisplay*> displays;
    for (auto& display : mDisplays) {
        if (hasDisplayCapability(display.getDisplayId(),
                                 DisplayCapability::MULTI_THREADED_PRESENT)) {
            displays.push_back(&display);
        }
    }
    if (displays.size() <= 1u) {
        return;
    }
    // TODO(b/251842321): Try to present on multiple threads.
}

GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(GraphicsComposerAidlCommandTest);
INSTANTIATE_TEST_SUITE_P(
        PerInstance, GraphicsComposerAidlCommandTest,