mirror of https://github.com/RPCS3/rpcs3.git
vk: Enable optimization passes for generated SPIRV
This commit is contained in:
parent
f72385b00c
commit
a0f63a31e3
|
@ -12,6 +12,7 @@
|
||||||
#include "restore_new.h"
|
#include "restore_new.h"
|
||||||
#include "SPIRV/GlslangToSpv.h"
|
#include "SPIRV/GlslangToSpv.h"
|
||||||
#include "define_new_memleakdetect.h"
|
#include "define_new_memleakdetect.h"
|
||||||
|
#include "spirv-tools/optimizer.hpp"
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#pragma warning(pop)
|
#pragma warning(pop)
|
||||||
#else
|
#else
|
||||||
|
@ -177,9 +178,16 @@ namespace vk
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
glslang::SpvOptions options;
|
glslang::SpvOptions options;
|
||||||
options.disableOptimizer = false;
|
options.disableOptimizer = true;
|
||||||
options.optimizeSize = true;
|
options.optimizeSize = true;
|
||||||
glslang::GlslangToSpv(*program.getIntermediate(lang), spv, &options);
|
glslang::GlslangToSpv(*program.getIntermediate(lang), spv, &options);
|
||||||
|
|
||||||
|
// Now we optimize
|
||||||
|
spvtools::Optimizer optimizer(SPV_ENV_VULKAN_1_0);
|
||||||
|
optimizer.RegisterPass(spvtools::CreateUnifyConstantPass()); // Remove duplicate constants
|
||||||
|
optimizer.RegisterPass(spvtools::CreateMergeReturnPass()); // Huge savings in vertex interpreter and likely normal vertex shaders
|
||||||
|
optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); // Remove dead code
|
||||||
|
optimizer.Run(spv.data(), spv.size(), &spv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue