fix(SPIR-V): Re-adjust Setting Enums

This commit is contained in:
Collecting
2026-02-14 17:56:41 -05:00
parent 48f5163431
commit 475b4fc401
4 changed files with 9 additions and 27 deletions

View File

@@ -657,12 +657,11 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QWidget* parent) {
PAIR(ConfirmStop, Ask_Never, tr("Never ask")), PAIR(ConfirmStop, Ask_Never, tr("Never ask")),
}}); }});
translations->insert( translations->insert({Settings::EnumMetadata<Settings::SpirvShaderOptimization>::Index(),
{Settings::EnumMetadata<Settings::Values::SpirvShaderOptimization>::Index(), {
{ PAIR(SpirvShaderOptimization, Auto, tr("Auto")),
PAIR(Values::SpirvShaderOptimization, Auto, tr("Auto")), PAIR(SpirvShaderOptimization, Off, tr("Off")),
PAIR(Values::SpirvShaderOptimization, Off, tr("Off")), }});
}});
#undef PAIR #undef PAIR
#undef CTX_PAIR #undef CTX_PAIR

View File

@@ -601,10 +601,6 @@ struct Values {
Category::RendererDebug}; Category::RendererDebug};
Setting<bool> disable_buffer_reorder{linkage, false, "disable_buffer_reorder", Setting<bool> disable_buffer_reorder{linkage, false, "disable_buffer_reorder",
Category::RendererDebug}; Category::RendererDebug};
enum class SpirvShaderOptimization : u32 {
Off,
Auto,
};
SwitchableSetting<SpirvShaderOptimization> optimize_spirv_output{ SwitchableSetting<SpirvShaderOptimization> optimize_spirv_output{
linkage, SpirvShaderOptimization::Auto, "optimize_spirv_output", linkage, SpirvShaderOptimization::Auto, "optimize_spirv_output",
@@ -848,18 +844,4 @@ void RestoreGlobalState(bool is_powered_on);
bool IsConfiguringGlobal(); bool IsConfiguringGlobal();
void SetConfiguringGlobal(bool is_global); void SetConfiguringGlobal(bool is_global);
template <>
struct EnumMetadata<Values::SpirvShaderOptimization> {
static constexpr u32 Index() {
return 45;
}
static constexpr std::array<std::pair<const char*, Values::SpirvShaderOptimization>, 2>
Canonicalizations() {
return {{
{"off", Values::SpirvShaderOptimization::Off},
{"auto", Values::SpirvShaderOptimization::Auto},
}};
}
};
} // namespace Settings } // namespace Settings

View File

@@ -901,6 +901,7 @@ inline u32 EnumMetadata<AndroidAstcMode>::Index() {
return 28; return 28;
} }
ENUM(SpirvShaderOptimization, Off, Auto);
ENUM(SpirvOptimizeMode, Never, Always, BestEffort); ENUM(SpirvOptimizeMode, Never, Always, BestEffort);
template <typename Type> template <typename Type>

View File

@@ -751,8 +751,8 @@ std::unique_ptr<GraphicsPipeline> PipelineCache::CreateGraphicsPipeline(
const auto runtime_info{MakeRuntimeInfo(programs, key, program, previous_stage)}; const auto runtime_info{MakeRuntimeInfo(programs, key, program, previous_stage)};
ConvertLegacyToGeneric(program, runtime_info); ConvertLegacyToGeneric(program, runtime_info);
bool optimize = Settings::values.optimize_spirv_output.GetValue() == const bool optimize = Settings::values.optimize_spirv_output.GetValue() ==
Settings::Values::SpirvShaderOptimization::Auto; Settings::SpirvShaderOptimization::Auto;
std::vector<u32> code = EmitSPIRV(profile, runtime_info, program, binding, optimize); std::vector<u32> code = EmitSPIRV(profile, runtime_info, program, binding, optimize);
// Reserve space to reduce allocations during shader compilation // Reserve space to reduce allocations during shader compilation
code.reserve(std::max<size_t>(code.size(), 16 * 1024 / sizeof(u32))); code.reserve(std::max<size_t>(code.size(), 16 * 1024 / sizeof(u32)));
@@ -858,7 +858,7 @@ std::unique_ptr<ComputePipeline> PipelineCache::CreateComputePipeline(
auto program{TranslateProgram(pools.inst, pools.block, env, cfg, host_info)}; auto program{TranslateProgram(pools.inst, pools.block, env, cfg, host_info)};
bool optimize = Settings::values.optimize_spirv_output.GetValue() == bool optimize = Settings::values.optimize_spirv_output.GetValue() ==
Settings::Values::SpirvShaderOptimization::Auto; Settings::SpirvShaderOptimization::Auto;
std::vector<u32> code = EmitSPIRV(profile, program, optimize); std::vector<u32> code = EmitSPIRV(profile, program, optimize);
// Reserve space to reduce allocations during shader compilation // Reserve space to reduce allocations during shader compilation
code.reserve(std::max<size_t>(code.size(), 16 * 1024 / sizeof(u32))); code.reserve(std::max<size_t>(code.size(), 16 * 1024 / sizeof(u32)));