Merge "Add LayerCommand.blockingRegion"

This commit is contained in:
Leon Scroggins
2022-01-11 21:28:57 +00:00
committed by Android (Google) Code Review
3 changed files with 16 additions and 0 deletions

View File

@@ -54,4 +54,5 @@ parcelable LayerCommand {
@nullable android.hardware.graphics.composer3.Luminance whitePointNits;
@nullable android.hardware.graphics.composer3.PerFrameMetadata[] perFrameMetadata;
@nullable android.hardware.graphics.composer3.PerFrameMetadataBlob[] perFrameMetadataBlob;
@nullable android.hardware.graphics.common.Rect[] blockingRegion;
}

View File

@@ -264,4 +264,15 @@ parcelable LayerCommand {
* This command may be called every frame.
*/
@nullable PerFrameMetadataBlob[] perFrameMetadataBlob;
/**
* Specifies a region of the layer that is transparent and may be skipped
* by the DPU, e.g. using a blocking region, in order to save power. This
* is only a hint, so the composition of the layer must look the same
* whether or not this region is skipped.
*
* The region is in screen space and must not exceed the dimensions of
* the screen.
*/
@nullable Rect[] blockingRegion;
}

View File

@@ -218,6 +218,10 @@ class ComposerClientWriter {
getLayerCommand(display, layer).whitePointNits.emplace(Luminance{.nits = whitePointNits});
}
void setLayerBlockingRegion(int64_t display, int64_t layer, const std::vector<Rect>& blocking) {
getLayerCommand(display, layer).blockingRegion.emplace(blocking.begin(), blocking.end());
}
const std::vector<DisplayCommand>& getPendingCommands() {
flushLayerCommand();
flushDisplayCommand();