Add a DisplayCapability for multi-threaded present

Also update composer3 to the latest version.

Begin writing a test.

Bug: 241285491
Test: atest VtsHalGraphicsComposer3_TargetTest:GraphicsComposerAidlCommandTest.MultiThreadedPresent
Change-Id: I5dbb01fc23abd5e0108c565f96d25e62c77fc16d
This commit is contained in:
Leon Scroggins III
2022-10-06 12:32:16 -04:00
committed by Leon Scroggins
parent 3b728f5db0
commit b3e336edd1
3 changed files with 31 additions and 0 deletions

View File

@@ -42,4 +42,5 @@ enum DisplayCapability {
AUTO_LOW_LATENCY_MODE = 5,
SUSPEND = 6,
DISPLAY_IDLE_TIMER = 7,
MULTI_THREADED_PRESENT = 8,
}

View File

@@ -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,
}

View File

@@ -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,