[Perf] (MG_Backend/DirectGLES): No need to use shared_ptr for g_boundVertexBufferObject.

This commit is contained in:
BZLZHH
2026-02-03 21:07:14 +08:00
parent f0ab82ea2a
commit 74509ae0a3
2 changed files with 5 additions and 10 deletions
+3 -7
View File
@@ -177,25 +177,21 @@ namespace MobileGL::MG_Backend::DirectGLES {
} }
} }
SharedPtr<BackendBufferObject> BackendBufferObject::GetSharedPtr() {
return shared_from_this();
}
void BackendBufferObject::Bind(GLenum target) { void BackendBufferObject::Bind(GLenum target) {
#ifdef TRACY_ENABLE #ifdef TRACY_ENABLE
ZoneScopedC(TRACY_ZONECOLOR_BACKEND); ZoneScopedC(TRACY_ZONECOLOR_BACKEND);
#endif #endif
if (target == GL_ARRAY_BUFFER) { if (target == GL_ARRAY_BUFFER) {
if (g_boundVertexBufferObject.get() == this) { if (g_boundVertexBufferObject == this) {
return; return;
} }
g_boundVertexBufferObject = GetSharedPtr(); g_boundVertexBufferObject = this;
} }
MG_External::GLES::glBindBuffer(target, m_backendBufferId); MG_External::GLES::glBindBuffer(target, m_backendBufferId);
} }
UnorderedMap<SharedPtr<MG_State::GLState::BufferObject>, SharedPtr<BackendBufferObject>> g_backendBufferObjects; UnorderedMap<SharedPtr<MG_State::GLState::BufferObject>, SharedPtr<BackendBufferObject>> g_backendBufferObjects;
SharedPtr<BackendBufferObject> g_boundVertexBufferObject; BackendBufferObject* g_boundVertexBufferObject = nullptr;
} // namespace BufferImpl } // namespace BufferImpl
namespace VertexArrayImpl { namespace VertexArrayImpl {
+2 -3
View File
@@ -18,13 +18,12 @@
namespace MobileGL::MG_Backend::DirectGLES { namespace MobileGL::MG_Backend::DirectGLES {
namespace BufferImpl { namespace BufferImpl {
const GLenum TempBufferTarget = GL_ARRAY_BUFFER; const GLenum TempBufferTarget = GL_ARRAY_BUFFER;
class BackendBufferObject : public std::enable_shared_from_this<BackendBufferObject> { class BackendBufferObject {
public: public:
BackendBufferObject(); BackendBufferObject();
void SyncToBackend(SharedPtr<MG_State::GLState::BufferObject>& stateBufferObject); void SyncToBackend(SharedPtr<MG_State::GLState::BufferObject>& stateBufferObject);
Uint GetBackendBufferId() { return m_backendBufferId; } Uint GetBackendBufferId() { return m_backendBufferId; }
void Bind(GLenum target = TempBufferTarget); void Bind(GLenum target = TempBufferTarget);
SharedPtr<BackendBufferObject> GetSharedPtr();
private: private:
void SyncToBackend_glBufferData(SharedPtr<MG_State::GLState::BufferObject>& stateBufferObject); void SyncToBackend_glBufferData(SharedPtr<MG_State::GLState::BufferObject>& stateBufferObject);
@@ -37,7 +36,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
Bool m_isInitialized = false; Bool m_isInitialized = false;
}; };
extern SharedPtr<BackendBufferObject> g_boundVertexBufferObject; extern BackendBufferObject* g_boundVertexBufferObject;
extern UnorderedMap<SharedPtr<MG_State::GLState::BufferObject>, SharedPtr<BackendBufferObject>> extern UnorderedMap<SharedPtr<MG_State::GLState::BufferObject>, SharedPtr<BackendBufferObject>>
g_backendBufferObjects; g_backendBufferObjects;
} // namespace BufferImpl } // namespace BufferImpl