[Chore] (MG_Util/ShaderTranspiler): rename function, more log

This commit is contained in:
2026-01-30 16:44:33 +08:00
parent f69fbef4b0
commit 31b3053c56
5 changed files with 23 additions and 8 deletions
+1 -1
View File
@@ -136,7 +136,7 @@ set(SOURCE_FILES
MobileGL/MG_Util/ShaderTranspiler/SpvcSession.cpp
MobileGL/MG_Util/ShaderTranspiler/ShaderSourceProcessor.cpp
MobileGL/MG_Util/ShaderTranspiler/glslang/TMglGlslIoResolver.cpp
MobileGL/MG_Util/ShaderTranspiler/SpirvPasses/FloatEqualsZeroEliminationPass.cpp
MobileGL/MG_Util/ShaderTranspiler/SpirvPasses/EliminateFloatEqualsZeroPass.cpp
MobileGL/MG_Util/BackendLoaders/OpenGL/Loader.cpp
@@ -516,11 +516,15 @@ namespace MobileGL {
void Uniform_State(MG_State::GLState::ProgramObject& programObject, GLuint location, T* value,
SizeT byteOffsetInsideUniform = 0) {
if (!programObject.IsUniformOpaqueAtLocation(location)) {
MGLOG_D("%s: program = %d, location = %d, maxLocation = %d", __func__,
programObject.GetExternalIndex(), location, programObject.GetMaxUniformLocation());
auto size = programObject.GetUniformSizesInBytes(location);
auto offset = programObject.GetUniformOffset(location);
MOBILEGL_ASSERT(size >= ItemCount * sizeof(T),
"Uniform size mismatch, expected at least %zu bytes, got %zu bytes.",
ItemCount * sizeof(T), size);
MGLOG_D("%s: program = %d, location = %d, byteOffset = %d", __func__,
programObject.GetExternalIndex(), location, offset + byteOffsetInsideUniform);
Memcpy((char*)programObject.MapUBO() + offset + byteOffsetInsideUniform, value, ItemCount * sizeof(T));
} else {
auto* ttype = programObject.GetUniformTType(location);
@@ -8,7 +8,7 @@
#include "ShaderCompiler.h"
#include "SpirvPasses/FloatEqualsZeroEliminationPass.h"
#include "SpirvPasses/EliminateFloatEqualsZeroPass.h"
#include "spirv-tools/libspirv.h"
#include "spirv-tools/optimizer.hpp"
@@ -228,9 +228,12 @@ namespace MobileGL {
}
bool ShaderCompiler::SanitizeAndOptimizeBinary(const Vector<Uint32>& inputBinary, Vector<uint32_t>& outputBinary) {
spvtools::Optimizer optimizer(SPV_ENV_UNIVERSAL_1_5);
using namespace spvtools;
Optimizer optimizer(SPV_ENV_UNIVERSAL_1_5);
optimizer.RegisterPass(spvtools::Optimizer::PassToken(MakeUnique<FloatEqualsZeroEliminationPass>()));
optimizer
.RegisterPass(EliminateFloatEqualsZeroPass::CreateEliminateFloatEqualsZeroPass())
;
return optimizer.Run(inputBinary.data(), inputBinary.size(), &outputBinary);
}
@@ -6,7 +6,7 @@
// SPDX-License-Identifier: LGPL-3.0-only
// End of Source File Header
#include "FloatEqualsZeroEliminationPass.h"
#include "EliminateFloatEqualsZeroPass.h"
#include "spirv.hpp"
#include "source/opt/constants.h"
@@ -21,7 +21,7 @@
namespace MobileGL {
namespace MG_Util {
namespace ShaderTranspiler {
spvtools::opt::Pass::Status FloatEqualsZeroEliminationPass::Process() {
spvtools::opt::Pass::Status EliminateFloatEqualsZeroPass::Process() {
using namespace spvtools;
using namespace spvtools::opt;
bool modified = false;
@@ -156,6 +156,10 @@ namespace MobileGL {
}
return modified ? Status::SuccessWithChange : Status::SuccessWithoutChange;
}
}
spvtools::Optimizer::PassToken EliminateFloatEqualsZeroPass::CreateEliminateFloatEqualsZeroPass() {
return spvtools::Optimizer::PassToken(MakeUnique<EliminateFloatEqualsZeroPass>());
}
} // namespace ShaderTranspiler
}
}
@@ -8,19 +8,23 @@
#pragma once
#include "source/opt/pass.h"
#include "spirv-tools/optimizer.hpp"
#include <Includes.h>
namespace MobileGL {
namespace MG_Util {
namespace ShaderTranspiler {
class FloatEqualsZeroEliminationPass: public spvtools::opt::Pass {
class EliminateFloatEqualsZeroPass: public spvtools::opt::Pass {
public:
const char* name() const override { return "float-equals-zero-elimination"; }
Status Process() override;
static spvtools::Optimizer::PassToken CreateEliminateFloatEqualsZeroPass();
private:
const float K_EPSILON = 0.0001f;
};
} // namespace ShaderTranspiler
} // namespace MG_Util
} // namespace MobileGL