Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
skgpu::graphite::VulkanSamplerYcbcrConversion Class Reference

#include <VulkanSamplerYcbcrConversion.h>

Inheritance diagram for skgpu::graphite::VulkanSamplerYcbcrConversion:
skgpu::graphite::Resource

Public Member Functions

VkSamplerYcbcrConversion ycbcrConversion () const
 
const char * getResourceType () const override
 
- Public Member Functions inherited from skgpu::graphite::Resource
 Resource (const Resource &)=delete
 
 Resource (Resource &&)=delete
 
Resourceoperator= (const Resource &)=delete
 
Resourceoperator= (Resource &&)=delete
 
void ref () const
 
void unref () const
 
void refCommandBuffer () const
 
void unrefCommandBuffer () const
 
Ownership ownership () const
 
skgpu::Budgeted budgeted () const
 
size_t gpuMemorySize () const
 
UniqueID uniqueID () const
 
std::string getLabel () const
 
void setLabel (std::string_view label)
 
bool wasDestroyed () const
 
const GraphiteResourceKeykey () const
 
void setKey (const GraphiteResourceKey &key)
 
void dumpMemoryStatistics (SkTraceMemoryDump *traceMemoryDump) const
 
virtual void prepareForReturnToCache (const std::function< void()> &takeRef)
 

Static Public Member Functions

static sk_sp< VulkanSamplerYcbcrConversionMake (const VulkanSharedContext *, const VulkanYcbcrConversionInfo &)
 
static GraphiteResourceKey MakeYcbcrConversionKey (const VulkanSharedContext *, const VulkanYcbcrConversionInfo &)
 

Private Member Functions

void freeGpuData () override
 

Additional Inherited Members

- Protected Member Functions inherited from skgpu::graphite::Resource
 Resource (const SharedContext *, Ownership, skgpu::Budgeted, size_t gpuMemorySize, std::string_view label, bool commandBufferRefsAsUsageRefs=false)
 
virtual ~Resource ()
 
const SharedContextsharedContext () const
 
virtual void invokeReleaseProc ()
 
virtual void onDumpMemoryStatistics (SkTraceMemoryDump *traceMemoryDump, const char *dumpName) const
 
void setDeleteASAP ()
 

Detailed Description

Definition at line 26 of file VulkanSamplerYcbcrConversion.h.

Member Function Documentation

◆ freeGpuData()

void skgpu::graphite::VulkanSamplerYcbcrConversion::freeGpuData ( )
overrideprivatevirtual

Implements skgpu::graphite::Resource.

Definition at line 94 of file VulkanSamplerYcbcrConversion.cpp.

94 {
95 auto sharedContext = static_cast<const VulkanSharedContext*>(this->sharedContext());
96 SkASSERT(fYcbcrConversion != VK_NULL_HANDLE);
97 VULKAN_CALL(sharedContext->interface(),
98 DestroySamplerYcbcrConversion(sharedContext->device(), fYcbcrConversion, nullptr));
99}
#define SkASSERT(cond)
Definition SkAssert.h:116
#define VULKAN_CALL(IFACE, X)
const SharedContext * sharedContext() const
Definition Resource.h:187
#define VK_NULL_HANDLE
Definition vulkan_core.h:46

◆ getResourceType()

const char * skgpu::graphite::VulkanSamplerYcbcrConversion::getResourceType ( ) const
inlineoverridevirtual

Implements skgpu::graphite::Resource.

Definition at line 35 of file VulkanSamplerYcbcrConversion.h.

35{ return "Vulkan Sampler YCbCr Conversion"; }

◆ Make()

sk_sp< VulkanSamplerYcbcrConversion > skgpu::graphite::VulkanSamplerYcbcrConversion::Make ( const VulkanSharedContext context,
const VulkanYcbcrConversionInfo conversionInfo 
)
static

Definition at line 17 of file VulkanSamplerYcbcrConversion.cpp.

19 {
20 if (!context->vulkanCaps().supportsYcbcrConversion()) {
21 return nullptr;
22 }
23
25 skgpu::SetupSamplerYcbcrConversionInfo(&ycbcrCreateInfo, conversionInfo);
26
27#ifdef SK_BUILD_FOR_ANDROID
28 VkExternalFormatANDROID externalFormat;
29 if (conversionInfo.fExternalFormat) {
30 // Format must not be specified for external images.
31 SkASSERT(conversionInfo.fFormat == VK_FORMAT_UNDEFINED);
33 externalFormat.pNext = nullptr;
34 externalFormat.externalFormat = conversionInfo.fExternalFormat;
35 SkASSERT(ycbcrCreateInfo.pNext == nullptr);
36 ycbcrCreateInfo.pNext = &externalFormat;
37 }
38#else
39 // External images are supported only on Android.
40 SkASSERT(!conversionInfo.fExternalFormat);
41#endif
42
43 if (!conversionInfo.fExternalFormat) {
44 SkASSERT(conversionInfo.fFormat != VK_FORMAT_UNDEFINED);
45 }
46
47 VkSamplerYcbcrConversion conversion;
49 VULKAN_CALL_RESULT(context,
50 result,
51 CreateSamplerYcbcrConversion(
52 context->device(), &ycbcrCreateInfo, nullptr, &conversion));
53 if (result != VK_SUCCESS) {
54 return nullptr;
55 }
57 new VulkanSamplerYcbcrConversion(context, conversion));
58}
#define VULKAN_CALL_RESULT(SHARED_CONTEXT, RESULT, X)
GAsyncResult * result
void SetupSamplerYcbcrConversionInfo(VkSamplerYcbcrConversionCreateInfo *outInfo, const VulkanYcbcrConversionInfo &conversionInfo)
VkResult
@ VK_SUCCESS
@ VK_FORMAT_UNDEFINED
@ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID

◆ MakeYcbcrConversionKey()

GraphiteResourceKey skgpu::graphite::VulkanSamplerYcbcrConversion::MakeYcbcrConversionKey ( const VulkanSharedContext context,
const VulkanYcbcrConversionInfo info 
)
static

Definition at line 60 of file VulkanSamplerYcbcrConversion.cpp.

61 {
63
64 bool useExternalFormat = info.fFormat == VK_FORMAT_UNDEFINED;
65 // 2 uint32s needed for the external format or 1 for a known VkFormat. 1 uint32 can store all
66 // other differentiating ycbcr information.
67 static const int num32DataCnt = useExternalFormat ? 3 : 2;
68 GraphiteResourceKey key;
69 GraphiteResourceKey::Builder builder(&key, kType, num32DataCnt, Shareable::kYes);
70
71 int i = 0;
72 if (useExternalFormat) {
73 builder[i++] = (uint32_t)(info.fExternalFormat << 32);
74 builder[i++] = (uint32_t)info.fExternalFormat;
75 } else {
76 builder[i++] = info.fFormat;
77 }
78 builder[i++] = info.nonFormatInfoAsUInt32();
79 SkASSERT(i == num32DataCnt);
80
81 builder.finish();
82 return key;
83}
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
Definition DM.cpp:213
const GraphiteResourceKey & key() const
Definition Resource.h:153
uint32_t ResourceType

◆ ycbcrConversion()

VkSamplerYcbcrConversion skgpu::graphite::VulkanSamplerYcbcrConversion::ycbcrConversion ( ) const
inline

Definition at line 33 of file VulkanSamplerYcbcrConversion.h.

33{ return fYcbcrConversion; }

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