Flutter Impeller
pipeline_cache_vk.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_PIPELINE_CACHE_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_PIPELINE_CACHE_VK_H_
7 
8 #include "flutter/fml/file.h"
11 
12 namespace impeller {
13 
15  public:
16  // The [device] is passed in directly so that it can be used in the
17  // constructor directly. The [device_holder] isn't guaranteed to be valid
18  // at the time of executing `PipelineCacheVK` because of how `ContextVK` does
19  // initialization.
20  explicit PipelineCacheVK(std::shared_ptr<const Capabilities> caps,
21  std::shared_ptr<DeviceHolderVK> device_holder,
22  fml::UniqueFD cache_directory);
23 
25 
26  bool IsValid() const;
27 
28  vk::UniquePipeline CreatePipeline(const vk::GraphicsPipelineCreateInfo& info);
29 
30  vk::UniquePipeline CreatePipeline(const vk::ComputePipelineCreateInfo& info);
31 
32  const CapabilitiesVK* GetCapabilities() const;
33 
34  void PersistCacheToDisk() const;
35 
36  private:
37  const std::shared_ptr<const Capabilities> caps_;
38  std::weak_ptr<DeviceHolderVK> device_holder_;
39  const fml::UniqueFD cache_directory_;
40  vk::UniquePipelineCache cache_;
41  bool is_valid_ = false;
42 
43  PipelineCacheVK(const PipelineCacheVK&) = delete;
44 
45  PipelineCacheVK& operator=(const PipelineCacheVK&) = delete;
46 };
47 
48 } // namespace impeller
49 
50 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_PIPELINE_CACHE_VK_H_
The Vulkan layers and extensions wrangler.
PipelineCacheVK(std::shared_ptr< const Capabilities > caps, std::shared_ptr< DeviceHolderVK > device_holder, fml::UniqueFD cache_directory)
vk::UniquePipeline CreatePipeline(const vk::GraphicsPipelineCreateInfo &info)
const CapabilitiesVK * GetCapabilities() const