diff options
author | Dan Stoza | 2016-04-14 18:42:07 -0500 |
---|---|---|
committer | Android (Google) Code Review | 2016-04-14 18:42:07 -0500 |
commit | 8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e (patch) | |
tree | fcfcd4e941a3ea0c75669e54e9d7f8281597a7bf /services | |
parent | 87085d4f302d80cfe4fe5c5ef034608f206a1d16 (diff) | |
parent | 355f60461b1ec4f0035fcb5e73d36e662352cd18 (diff) | |
download | frameworks-native-8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e.tar.gz frameworks-native-8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e.tar.xz frameworks-native-8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e.zip |
Merge "HWC2: Change version detection scheme" into nyc-dev
Diffstat (limited to 'services')
-rw-r--r-- | services/surfaceflinger/DisplayHardware/HWComposer.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index cd2e05f3a..0bec0b815 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp | |||
@@ -116,22 +116,20 @@ void HWComposer::loadHwcModule() | |||
116 | abort(); | 116 | abort(); |
117 | } | 117 | } |
118 | 118 | ||
119 | if (module->module_api_version >= 0x0200) { | 119 | hw_device_t* device = nullptr; |
120 | hwc2_device_t* hwc2device = nullptr; | 120 | int error = module->methods->open(module, HWC_HARDWARE_COMPOSER, &device); |
121 | int error = hwc2_open(module, &hwc2device); | 121 | if (error != 0) { |
122 | if (error != 0) { | 122 | ALOGE("Failed to open HWC device (%s), aborting", strerror(-error)); |
123 | ALOGE("Failed to open HWC2 device (%s), aborting", strerror(-error)); | 123 | abort(); |
124 | abort(); | 124 | } |
125 | } | 125 | |
126 | mHwcDevice = std::make_unique<HWC2::Device>(hwc2device); | 126 | uint32_t majorVersion = (device->version >> 24) & 0xF; |
127 | if (majorVersion == 2) { | ||
128 | mHwcDevice = std::make_unique<HWC2::Device>( | ||
129 | reinterpret_cast<hwc2_device_t*>(device)); | ||
127 | } else { | 130 | } else { |
128 | hwc_composer_device_1_t* hwc1device = nullptr; | 131 | mAdapter = std::make_unique<HWC2On1Adapter>( |
129 | int error = hwc_open_1(module, &hwc1device); | 132 | reinterpret_cast<hwc_composer_device_1_t*>(device)); |
130 | if (error) { | ||
131 | ALOGE("Failed to open HWC1 device (%s), aborting", strerror(-error)); | ||
132 | abort(); | ||
133 | } | ||
134 | mAdapter = std::make_unique<HWC2On1Adapter>(hwc1device); | ||
135 | uint8_t minorVersion = mAdapter->getHwc1MinorVersion(); | 133 | uint8_t minorVersion = mAdapter->getHwc1MinorVersion(); |
136 | if (minorVersion < 1) { | 134 | if (minorVersion < 1) { |
137 | ALOGE("Cannot adapt to HWC version %d.%d", | 135 | ALOGE("Cannot adapt to HWC version %d.%d", |