hwc2: Allow commit to go through if flush_ flag is set
Allow commit to go through if flush_ flag is set even if display is not validated Change-Id: Ic87f87342a72de541fe79ba514915dd5e6e13c86 CRs-Fixed: 2218342
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
parent
99455b1939
commit
9ded89a4f9
@@ -1250,6 +1250,10 @@ HWC2::Error HWCDisplay::GetHdrCapabilities(uint32_t *out_num_types, int32_t *out
|
|||||||
|
|
||||||
|
|
||||||
HWC2::Error HWCDisplay::CommitLayerStack(void) {
|
HWC2::Error HWCDisplay::CommitLayerStack(void) {
|
||||||
|
if (flush_) {
|
||||||
|
return HWC2::Error::None;
|
||||||
|
}
|
||||||
|
|
||||||
if (skip_validate_ && !CanSkipValidate()) {
|
if (skip_validate_ && !CanSkipValidate()) {
|
||||||
validated_ = false;
|
validated_ = false;
|
||||||
}
|
}
|
||||||
@@ -1265,37 +1269,36 @@ HWC2::Error HWCDisplay::CommitLayerStack(void) {
|
|||||||
|
|
||||||
DumpInputBuffers();
|
DumpInputBuffers();
|
||||||
|
|
||||||
if (!flush_) {
|
DisplayError error = kErrorUndefined;
|
||||||
DisplayError error = kErrorUndefined;
|
int status = 0;
|
||||||
int status = 0;
|
if (tone_mapper_) {
|
||||||
if (tone_mapper_) {
|
if (layer_stack_.flags.hdr_present) {
|
||||||
if (layer_stack_.flags.hdr_present) {
|
status = tone_mapper_->HandleToneMap(&layer_stack_);
|
||||||
status = tone_mapper_->HandleToneMap(&layer_stack_);
|
if (status != 0) {
|
||||||
if (status != 0) {
|
DLOGE("Error handling HDR in ToneMapper");
|
||||||
DLOGE("Error handling HDR in ToneMapper");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tone_mapper_->Terminate();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
error = display_intf_->Commit(&layer_stack_);
|
|
||||||
|
|
||||||
if (error == kErrorNone) {
|
|
||||||
// A commit is successfully submitted, start flushing on failure now onwards.
|
|
||||||
flush_on_error_ = true;
|
|
||||||
} else {
|
} else {
|
||||||
if (error == kErrorShutDown) {
|
tone_mapper_->Terminate();
|
||||||
shutdown_pending_ = true;
|
}
|
||||||
return HWC2::Error::Unsupported;
|
}
|
||||||
} else if (error == kErrorNotValidated) {
|
|
||||||
validated_ = false;
|
error = display_intf_->Commit(&layer_stack_);
|
||||||
return HWC2::Error::NotValidated;
|
|
||||||
} else if (error != kErrorPermission) {
|
if (error == kErrorNone) {
|
||||||
DLOGE("Commit failed. Error = %d", error);
|
// A commit is successfully submitted, start flushing on failure now onwards.
|
||||||
// To prevent surfaceflinger infinite wait, flush the previous frame during Commit()
|
flush_on_error_ = true;
|
||||||
// so that previous buffer and fences are released, and override the error.
|
} else {
|
||||||
flush_ = true;
|
if (error == kErrorShutDown) {
|
||||||
}
|
shutdown_pending_ = true;
|
||||||
|
return HWC2::Error::Unsupported;
|
||||||
|
} else if (error == kErrorNotValidated) {
|
||||||
|
validated_ = false;
|
||||||
|
return HWC2::Error::NotValidated;
|
||||||
|
} else if (error != kErrorPermission) {
|
||||||
|
DLOGE("Commit failed. Error = %d", error);
|
||||||
|
// To prevent surfaceflinger infinite wait, flush the previous frame during Commit()
|
||||||
|
// so that previous buffer and fences are released, and override the error.
|
||||||
|
flush_ = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user