Skip to content

Commit 1c30bb5

Browse files
Sally QiAndroid (Google) Code Review
authored andcommitted
Merge "Revert "[Lut backend] Fix a bug where we were passing a nullptr to the HWC when we wanted to clear the LUTs."" into main
2 parents 06883bb + f5f380b commit 1c30bb5

2 files changed

Lines changed: 20 additions & 23 deletions

File tree

services/surfaceflinger/CompositionEngine/src/OutputLayer.cpp

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -589,31 +589,29 @@ void OutputLayer::writeOutputIndependentGeometryStateToHWC(
589589

590590
void OutputLayer::writeLutToHWC(HWC2::Layer* hwcLayer,
591591
const LayerFECompositionState& outputIndependentState) {
592-
Luts luts;
593-
// if outputIndependentState.luts is nullptr, it means we want to clear the LUTs
594-
// and we pass an empty Luts object to the HWC.
595-
if (outputIndependentState.luts) {
596-
auto& lutFileDescriptor = outputIndependentState.luts->getLutFileDescriptor();
597-
auto lutOffsets = outputIndependentState.luts->offsets;
598-
auto& lutProperties = outputIndependentState.luts->lutProperties;
599-
600-
std::vector<LutProperties> aidlProperties;
601-
aidlProperties.reserve(lutProperties.size());
602-
for (size_t i = 0; i < lutOffsets.size(); i++) {
603-
LutProperties properties;
604-
properties.dimension = static_cast<LutProperties::Dimension>(lutProperties[i].dimension);
605-
properties.size = lutProperties[i].size;
606-
properties.samplingKeys = {
607-
static_cast<LutProperties::SamplingKey>(lutProperties[i].samplingKey)};
608-
aidlProperties.emplace_back(properties);
609-
}
610-
592+
if (!outputIndependentState.luts) {
593+
return;
594+
}
595+
auto& lutFileDescriptor = outputIndependentState.luts->getLutFileDescriptor();
596+
auto lutOffsets = outputIndependentState.luts->offsets;
597+
auto& lutProperties = outputIndependentState.luts->lutProperties;
611598

612-
luts.pfd = ndk::ScopedFileDescriptor(dup(lutFileDescriptor.get()));
613-
luts.offsets = lutOffsets;
614-
luts.lutProperties = std::move(aidlProperties);
599+
std::vector<LutProperties> aidlProperties;
600+
aidlProperties.reserve(lutProperties.size());
601+
for (size_t i = 0; i < lutOffsets.size(); i++) {
602+
LutProperties properties;
603+
properties.dimension = static_cast<LutProperties::Dimension>(lutProperties[i].dimension);
604+
properties.size = lutProperties[i].size;
605+
properties.samplingKeys = {
606+
static_cast<LutProperties::SamplingKey>(lutProperties[i].samplingKey)};
607+
aidlProperties.emplace_back(properties);
615608
}
616609

610+
Luts luts;
611+
luts.pfd = ndk::ScopedFileDescriptor(dup(lutFileDescriptor.get()));
612+
luts.offsets = lutOffsets;
613+
luts.lutProperties = std::move(aidlProperties);
614+
617615
switch (auto error = hwcLayer->setLuts(luts)) {
618616
case hal::Error::NONE:
619617
break;

services/surfaceflinger/CompositionEngine/tests/OutputLayerTest.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -901,7 +901,6 @@ struct OutputLayerWriteStateToHWCTest : public OutputLayerTest {
901901
EXPECT_CALL(*mHwcLayer, setSurfaceDamage(RegionEq(surfaceDamage))).WillOnce(Return(kError));
902902
EXPECT_CALL(*mHwcLayer, setBlockingRegion(RegionEq(blockingRegion)))
903903
.WillOnce(Return(kError));
904-
EXPECT_CALL(*mHwcLayer, setLuts(_)).WillOnce(Return(kError));
905904
}
906905

907906
void expectSetCompositionTypeCall(Composition compositionType) {

0 commit comments

Comments
 (0)