From 4225cc43338af2f974f9c5ad196976ac15a84674 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Tue, 3 Feb 2026 00:17:02 +0800 Subject: [PATCH] [Feat|Perf] (MG_Backend/DirectGLES): Skip whole texture params sync when not dirty. --- MobileGL/MG_Backend/DirectGLES/Managers.cpp | 7 +++++++ MobileGL/MG_Backend/DirectGLES/Managers.h | 1 + 2 files changed, 8 insertions(+) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 7c8ffb62..e33b7026 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -644,6 +644,13 @@ namespace MobileGL::MG_Backend::DirectGLES { return; } + Uint16 currentTextureParamsVersion = stateTextureObject->GetTextureParamsVersion(); + if (m_syncedTextureParamsVersion == currentTextureParamsVersion) { + MGLOG_D("Texture parameters have not changed for texture ID: %u, skipping sync.", m_backendTextureId); + return; + } + m_syncedTextureParamsVersion = currentTextureParamsVersion; + MGLOG_D("Syncing texture params with backend ID %u to backend for state ID %u", m_backendTextureId, stateTextureObject->GetExternalIndex()); diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.h b/MobileGL/MG_Backend/DirectGLES/Managers.h index 7ca7da85..196fd040 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.h +++ b/MobileGL/MG_Backend/DirectGLES/Managers.h @@ -102,6 +102,7 @@ namespace MobileGL::MG_Backend::DirectGLES { Vec4 m_cacheSwizzleParams = {TextureSwizzleParam::Red, TextureSwizzleParam::Green, TextureSwizzleParam::Blue, TextureSwizzleParam::Alpha}; Uint16 m_syncedSamplerVersion = 0; + Uint16 m_syncedTextureParamsVersion = 0; }; extern UnorderedMap, SharedPtr>