Flutter Engine
The Flutter Engine
Public Member Functions | Friends | List of all members
impeller::YUVConversionLibraryVK Class Reference

Due the way the Vulkan spec. treats "identically defined" conversions, creating two conversion with identical descriptors, using one with the image and the other with the sampler, is invalid use. More...

#include <yuv_conversion_library_vk.h>

Public Member Functions

 ~YUVConversionLibraryVK ()
 
 YUVConversionLibraryVK (const YUVConversionLibraryVK &)=delete
 
YUVConversionLibraryVKoperator= (const YUVConversionLibraryVK &)=delete
 
std::shared_ptr< YUVConversionVKGetConversion (const YUVConversionDescriptorVK &chain)
 Get a conversion for the given descriptor. If there is already a conversion created for an equivalent descriptor, a reference to that descriptor is returned instead. More...
 

Friends

class ContextVK
 

Detailed Description

Due the way the Vulkan spec. treats "identically defined" conversions, creating two conversion with identical descriptors, using one with the image and the other with the sampler, is invalid use.

A conversion library hashes and caches identical descriptors to de-duplicate conversions.

There can only be one conversion library (the constructor is private to force this) and it found in the context.

Definition at line 26 of file yuv_conversion_library_vk.h.

Constructor & Destructor Documentation

◆ ~YUVConversionLibraryVK()

impeller::YUVConversionLibraryVK::~YUVConversionLibraryVK ( )
default

◆ YUVConversionLibraryVK()

impeller::YUVConversionLibraryVK::YUVConversionLibraryVK ( const YUVConversionLibraryVK )
delete

Member Function Documentation

◆ GetConversion()

std::shared_ptr< YUVConversionVK > impeller::YUVConversionLibraryVK::GetConversion ( const YUVConversionDescriptorVK chain)

Get a conversion for the given descriptor. If there is already a conversion created for an equivalent descriptor, a reference to that descriptor is returned instead.

Parameters
[in]descThe descriptor.
Returns
The conversion. A previously created conversion if one was present and a new one if not. A newly created conversion is cached for subsequent accesses.

Definition at line 18 of file yuv_conversion_library_vk.cc.

19 {
20 Lock lock(conversions_mutex_);
21 auto found = conversions_.find(desc);
22 if (found != conversions_.end()) {
23 return found->second;
24 }
25 auto device_holder = device_holder_.lock();
26 if (!device_holder) {
27 VALIDATION_LOG << "Context loss during creation of YUV conversion.";
28 return nullptr;
29 }
30 return (conversions_[desc] = std::shared_ptr<YUVConversionVK>(
31 new YUVConversionVK(device_holder->GetDevice(), desc)));
32}
#define VALIDATION_LOG
Definition: validation.h:73

◆ operator=()

YUVConversionLibraryVK & impeller::YUVConversionLibraryVK::operator= ( const YUVConversionLibraryVK )
delete

Friends And Related Function Documentation

◆ ContextVK

friend class ContextVK
friend

Definition at line 49 of file yuv_conversion_library_vk.h.


The documentation for this class was generated from the following files: