| Flutter Impeller |

sampler_library_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_SAMPLER_LIBRARY_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SAMPLER_LIBRARY_VK_H_
7
8 #include "impeller/base/backend_cast.h"
9 #include "impeller/core/sampler.h"
10 #include "impeller/core/sampler_descriptor.h"
11 #include "impeller/renderer/backend/vulkan/device_holder_vk.h"
12 #include "impeller/renderer/backend/vulkan/workarounds_vk.h"
13 #include "impeller/renderer/sampler_library.h"
14
15 namespace impeller {
16
17 class SamplerLibraryVK final
18 : public SamplerLibrary,
19 public BackendCast<SamplerLibraryVK, SamplerLibrary> {
20 public:
21 // |SamplerLibrary|
22 ~SamplerLibraryVK() override;
23
24 explicit SamplerLibraryVK(const std::weak_ptr<DeviceHolderVK>& device_holder);
25
26 void ApplyWorkarounds(const WorkaroundsVK& workarounds);
27
28 private:
29 friend class ContextVK;
30
31 std::weak_ptr<DeviceHolderVK> device_holder_;
32 std::vector<std::pair<uint64_t, std::shared_ptr<const Sampler>>> samplers_;
33 bool mips_disabled_workaround_ = false;
34
35 // |SamplerLibrary|
36 raw_ptr<const Sampler> GetSampler(
37 const SamplerDescriptor& descriptor) override;
38
39 SamplerLibraryVK(const SamplerLibraryVK&) = delete;
40
41 SamplerLibraryVK& operator=(const SamplerLibraryVK&) = delete;
42 };
43
44 } // namespace impeller
45
46 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SAMPLER_LIBRARY_VK_H_
backend_cast.h
impeller::BackendCast
Definition: backend_cast.h:11
impeller::ContextVK
Definition: context_vk.h:66
impeller::SamplerLibrary
Definition: sampler_library.h:14
impeller::SamplerLibraryVK
Definition: sampler_library_vk.h:19
impeller::SamplerLibraryVK::~SamplerLibraryVK
~SamplerLibraryVK() override
impeller::SamplerLibraryVK::SamplerLibraryVK
SamplerLibraryVK(const std::weak_ptr< DeviceHolderVK > &device_holder)
Definition: sampler_library_vk.cc:12
impeller::SamplerLibraryVK::ApplyWorkarounds
void ApplyWorkarounds(const WorkaroundsVK &workarounds)
Definition: sampler_library_vk.cc:18
impeller::raw_ptr
A wrapper around a raw ptr that adds additional unopt mode only checks.
Definition: raw_ptr.h:15
device_holder_vk.h
impeller
Definition: allocation.cc:12
sampler.h
sampler_descriptor.h
sampler_library.h
impeller::SamplerDescriptor
Definition: sampler_descriptor.h:14
impeller::WorkaroundsVK
A non-exhaustive set of driver specific workarounds.
Definition: workarounds_vk.h:13
workarounds_vk.h