diff options
author | HyunKyung Kim <hk310.kim@samsung.com> | 2019-03-19 17:42:24 +0900 |
---|---|---|
committer | HyunKyung Kim <hk310.kim@samsung.com> | 2019-10-28 13:49:42 +0900 |
commit | 36db95c010409f5a24111fab6db3f8d39f3bf57d (patch) | |
tree | 806756519690a9d39555c26d8c16113937167e1c | |
parent | 49bb7b3b239b2f7341e4786038d0207f72d9b569 (diff) | |
download | gs101-36db95c010409f5a24111fab6db3f8d39f3bf57d.tar.gz |
libhwc2.1: Change data structure to manage window configuration info
Window conifuguration for DPU can be delivered
to DPU driver using different interface.
ExynosDisplay manages window configuration with
the data structure that is independent from interface.
Each interface class converts configuration data
according to used interface.
Change-Id: If1f35eacc44843fb69204cab0a70d92ed3dda3e9
Signed-off-by: HyunKyung Kim <hk310.kim@samsung.com>
-rw-r--r-- | libhwc2.1/libexternaldisplay/ExynosExternalDisplayModule.cpp | 19 | ||||
-rw-r--r-- | libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp | 23 |
2 files changed, 20 insertions, 22 deletions
diff --git a/libhwc2.1/libexternaldisplay/ExynosExternalDisplayModule.cpp b/libhwc2.1/libexternaldisplay/ExynosExternalDisplayModule.cpp index 6063b1f..bf14c6d 100644 --- a/libhwc2.1/libexternaldisplay/ExynosExternalDisplayModule.cpp +++ b/libhwc2.1/libexternaldisplay/ExynosExternalDisplayModule.cpp @@ -58,29 +58,28 @@ ExynosMPP* ExynosExternalDisplayModule::getExynosMPPForDma(decon_idma_type idma) int32_t ExynosExternalDisplayModule::validateWinConfigData() { - struct decon_win_config *config = mWinConfigData->config; bool flagValidConfig = true; if (ExynosDisplay::validateWinConfigData() != NO_ERROR) flagValidConfig = false; - for (size_t i = 0; i < MAX_DECON_WIN; i++) { - if (config[i].state == config[i].DECON_WIN_STATE_BUFFER) { + for (size_t i = 0; i < mDpuData.configs.size(); i++) { + struct exynos_win_config_data &config = mDpuData.configs[i]; + if (config.state == config.WIN_STATE_BUFFER) { bool configInvalid = false; - mpp_phycal_type_t mppType = getMPPTypeFromDPPChannel((uint32_t)config[i].idma_type); - if ((config[i].src.w != config[i].dst.w) || - (config[i].src.h != config[i].dst.h)) { + uint32_t mppType = config.assignedMPP->mPhysicalType; + if ((config.src.w != config.dst.w) || + (config.src.h != config.dst.h)) { if ((mppType == MPP_DPP_GF) || (mppType == MPP_DPP_VG) || (mppType == MPP_DPP_VGF)) { - DISPLAY_LOGE("WIN_CONFIG error: invalid assign id : %zu, s_w : %d, d_w : %d, s_h : %d, d_h : %d, channel : %d, mppType : %d", - i, config[i].src.w, config[i].dst.w, config[i].src.h, config[i].dst.h, - config[i].idma_type, mppType); + DISPLAY_LOGE("WIN_CONFIG error: invalid assign id : %zu, s_w : %d, d_w : %d, s_h : %d, d_h : %d, mppType : %d", + i, config.src.w, config.dst.w, config.src.h, config.dst.h, mppType); configInvalid = true; } } if (configInvalid) { - config[i].state = config[i].DECON_WIN_STATE_DISABLED; + config.state = config.WIN_STATE_DISABLED; flagValidConfig = false; } } diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index 21d1a44..584b4ab 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -52,10 +52,10 @@ void ExynosPrimaryDisplayModule::usePreDefinedWindow(bool use) if (use) { mBaseWindowIndex = PRIMARY_DISP_BASE_WIN[mDevice->mDisplayMode]; - mMaxWindowNum = NUM_HW_WINDOWS - PRIMARY_DISP_BASE_WIN[mDevice->mDisplayMode]; + mMaxWindowNum = mDisplayInterface->getMaxWindowNum() - PRIMARY_DISP_BASE_WIN[mDevice->mDisplayMode]; } else { mBaseWindowIndex = 0; - mMaxWindowNum = NUM_HW_WINDOWS; + mMaxWindowNum = mDisplayInterface->getMaxWindowNum(); } } @@ -85,29 +85,28 @@ ExynosMPP* ExynosPrimaryDisplayModule::getExynosMPPForDma(decon_idma_type channe int32_t ExynosPrimaryDisplayModule::validateWinConfigData() { - struct decon_win_config *config = mWinConfigData->config; bool flagValidConfig = true; if (ExynosDisplay::validateWinConfigData() != NO_ERROR) flagValidConfig = false; - for (size_t i = 0; i < MAX_DECON_WIN; i++) { - if (config[i].state == config[i].DECON_WIN_STATE_BUFFER) { + for (size_t i = 0; i < mDpuData.configs.size(); i++) { + struct exynos_win_config_data &config = mDpuData.configs[i]; + if (config.state == config.WIN_STATE_BUFFER) { bool configInvalid = false; - mpp_phycal_type_t mppType = getMPPTypeFromDPPChannel((uint32_t)config[i].idma_type); - if ((config[i].src.w != config[i].dst.w) || - (config[i].src.h != config[i].dst.h)) { + uint32_t mppType = config.assignedMPP->mPhysicalType; + if ((config.src.w != config.dst.w) || + (config.src.h != config.dst.h)) { if ((mppType == MPP_DPP_GF) || (mppType == MPP_DPP_VG) || (mppType == MPP_DPP_VGF)) { - DISPLAY_LOGE("WIN_CONFIG error: invalid assign id : %zu, s_w : %d, d_w : %d, s_h : %d, d_h : %d, channel : %d, mppType : %d", - i, config[i].src.w, config[i].dst.w, config[i].src.h, config[i].dst.h, - config[i].idma_type, mppType); + DISPLAY_LOGE("WIN_CONFIG error: invalid assign id : %zu, s_w : %d, d_w : %d, s_h : %d, d_h : %d, mppType : %d", + i, config.src.w, config.dst.w, config.src.h, config.dst.h, mppType); configInvalid = true; } } if (configInvalid) { - config[i].state = config[i].DECON_WIN_STATE_DISABLED; + config.state = config.WIN_STATE_DISABLED; flagValidConfig = false; } } |