summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/vulkan/rendering_device_driver_vulkan.cpp4
-rw-r--r--servers/rendering/rendering_device.cpp6
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/vulkan/rendering_device_driver_vulkan.cpp b/drivers/vulkan/rendering_device_driver_vulkan.cpp
index 21cf54b4be..d8404ac8e4 100644
--- a/drivers/vulkan/rendering_device_driver_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_driver_vulkan.cpp
@@ -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());
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index e1709fdb00..dc48ddbd56 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -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();