diff --git a/engine/src/flutter/impeller/renderer/backend/vulkan/pipeline_vk.cc b/engine/src/flutter/impeller/renderer/backend/vulkan/pipeline_vk.cc index d02956cd2b..72ba5b99be 100644 --- a/engine/src/flutter/impeller/renderer/backend/vulkan/pipeline_vk.cc +++ b/engine/src/flutter/impeller/renderer/backend/vulkan/pipeline_vk.cc @@ -582,8 +582,10 @@ std::shared_ptr PipelineVK::CreateVariantForImmutableSamplers( if (!device_holder) { return nullptr; } + // Note: immutable sampler variant of a pipeline is the negation of the + // existing pipeline key. This keeps the descriptors separate. return (immutable_sampler_variants_[cache_key] = - Create(desc_, device_holder, library_, pipeline_key_, + Create(desc_, device_holder, library_, -1 * pipeline_key_, immutable_sampler)); } diff --git a/engine/src/flutter/impeller/renderer/pipeline.h b/engine/src/flutter/impeller/renderer/pipeline.h index 0bb5c7c475..2dec9431bc 100644 --- a/engine/src/flutter/impeller/renderer/pipeline.h +++ b/engine/src/flutter/impeller/renderer/pipeline.h @@ -18,7 +18,7 @@ namespace impeller { -using PipelineKey = uint64_t; +using PipelineKey = int64_t; class PipelineLibrary; template