diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2023-11-21 06:40:32 -0800 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2023-11-21 06:40:32 -0800 |
commit | 87f1200913a98b19b1dd302798cfc546de87a050 (patch) | |
tree | bb3c9fc174d66f995f6218dfc7e1fd6d72887b1e | |
parent | 9dbd28b89daf961f959d36d29d631bfc04788f9a (diff) | |
parent | a329f0076f0d757dde617713d1582f5aa08e7f65 (diff) |
Merge a329f0076f0d757dde617713d1582f5aa08e7f65 on remote branch
Change-Id: I38b0c35b3e9dbe8dbc39c7188335384c39f12b8f
-rw-r--r-- | libs/renderengine/skia/SkiaRenderEngine.cpp | 13 | ||||
-rw-r--r-- | services/sensorservice/SensorService.cpp | 7 | ||||
-rw-r--r-- | services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp | 5 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 13 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 5 |
5 files changed, 28 insertions, 15 deletions
diff --git a/libs/renderengine/skia/SkiaRenderEngine.cpp b/libs/renderengine/skia/SkiaRenderEngine.cpp index 9e9df5216f..edf734271a 100644 --- a/libs/renderengine/skia/SkiaRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaRenderEngine.cpp @@ -397,12 +397,10 @@ void SkiaRenderEngine::mapExternalTextureBuffer(const sp<GraphicBuffer>& buffer, } // We don't attempt to map a buffer if the buffer contains protected content. In GL this is // important because GPU resources for protected buffers are much more limited. (In Vk we - // simply match the existing behavior for protected buffers.) In Vk, we never cache any - // buffers while in a protected context, since Vk cannot share across contexts, and protected - // is less common. + // simply match the existing behavior for protected buffers.) We also never cache any + // buffers while in a protected context. const bool isProtectedBuffer = buffer->getUsage() & GRALLOC_USAGE_PROTECTED; - if (isProtectedBuffer || - (mRenderEngineType == RenderEngineType::SKIA_VK_THREADED && isProtected())) { + if (isProtectedBuffer || isProtected()) { return; } ATRACE_CALL(); @@ -467,9 +465,8 @@ void SkiaRenderEngine::unmapExternalTextureBuffer(sp<GraphicBuffer>&& buffer) { std::shared_ptr<AutoBackendTexture::LocalRef> SkiaRenderEngine::getOrCreateBackendTexture( const sp<GraphicBuffer>& buffer, bool isOutputBuffer) { - // Do not lookup the buffer in the cache for protected contexts with the SkiaVk back-end - if (mRenderEngineType == RenderEngineType::SKIA_GL_THREADED || - (mRenderEngineType == RenderEngineType::SKIA_VK_THREADED && !isProtected())) { + // Do not lookup the buffer in the cache for protected contexts + if (!isProtected()) { if (const auto& it = mTextureCache.find(buffer->getId()); it != mTextureCache.end()) { return it->second; } diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index 90d75414d6..398d60242b 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -1055,12 +1055,7 @@ bool SensorService::threadLoop() { if (count < 0) { if(count == DEAD_OBJECT && device.isReconnecting()) { device.reconnect(); - // There are no "real" events at this point, but do not skip the rest of the loop - // if there are pending runtime events. - Mutex::Autolock _l(&mLock); - if (mRuntimeSensorEventQueue.empty()) { - continue; - } + continue; } else { ALOGE("sensor poll failed (%s)", strerror(-count)); break; diff --git a/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp b/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp index 52b5c51eb7..542b7c4b01 100644 --- a/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp +++ b/services/surfaceflinger/QtiExtension/QtiSurfaceFlingerExtension.cpp @@ -1119,7 +1119,10 @@ void QtiSurfaceFlingerExtension::qtiCheckVirtualDisplayHint(const Vector<Display bool createVirtualDisplay = false; int width = 0, height = 0, format = 0; { - Mutex::Autolock lock(mQtiFlinger->mStateLock); + if (!mQtiFlinger->mRequestDisplayModeFlag || + (mQtiFlinger->mFlagThread != std::this_thread::get_id())) { + Mutex::Autolock lock(mQtiFlinger->mStateLock); + } for (const DisplayState& s : displays) { const ssize_t index = mQtiFlinger->mCurrentState.displays.indexOfKey(s.token); if (index < 0) continue; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 8e8bc8a0f1..9ef07f0e5a 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3688,6 +3688,9 @@ void SurfaceFlinger::processDisplayChanged(const wp<IBinder>& displayToken, if (display->isVirtual()) { releaseVirtualDisplay(display->getVirtualId()); } + /* QTI_BEGIN */ + mQtiSFExtnIntf->qtiDestroySmomoInstance(display); + /* QTI_END */ } mDisplays.erase(displayToken); @@ -4072,6 +4075,12 @@ void SurfaceFlinger::requestDisplayModes(std::vector<display::DisplayModeRequest // Scheduler::chooseRefreshRateForContent ConditionalLock lock(mStateLock, std::this_thread::get_id() != mMainThreadId); + /* QTI_BEGIN */ + // Setting mRequestDisplayModeFlag as true and storing thread Id to avoid acquiring the same + // mutex again in a single thread + mRequestDisplayModeFlag = true; + mFlagThread = std::this_thread::get_id(); + /* QTI_END */ for (auto& request : modeRequests) { const auto& modePtr = request.mode.modePtr; @@ -4104,6 +4113,10 @@ void SurfaceFlinger::requestDisplayModes(std::vector<display::DisplayModeRequest to_string(display->getId()).c_str()); } } + /* QTI_BEGIN */ + mRequestDisplayModeFlag = false; + mFlagThread = mMainThreadId; + /* QTI_END */ } void SurfaceFlinger::triggerOnFrameRateOverridesChanged() { diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 47176ca75d..c50f4b8c80 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -353,6 +353,11 @@ public: return sActiveDisplayRotationFlags; } + /* QTI_BEGIN */ + bool mRequestDisplayModeFlag = false; + std::thread::id mFlagThread = std::this_thread::get_id(); + /* QTI_END */ + protected: // We're reference counted, never destroy SurfaceFlinger directly virtual ~SurfaceFlinger(); |