diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-05-31 11:02:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-31 11:02:19 +0200 |
commit | 596eb783fe34cccd9e9b9c214028033137fa26ea (patch) | |
tree | 98e0fa3e8bfbda7f21454783454b0b23c7849bb0 /modules | |
parent | f7bcada709d9b79834b8984cdccace06aa5c9006 (diff) | |
parent | 0d2e02945b07073ed8c76ca118e36da825c0c1ec (diff) |
Merge pull request #49050 from reduz/implement-spirv-cache
Implement shader caching
Diffstat (limited to 'modules')
-rw-r--r-- | modules/glslang/register_types.cpp | 7 | ||||
-rw-r--r-- | modules/mono/godotsharp_dirs.cpp | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/modules/glslang/register_types.cpp b/modules/glslang/register_types.cpp index 4331daadfc..8979eabfc3 100644 --- a/modules/glslang/register_types.cpp +++ b/modules/glslang/register_types.cpp @@ -179,11 +179,18 @@ static Vector<uint8_t> _compile_shader_glsl(RenderingDevice::ShaderStage p_stage return ret; } +static String _get_cache_key_function_glsl(const RenderingDevice::Capabilities *p_capabilities) { + String version; + version = "SpirVGen=" + itos(glslang::GetSpirvGeneratorVersion()) + ", major=" + itos(p_capabilities->version_major) + ", minor=" + itos(p_capabilities->version_minor) + " , subgroup_size=" + itos(p_capabilities->subgroup_operations) + " , subgroup_ops=" + itos(p_capabilities->subgroup_operations) + " , subgroup_in_shaders=" + itos(p_capabilities->subgroup_in_shaders); + return version; +} + void preregister_glslang_types() { // initialize in case it's not initialized. This is done once per thread // and it's safe to call multiple times glslang::InitializeProcess(); RenderingDevice::shader_set_compile_function(_compile_shader_glsl); + RenderingDevice::shader_set_get_cache_key_function(_get_cache_key_function_glsl); } void register_glslang_types() { diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp index 020a40575c..68134b9b20 100644 --- a/modules/mono/godotsharp_dirs.cpp +++ b/modules/mono/godotsharp_dirs.cpp @@ -63,8 +63,8 @@ String _get_expected_build_config() { String _get_mono_user_dir() { #ifdef TOOLS_ENABLED - if (EditorSettings::get_singleton()) { - return EditorSettings::get_singleton()->get_data_dir().plus_file("mono"); + if (EditorPaths::get_singleton()) { + return EditorPaths::get_singleton()->get_data_dir().plus_file("mono"); } else { String settings_path; |