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) {
|
||||
if (flush_) {
|
||||
return HWC2::Error::None;
|
||||
}
|
||||
|
||||
if (skip_validate_ && !CanSkipValidate()) {
|
||||
validated_ = false;
|
||||
}
|
||||
@@ -1265,37 +1269,36 @@ HWC2::Error HWCDisplay::CommitLayerStack(void) {
|
||||
|
||||
DumpInputBuffers();
|
||||
|
||||
if (!flush_) {
|
||||
DisplayError error = kErrorUndefined;
|
||||
int status = 0;
|
||||
if (tone_mapper_) {
|
||||
if (layer_stack_.flags.hdr_present) {
|
||||
status = tone_mapper_->HandleToneMap(&layer_stack_);
|
||||
if (status != 0) {
|
||||
DLOGE("Error handling HDR in ToneMapper");
|
||||
}
|
||||
} else {
|
||||
tone_mapper_->Terminate();
|
||||
DisplayError error = kErrorUndefined;
|
||||
int status = 0;
|
||||
if (tone_mapper_) {
|
||||
if (layer_stack_.flags.hdr_present) {
|
||||
status = tone_mapper_->HandleToneMap(&layer_stack_);
|
||||
if (status != 0) {
|
||||
DLOGE("Error handling HDR in ToneMapper");
|
||||
}
|
||||
}
|
||||
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 {
|
||||
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;
|
||||
}
|
||||
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 {
|
||||
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