summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Stoza2016-04-14 18:42:07 -0500
committerAndroid (Google) Code Review2016-04-14 18:42:07 -0500
commit8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e (patch)
treefcfcd4e941a3ea0c75669e54e9d7f8281597a7bf /services
parent87085d4f302d80cfe4fe5c5ef034608f206a1d16 (diff)
parent355f60461b1ec4f0035fcb5e73d36e662352cd18 (diff)
downloadframeworks-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.cpp28
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",