blob: 99c91aa32e0afe4fe5104e5e09136c4f7d384417 [file] [log] [blame] [edit]
/**
* Copyright (c) 2021, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.graphics.composer3;
import android.hardware.graphics.composer3.ChangedCompositionTypes;
import android.hardware.graphics.composer3.ClientTargetPropertyWithBrightness;
import android.hardware.graphics.composer3.CommandError;
import android.hardware.graphics.composer3.DisplayRequest;
import android.hardware.graphics.composer3.PresentFence;
import android.hardware.graphics.composer3.PresentOrValidate;
import android.hardware.graphics.composer3.ReleaseFences;
@VintfStability
union CommandResultPayload {
/**
* Indicates an error generated by a command.
*
* If there is an error from a command, the composer should only respond
* with the CommandError, and not with other results
* (e.g. ChangedCompositionTypes).
*/
CommandError error;
/**
* Sets the layers for which the device requires a different composition
* type than had been set prior to the last call to VALIDATE_DISPLAY. The
* client must either update its state with these types and call
* ACCEPT_DISPLAY_CHANGES, or must set new types and attempt to validate
* the display again.
*/
ChangedCompositionTypes changedCompositionTypes;
/**
* Sets the display requests and the layer requests required for the last
* validated configuration.
*
* Display requests provide information about how the client must handle
* the client target. Layer requests provide information about how the
* client must handle an individual layer.
*/
DisplayRequest displayRequest;
/**
* Sets the present fence as a result of PRESENT_DISPLAY. For physical
* displays, this fence must be signaled at the vsync when the result
* of composition of this frame starts to appear (for video-mode panels)
* or starts to transfer to panel memory (for command-mode panels). For
* virtual displays, this fence must be signaled when writes to the output
* buffer have completed and it is safe to read from it.
*/
PresentFence presentFence;
/**
* Sets the release fences for device layers on this display which will
* receive new buffer contents this frame.
*
* A release fence is a file descriptor referring to a sync fence object
* which must be signaled after the device has finished reading from the
* buffer presented in the prior frame. This indicates that it is safe to
* start writing to the buffer again. If a given layer's fence is not
* returned from this function, it must be assumed that the buffer
* presented on the previous frame is ready to be written.
*
* The fences returned by this function must be unique for each layer
* (even if they point to the same underlying sync object).
*
*/
ReleaseFences releaseFences;
/**
* Sets the state of PRESENT_OR_VALIDATE_DISPLAY command.
*/
PresentOrValidate presentOrValidateResult;
/**
* The brightness parameter describes the intended brightness space of the client target buffer.
* The brightness is in the range [0, 1], where 1 is the current brightness of the display.
* When client composition blends both HDR and SDR content, the client must composite to the
* brightness space as specified by the hardware composer. This is so that adjusting the real
* display brightness may be applied atomically with compensating the client target output. For
* instance, client-compositing a list of SDR layers requires dimming the brightness space of
* the SDR buffers when an HDR layer is simultaneously device-composited.
*/
ClientTargetPropertyWithBrightness clientTargetProperty;
}