diff options
author | Peiyong Lin <lpy@google.com> | 2018-01-24 20:24:32 -0800 |
---|---|---|
committer | Chia-I Wu <olv@google.com> | 2018-01-25 05:58:32 +0000 |
commit | ab505aaf90b4188f88a104689c3936e7ed91a2a5 (patch) | |
tree | d143e6396bdeb87bff5a094fe8f8d09ff722f08c /graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer | |
parent | c133b9087af83abe1c45621facdade1491c3968a (diff) |
[HWC] Add setLayerFloatColor API into HAL.
This patch:
1. Adds setLayerFloatColor API into HAL to enable setting more bits of color on
ColorLayer;
2. Adds VTS tests for setLayerFloatColor.
BUG: 69970838
Test: adb shell /data/nativetest/VtsHalGraphicsComposerV2_2TargetTest/VtsHalGraphicsComposerV2_2TargetTest
Change-Id: I439e35cb2505ee47b8e9a8dd1c19a3f3f2cf9c2f
Diffstat (limited to 'graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer')
-rw-r--r-- | graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer/2.2/ComposerCommandBuffer.h | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer/2.2/ComposerCommandBuffer.h b/graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer/2.2/ComposerCommandBuffer.h index f953b96c74..c803d3ca97 100644 --- a/graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer/2.2/ComposerCommandBuffer.h +++ b/graphics/composer/2.2/utils/command-buffer/include/composer-command-buffer/2.2/ComposerCommandBuffer.h @@ -64,8 +64,16 @@ class CommandWriterBase : public V2_1::CommandWriterBase { public: CommandWriterBase(uint32_t initialMaxSize) : V2_1::CommandWriterBase(initialMaxSize) {} + static constexpr uint16_t kSetLayerFloatColorLength = 4; + void setLayerFloatColor(IComposerClient::FloatColor color) { + beginCommand_2_2(IComposerClient::Command::SET_LAYER_FLOAT_COLOR, + kSetLayerFloatColorLength); + writeFloatColor(color); + endCommand(); + } + void setPerFrameMetadata(const hidl_vec<IComposerClient::PerFrameMetadata>& metadataVec) { - beginCommand2_2(IComposerClient::Command::SET_PER_FRAME_METADATA, metadataVec.size() * 2); + beginCommand_2_2(IComposerClient::Command::SET_PER_FRAME_METADATA, metadataVec.size() * 2); for (const auto& metadata : metadataVec) { writeSigned(static_cast<int32_t>(metadata.key)); writeFloat(metadata.value); @@ -74,10 +82,17 @@ class CommandWriterBase : public V2_1::CommandWriterBase { } protected: - void beginCommand2_2(IComposerClient::Command command, uint16_t length) { + void beginCommand_2_2(IComposerClient::Command command, uint16_t length) { V2_1::CommandWriterBase::beginCommand( static_cast<V2_1::IComposerClient::Command>(static_cast<int32_t>(command)), length); } + + void writeFloatColor(const IComposerClient::FloatColor& color) { + writeFloat(color.r); + writeFloat(color.g); + writeFloat(color.b); + writeFloat(color.a); + } }; // This class helps parse a command queue. Note that all sizes/lengths are in @@ -85,6 +100,15 @@ class CommandWriterBase : public V2_1::CommandWriterBase { class CommandReaderBase : public V2_1::CommandReaderBase { public: CommandReaderBase() : V2_1::CommandReaderBase(){}; + + protected: + IComposerClient::FloatColor readFloatColor() { + float r = readFloat(); + float g = readFloat(); + float b = readFloat(); + float a = readFloat(); + return IComposerClient::FloatColor{r, g, b, a}; + } }; } // namespace V2_2 |