diff --git a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp index a0bd80fb..20490d7c 100644 --- a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp +++ b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp @@ -273,8 +273,6 @@ namespace MobileGL::MG_Backend::DirectGLES { backendFBOObject->SyncToBackend(currentFBO, target); } - // backendFBOObject->Bind(target); - lastUpdatedFBO = currentFBO.get(); } } diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index a6a2cff8..919769fc 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -360,11 +360,6 @@ namespace MobileGL::MG_Backend::DirectGLES { return; } - if (!stateTextureObject->CheckDirtyBit(MG_State::GLState::TextureDirtyBit::StorageDirtyBit)) { - MGLOG_D("Texture parameters changed but storage is not dirty, skipping mipmap sync for texture ID: %u", - m_backendTextureId); - return; - } #ifdef TRACY_ENABLE ZoneScopedC(TRACY_ZONECOLOR_BACKEND); #endif @@ -396,7 +391,9 @@ namespace MobileGL::MG_Backend::DirectGLES { } Bind(target); - + errorLopper.Loop([file = __FILE__, line = __LINE__, func = __func__](GLenum err) { + MGLOG_D("%s(%s:%d) ES error: %s", func, file, line, MG_Util::ConvertGLEnumToString(err).c_str()); + }); const auto baseSize = stateTextureObject->GetBaseSize(); StateTextureBasicInfo currentTextureInfo = {stateTextureObject->GetFormat(), static_cast(baseSize.x()), @@ -436,11 +433,11 @@ namespace MobileGL::MG_Backend::DirectGLES { auto* pData = (levelDirty && levelByteSize != 0) ? textureMipmapObject->MapMipmapData(uploadTarget, level) : nullptr; - MGLOG_D("%s: target: %s: syncing mip %d: %dx%dx%d, byteSize = %d, pData = %p, " - "levelDirty = %s", - __func__, MG_Util::ConvertTextureUploadTargetToString(uploadTarget).c_str(), level, - levelTexelSize.x(), levelTexelSize.y(), levelTexelSize.z(), levelByteSize, pData, - levelDirty ? "true" : "false"); + MGLOG_D( + "%s: target: %s: syncing mip %d: %dx%dx%d, byteSize = %d, pData = %p, levelDirty = %s", + __func__, MG_Util::ConvertTextureUploadTargetToString(uploadTarget).c_str(), level, + levelTexelSize.x(), levelTexelSize.y(), levelTexelSize.z(), levelByteSize, pData, + levelDirty ? "true" : "false"); errorLopper.Clear(); MG_External::GLES::glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); @@ -525,8 +522,6 @@ namespace MobileGL::MG_Backend::DirectGLES { } } } - - textureMipmapObject->ClearAllStorageDirtyBit(); break; } case TextureStorageType::Buffer: { @@ -562,8 +557,6 @@ namespace MobileGL::MG_Backend::DirectGLES { &glType); MG_External::GLES::glTexBuffer(GL_TEXTURE_BUFFER, glInternalFormat, backendId); - - textureBufferObject->ClearAllStorageDirtyBit(); break; } default: diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.h b/MobileGL/MG_Backend/DirectGLES/Managers.h index 45185474..b964ac01 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.h +++ b/MobileGL/MG_Backend/DirectGLES/Managers.h @@ -9,7 +9,6 @@ #pragma once #include #include "DirectGLES.h" -#include "Utils.h" #include "MG_State/GLState/SamplerState/SamplerObject.h" #include "MG_State/GLState/TextureState/TextureEnum.h" #include diff --git a/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp b/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp index 61a9d9f3..911fca93 100644 --- a/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp +++ b/MobileGL/MG_Impl/GLImpl/Texture/GL_Texture.cpp @@ -788,7 +788,6 @@ namespace MobileGL { auto* texBufferObject = static_cast(textureObject.get()); auto& bufferSlot = texBufferObject->GetBufferBindingSlot(); bufferSlot.Bind(bufferObject); - texBufferObject->SetStorageDirtyBit(); texBufferObject->SetInternalFormat(textureInternalFormat); } diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp b/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp index d2e23714..aaac2c01 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp +++ b/MobileGL/MG_State/GLState/TextureState/TextureObject.cpp @@ -135,14 +135,6 @@ namespace MobileGL { ++m_textureParamsVersion; } - Bool TextureObjectBase::IsDirty() const { - return m_dirtyBit; - } - - Bool TextureObjectBase::CheckDirtyBit(TextureDirtyBit bit) const { - return m_dirtyBit & bit; - } - Uint16 TextureObjectBase::GetTextureParamsVersion() const { return m_textureParamsVersion; } @@ -178,9 +170,6 @@ namespace MobileGL { void TextureObjectWithOneMipmap::MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, Bool dirty) { m_textureStorage.MarkDirty(GetIndexOfTextureUploadTarget(uploadTarget), mipmapLevel, dirty); - if (dirty) { - m_dirtyBit.Set(TextureDirtyBit::StorageDirtyBit); - } } Bool TextureObjectWithOneMipmap::IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const { @@ -224,14 +213,6 @@ namespace MobileGL { return true; } - void TextureObjectWithOneMipmap::ClearAllStorageDirtyBit() { - auto levelCount = GetMipmapLevelCount(); - for (Uint i = 0; i < levelCount; ++i) { - m_textureStorage.MarkDirty(0, i, false); - } - m_dirtyBit.Clear(TextureDirtyBit::StorageDirtyBit); - } - // TODO: add other texture types as needed } // namespace GLState diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObject.h b/MobileGL/MG_State/GLState/TextureState/TextureObject.h index a094be60..cef2bde3 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObject.h +++ b/MobileGL/MG_State/GLState/TextureState/TextureObject.h @@ -17,12 +17,6 @@ namespace MobileGL { namespace MG_State { namespace GLState { - enum class TextureDirtyBit : Uint8 { - None = 0, - StorageDirtyBit = 1 << 0, // refers to mipmap or TexBuffer according to tex type - ParamDirtyBit = 1 << 1 - }; - class ITextureObject { public: using TargetEnum = TextureTarget; @@ -47,8 +41,6 @@ namespace MobileGL { virtual const UintVec2& GetLevelRange() const = 0; virtual void SetBaseLevel(Uint baseLevel) = 0; virtual void SetMaxLevel(Uint maxLevel) = 0; - virtual Bool IsDirty() const = 0; - virtual Bool CheckDirtyBit(TextureDirtyBit bit) const = 0; virtual Uint16 GetTextureParamsVersion() const = 0; protected: @@ -76,11 +68,7 @@ namespace MobileGL { const UintVec2& GetLevelRange() const override; void SetBaseLevel(Uint baseLevel) override; void SetMaxLevel(Uint maxLevel) override; - Bool IsDirty() const override; - Bool CheckDirtyBit(TextureDirtyBit bit) const override; Uint16 GetTextureParamsVersion() const override; - virtual void ClearAllStorageDirtyBit() = 0; - protected: const Uint m_externalIndex; const TextureTarget m_target = TextureTarget::Unknown; @@ -91,8 +79,6 @@ namespace MobileGL { TextureSwizzleParam::Blue, TextureSwizzleParam::Alpha}; UintVec2 m_levelRange = {0, 1000}; Uint16 m_textureParamsVersion = 0; - - Flags m_dirtyBit = TextureDirtyBit::None; }; class TextureObjectMipmap : public TextureObjectBase { @@ -126,8 +112,7 @@ namespace MobileGL { void UpdateMipmapSubData(TextureUploadTarget uploadTarget, Uint mipmapLevel, DataPtr input) override; void* MapMipmapData(TextureUploadTarget uploadTarget, Uint mipmapLevel) override; void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, Bool dirty) override; - Bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const override; - void ClearAllStorageDirtyBit() override; + bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const override; IntVec3 GetBaseSize() const override; Bool IsComplete() const override; diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.cpp b/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.cpp index e7eea174..8ed9113b 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.cpp +++ b/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.cpp @@ -42,9 +42,6 @@ namespace MobileGL { void TextureObject2DCube::MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, bool dirty) { m_textureStorage.MarkDirty(GetIndexOfTextureUploadTarget(uploadTarget), mipmapLevel, dirty); - if (dirty) { - m_dirtyBit.Set(TextureDirtyBit::StorageDirtyBit); - } } bool TextureObject2DCube::IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const { @@ -85,17 +82,6 @@ namespace MobileGL { // TODO: add more completeness checks based on texture type and mipmap levels return true; } - - void TextureObject2DCube::ClearAllStorageDirtyBit() { - auto uploadTargetCount = GetUploadTargets().size(); - auto levelCount = GetMipmapLevelCount(); - for (SizeT target = 0; target < uploadTargetCount; ++target) { - for (Uint level = 0; level < levelCount; ++level) { - m_textureStorage.MarkDirty(target, level, false); - } - } - m_dirtyBit.Clear(TextureDirtyBit::StorageDirtyBit); - } } // namespace GLState } // namespace MG_State } // namespace MobileGL diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.h b/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.h index a7f8abe9..2d97a8b2 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.h +++ b/MobileGL/MG_State/GLState/TextureState/TextureObject2DCube.h @@ -26,7 +26,6 @@ namespace MobileGL { void* MapMipmapData(TextureUploadTarget uploadTarget, Uint mipmapLevel) override; void MarkStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel, bool dirty) override; bool IsStorageDirty(TextureUploadTarget uploadTarget, Uint mipmapLevel) const override; - void ClearAllStorageDirtyBit() override; IntVec3 GetBaseSize() const override; Bool IsComplete() const override; diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.cpp b/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.cpp index 481e9760..4cb4f712 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.cpp +++ b/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.cpp @@ -23,14 +23,6 @@ namespace MobileGL { MOBILEGL_ASSERT(target == TextureUploadTarget::TextureBuffer, "Invalid TextureUploadTarget!"); return m_bufferBindingSlot; } - - void TextureObjectBuffer::ClearAllStorageDirtyBit() { - m_dirtyBit.Clear(TextureDirtyBit::StorageDirtyBit); - } - - void TextureObjectBuffer::SetStorageDirtyBit() { - m_dirtyBit.Set(TextureDirtyBit::StorageDirtyBit); - } } // namespace GLState } // namespace MG_State } // namespace MobileGL \ No newline at end of file diff --git a/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.h b/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.h index c2b4badf..f5d7928e 100644 --- a/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.h +++ b/MobileGL/MG_State/GLState/TextureState/TextureObjectBuffer.h @@ -20,8 +20,6 @@ namespace MobileGL { const Vector& GetUploadTargets() const override { return m_uploadTargets; } BindingSlot& GetBufferBindingSlot( TextureUploadTarget target = TextureUploadTarget::TextureBuffer); - void ClearAllStorageDirtyBit() override; - void SetStorageDirtyBit(); protected: Uint GetIndexOfTextureUploadTarget(TextureUploadTarget target) const override; diff --git a/MobileGL/MG_Util/Types.h b/MobileGL/MG_Util/Types.h index ec390275..725be14d 100644 --- a/MobileGL/MG_Util/Types.h +++ b/MobileGL/MG_Util/Types.h @@ -281,16 +281,6 @@ namespace MobileGL { Flags(typename Underlying::type b) : flags(b) {} - Flags Set(const Bit b) { - flags |= static_cast(b); - return flags; - } - - Flags Clear(const Bit b) { - flags &= ~static_cast(b); - return flags; - } - // Flags - Bit Flags operator|(const Bit b) const { return Flags(flags | static_cast(b)); }