[Improvement] (MG_Backend): Better log.

This commit is contained in:
BZLZHH
2025-11-15 14:35:44 +08:00
parent ac5c26af99
commit 1c8af9253b
+28 -32
View File
@@ -39,8 +39,8 @@ namespace MobileGL::MG_Backend::DirectGLES {
return; return;
} }
MGLOG_D("Syncing buffer object with ID: %u to backend for state: %s", m_backendBufferId, MGLOG_D("Syncing buffer object with backend ID %u to backend for state ID %u", m_backendBufferId,
stateBufferObject.get()); stateBufferObject->GetExternalIndex());
Bool needsRegeneration = Bool needsRegeneration =
!m_isInitialized || bufferSize > m_prevBufferSize || bufferSize < m_prevBufferSize / 2; !m_isInitialized || bufferSize > m_prevBufferSize || bufferSize < m_prevBufferSize / 2;
@@ -154,7 +154,8 @@ namespace MobileGL::MG_Backend::DirectGLES {
return; return;
} }
MGLOG_D("Syncing VAO object with ID: %u to backend for state: %p", m_backendVAOId, stateVAOObject.get()); MGLOG_D("Syncing VAO with backend ID %u to backend for state ID %u", m_backendVAOId,
stateVAOObject->GetExternalIndex());
BufferImpl::BackendBufferBindingProtector backendBufferBindingProtector(BufferImpl::TempBufferTarget); BufferImpl::BackendBufferBindingProtector backendBufferBindingProtector(BufferImpl::TempBufferTarget);
BackendVertexArrayBindingProtector backendVAOBindingProtector; BackendVertexArrayBindingProtector backendVAOBindingProtector;
@@ -242,8 +243,8 @@ namespace MobileGL::MG_Backend::DirectGLES {
return; return;
} }
MGLOG_D("Syncing texture object with ID: %u to backend for state: %p", m_backendTextureId, MGLOG_D("Syncing texture with backend ID %u to backend for state ID %u", m_backendTextureId,
stateTextureObject.get()); stateTextureObject->GetExternalIndex());
GLenum target = MG_Util::ConvertTextureTargetToGLEnum(stateTextureObject->GetTarget()); GLenum target = MG_Util::ConvertTextureTargetToGLEnum(stateTextureObject->GetTarget());
@@ -384,14 +385,15 @@ namespace MobileGL::MG_Backend::DirectGLES {
MG_External::GLES::glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_backendFBOId); MG_External::GLES::glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_backendFBOId);
} }
void BackendFramebufferObject::SyncToBackend(SharedPtr<MG_State::GLState::FramebufferObject>& stateFBOObject, FramebufferTarget asTarget) { void BackendFramebufferObject::SyncToBackend(SharedPtr<MG_State::GLState::FramebufferObject>& stateFBOObject,
FramebufferTarget asTarget) {
if (!stateFBOObject) { if (!stateFBOObject) {
MGLOG_E("State FBO object is null, cannot sync to backend."); MGLOG_E("State FBO object is null, cannot sync to backend.");
return; return;
} }
MGLOG_D("Syncing FBO object with ID: %u to backend for state: %p, as %s FBO", m_backendFBOId, stateFBOObject.get(), MGLOG_D("Syncing FBO with backend ID %u to backend for state ID %u, as %s FBO", m_backendFBOId,
(asTarget == FramebufferTarget::Draw ? "DRAW" : "READ")); stateFBOObject->GetExternalIndex(), (asTarget == FramebufferTarget::Draw ? "DRAW" : "READ"));
GLenum glFBOTarget = MG_Util::ConvertFramebufferTargetToGLEnum(asTarget); GLenum glFBOTarget = MG_Util::ConvertFramebufferTargetToGLEnum(asTarget);
BackendFramebufferBindingProtector backendFBOBindingProtector(glFBOTarget); BackendFramebufferBindingProtector backendFBOBindingProtector(glFBOTarget);
@@ -403,28 +405,24 @@ namespace MobileGL::MG_Backend::DirectGLES {
// Attach attachment to FBO, realize `glDrawBuffers` // Attach attachment to FBO, realize `glDrawBuffers`
if (stateFBOObject->DrawBuffersIsDirty()) { if (stateFBOObject->DrawBuffersIsDirty()) {
std::fill(m_frontendBuffers, std::fill(m_frontendBuffers,
m_frontendBuffers + MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS, m_frontendBuffers + MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS, GL_NONE);
GL_NONE);
std::fill(m_backendBuffers, std::fill(m_backendBuffers,
m_backendBuffers + MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS, m_backendBuffers + MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS, GL_NONE);
GL_NONE);
auto& stateDrawBuffers = stateFBOObject->GetDrawBuffers(); auto& stateDrawBuffers = stateFBOObject->GetDrawBuffers();
for (GLint i = 0; i < stateDrawBuffers.size(); ++i) { for (GLint i = 0; i < stateDrawBuffers.size(); ++i) {
m_frontendBuffers[i] = m_frontendBuffers[i] = MG_Util::ConvertFramebufferAttachmentTypeToGLEnum(stateDrawBuffers[i]);
MG_Util::ConvertFramebufferAttachmentTypeToGLEnum(stateDrawBuffers[i]);
} }
MGLOG_D("%s: mapping draw buffers gl -> es:", __func__); MGLOG_D("%s: mapping draw buffers gl -> es:", __func__);
for (int i = 0; for (int i = 0; i < MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS; ++i) {
i < MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS; ++i) {
if (m_frontendBuffers[i] == GL_NONE) { if (m_frontendBuffers[i] == GL_NONE) {
MGLOG_D("(m_frontendBuffers[%d] = GL_NONE), skipped", i); MGLOG_D("(m_frontendBuffers[%d] = GL_NONE), skipped", i);
continue; continue;
} }
m_backendBuffers[nBuffers] = GL_COLOR_ATTACHMENT0 + nBuffers; m_backendBuffers[nBuffers] = GL_COLOR_ATTACHMENT0 + nBuffers;
m_compactedFrontendBuffers[nBuffers] = m_frontendBuffers[i]; m_compactedFrontendBuffers[nBuffers] = m_frontendBuffers[i];
MGLOG_D("(m_frontendBuffers[%d] = %s) -> %s", MGLOG_D("(m_frontendBuffers[%d] = %s) -> %s", i,
i, MG_Util::ConvertGLEnumToString(m_frontendBuffers[i]).c_str(), MG_Util::ConvertGLEnumToString(m_frontendBuffers[i]).c_str(),
MG_Util::ConvertGLEnumToString(m_backendBuffers[nBuffers]).c_str()); MG_Util::ConvertGLEnumToString(m_backendBuffers[nBuffers]).c_str());
nBuffers++; nBuffers++;
} }
@@ -456,9 +454,9 @@ namespace MobileGL::MG_Backend::DirectGLES {
const auto& backendTextureObject = backendTextureIt->second; const auto& backendTextureObject = backendTextureIt->second;
auto glTextureTarget = MG_Util::ConvertTextureTargetToGLEnum(textureObject->GetTarget()); auto glTextureTarget = MG_Util::ConvertTextureTargetToGLEnum(textureObject->GetTarget());
backendTextureObject->Bind(glTextureTarget); backendTextureObject->Bind(glTextureTarget);
MG_External::GLES::glFramebufferTexture2D( MG_External::GLES::glFramebufferTexture2D(glFBOTarget, glBackendAttachmentType, glTextureTarget,
glFBOTarget, glBackendAttachmentType, glTextureTarget, backendTextureObject->GetBackendTextureId(),
backendTextureObject->GetBackendTextureId(), static_cast<GLint>(attachment.GetTextureLevel())); static_cast<GLint>(attachment.GetTextureLevel()));
} else if (attachment.IsRenderbuffer()) { } else if (attachment.IsRenderbuffer()) {
// TODO // TODO
} }
@@ -470,8 +468,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
GLenum backendAtt = GL_NONE; GLenum backendAtt = GL_NONE;
// Attach attachment to FBO, fast path // Attach attachment to FBO, fast path
for (SizeT i = 0; i < MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS; ++i) { for (SizeT i = 0; i < MG_State::GLState::FramebufferObject::MAX_DRAW_BUFFERS; ++i) {
if (m_compactedFrontendBuffers[i] == frontendAtt) if (m_compactedFrontendBuffers[i] == frontendAtt) backendAtt = m_backendBuffers[i];
backendAtt = m_backendBuffers[i];
} }
if (backendAtt != GL_NONE) { if (backendAtt != GL_NONE) {
MG_External::GLES::glReadBuffer(backendAtt); MG_External::GLES::glReadBuffer(backendAtt);
@@ -487,18 +484,15 @@ namespace MobileGL::MG_Backend::DirectGLES {
if (attachment.IsTexture()) { if (attachment.IsTexture()) {
const auto& textureObject = attachment.GetTexture(); const auto& textureObject = attachment.GetTexture();
const auto &backendTextureIt = const auto& backendTextureIt = TextureImpl::g_backendTextureObjects.find(textureObject);
TextureImpl::g_backendTextureObjects.find(textureObject);
if (backendTextureIt == TextureImpl::g_backendTextureObjects.end()) { if (backendTextureIt == TextureImpl::g_backendTextureObjects.end()) {
MGLOG_E("No backend texture found for FBO attachment, cannot bind texture."); MGLOG_E("No backend texture found for FBO attachment, cannot bind texture.");
return; return;
} }
const auto& backendTextureObject = backendTextureIt->second; const auto& backendTextureObject = backendTextureIt->second;
auto glTextureTarget = MG_Util::ConvertTextureTargetToGLEnum( auto glTextureTarget = MG_Util::ConvertTextureTargetToGLEnum(textureObject->GetTarget());
textureObject->GetTarget());
backendTextureObject->Bind(glTextureTarget); backendTextureObject->Bind(glTextureTarget);
MG_External::GLES::glFramebufferTexture2D( MG_External::GLES::glFramebufferTexture2D(glFBOTarget, frontendAtt, glTextureTarget,
glFBOTarget, frontendAtt, glTextureTarget,
backendTextureObject->GetBackendTextureId(), backendTextureObject->GetBackendTextureId(),
static_cast<GLint>(attachment.GetTextureLevel())); static_cast<GLint>(attachment.GetTextureLevel()));
} else if (attachment.IsRenderbuffer()) { } else if (attachment.IsRenderbuffer()) {
@@ -571,7 +565,8 @@ namespace MobileGL::MG_Backend::DirectGLES {
MGLOG_D("Attaching %zu shaders to program %u", attachedShaders.size(), m_backendProgramId); MGLOG_D("Attaching %zu shaders to program %u", attachedShaders.size(), m_backendProgramId);
for (auto& shader : attachedShaders) { for (auto& shader : attachedShaders) {
const auto& src = shader->GetShaderSource(); const auto& src = shader->GetShaderSource();
const auto& stage = MG_Util::ConvertGLEnumToString(MG_Util::ConvertShaderStageToGLEnum(shader->GetShaderStage())); const auto& stage =
MG_Util::ConvertGLEnumToString(MG_Util::ConvertShaderStageToGLEnum(shader->GetShaderStage()));
MGLOG_D("Original src @ %s: \n%s", stage.c_str(), src.c_str()); MGLOG_D("Original src @ %s: \n%s", stage.c_str(), src.c_str());
} }
auto& shaderSpirvs = stateProgramObject->GetGeneratedSpirv(); auto& shaderSpirvs = stateProgramObject->GetGeneratedSpirv();
@@ -593,7 +588,8 @@ namespace MobileGL::MG_Backend::DirectGLES {
// if (stateProgramObject->GetAttribLocationMap().empty()) // if (stateProgramObject->GetAttribLocationMap().empty())
// MGLOG_D("%s: no explicitly set vertex in location", __func__); // MGLOG_D("%s: no explicitly set vertex in location", __func__);
// for (auto& [name, loc]: stateProgramObject->GetAttribLocationMap()) { // for (auto& [name, loc]: stateProgramObject->GetAttribLocationMap()) {
// MGLOG_D("%s: got explicitly set - layout(location = %d) %s;", __func__, loc, name.c_str()); // MGLOG_D("%s: got explicitly set - layout(location = %d) %s;", __func__, loc,
// name.c_str());
// } // }
//// spvcSession.SetVertexAttribLocation(stateProgramObject->GetAttribLocationMap()); //// spvcSession.SetVertexAttribLocation(stateProgramObject->GetAttribLocationMap());
// } // }
@@ -672,7 +668,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
MG_External::GLES::glBindBuffer(GL_UNIFORM_BUFFER, 0); MG_External::GLES::glBindBuffer(GL_UNIFORM_BUFFER, 0);
m_isInitialized = true; m_isInitialized = true;
MGLOG_D("Program sync completed. Backend ID: %u", m_backendProgramId); MGLOG_D("Program sync completed. backend ID %u", m_backendProgramId);
} }
void BackendProgramObjectImpl::Use() { void BackendProgramObjectImpl::Use() {