diff options
author | 2016-04-14 23:42:07 +0000 | |
---|---|---|
committer | 2016-04-14 23:42:07 +0000 | |
commit | 8bf556ec85af8d4d47aad5a19a0633cf8b0fa17e (patch) | |
tree | fcfcd4e941a3ea0c75669e54e9d7f8281597a7bf | |
parent | 87085d4f302d80cfe4fe5c5ef034608f206a1d16 (diff) | |
parent | 355f60461b1ec4f0035fcb5e73d36e662352cd18 (diff) |
Merge "HWC2: Change version detection scheme" into nyc-dev
-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 cd2e05f3a8..0bec0b8152 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -116,22 +116,20 @@ void HWComposer::loadHwcModule() abort(); } - if (module->module_api_version >= 0x0200) { - hwc2_device_t* hwc2device = nullptr; - int error = hwc2_open(module, &hwc2device); - if (error != 0) { - ALOGE("Failed to open HWC2 device (%s), aborting", strerror(-error)); - abort(); - } - mHwcDevice = std::make_unique<HWC2::Device>(hwc2device); + hw_device_t* device = nullptr; + int error = module->methods->open(module, HWC_HARDWARE_COMPOSER, &device); + if (error != 0) { + ALOGE("Failed to open HWC device (%s), aborting", strerror(-error)); + abort(); + } + + uint32_t majorVersion = (device->version >> 24) & 0xF; + if (majorVersion == 2) { + mHwcDevice = std::make_unique<HWC2::Device>( + reinterpret_cast<hwc2_device_t*>(device)); } else { - hwc_composer_device_1_t* hwc1device = nullptr; - int error = hwc_open_1(module, &hwc1device); - if (error) { - ALOGE("Failed to open HWC1 device (%s), aborting", strerror(-error)); - abort(); - } - mAdapter = std::make_unique<HWC2On1Adapter>(hwc1device); + mAdapter = std::make_unique<HWC2On1Adapter>( + reinterpret_cast<hwc_composer_device_1_t*>(device)); uint8_t minorVersion = mAdapter->getHwc1MinorVersion(); if (minorVersion < 1) { ALOGE("Cannot adapt to HWC version %d.%d", |