Vulkan: Don't warn about pipelines cache if missing

It used to warn when opening a new project because no cache pre-exists,
which isn't particularly helpful.

Also include the rendering method in the cache filename, as it differs
between Forward+ and Mobile for a same GPU.
This commit is contained in:
Rémi Verschelde 2024-03-05 14:11:32 +01:00
parent f9ebd84b5a
commit e74f4ea115
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 6 additions and 4 deletions

View File

@ -3828,7 +3828,9 @@ bool RenderingDeviceDriverVulkan::pipeline_cache_create(const Vector<uint8_t> &p
// Parse.
{
if (p_data.size() <= (int)sizeof(PipelineCacheHeader)) {
if (p_data.is_empty()) {
// No pre-existing cache, just create it.
} else if (p_data.size() <= (int)sizeof(PipelineCacheHeader)) {
WARN_PRINT("Invalid/corrupt pipelines cache.");
} else {
const PipelineCacheHeader *loaded_header = reinterpret_cast<const PipelineCacheHeader *>(p_data.ptr());

View File

@ -5091,12 +5091,12 @@ Error RenderingDevice::initialize(RenderingContextDriver *p_context, DisplayServ
if (main_instance) {
// Only the instance that is not a local device and is also the singleton is allowed to manage a pipeline cache.
pipeline_cache_file_path = "user://vulkan/pipelines";
pipeline_cache_file_path += "." + device.name.validate_filename().replace(" ", "_").to_lower();
pipeline_cache_file_path = vformat("user://vulkan/pipelines.%s.%s",
OS::get_singleton()->get_current_rendering_method(),
device.name.validate_filename().replace(" ", "_").to_lower());
if (Engine::get_singleton()->is_editor_hint()) {
pipeline_cache_file_path += ".editor";
}
pipeline_cache_file_path += ".cache";
Vector<uint8_t> cache_data = _load_pipeline_cache();