Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Classes | Public Member Functions | Static Public Attributes | Friends | List of all members
skgpu::graphite::VulkanResourceProvider Class Referencefinal

#include <VulkanResourceProvider.h>

Inheritance diagram for skgpu::graphite::VulkanResourceProvider:
skgpu::graphite::ResourceProvider

Public Member Functions

 VulkanResourceProvider (SharedContext *sharedContext, SingleOwner *, uint32_t recorderID, size_t resourceBudget, sk_sp< Buffer > intrinsicConstantUniformBuffer, sk_sp< Buffer > loadMSAAVertexBuffer)
 
 ~VulkanResourceProvider () override
 
sk_sp< BufferrefIntrinsicConstantBuffer () const
 
const BufferloadMSAAVertexBuffer () const
 
sk_sp< VulkanYcbcrConversionfindOrCreateCompatibleYcbcrConversion (const VulkanYcbcrConversionInfo &ycbcrInfo) const
 
- Public Member Functions inherited from skgpu::graphite::ResourceProvider
virtual ~ResourceProvider ()
 
sk_sp< GraphicsPipelinefindOrCreateGraphicsPipeline (const RuntimeEffectDictionary *, const GraphicsPipelineDesc &, const RenderPassDesc &)
 
sk_sp< ComputePipelinefindOrCreateComputePipeline (const ComputePipelineDesc &)
 
sk_sp< TexturefindOrCreateScratchTexture (SkISize, const TextureInfo &, std::string_view label, skgpu::Budgeted)
 
sk_sp< TexturecreateWrappedTexture (const BackendTexture &, std::string_view label)
 
sk_sp< TexturefindOrCreateDepthStencilAttachment (SkISize dimensions, const TextureInfo &)
 
sk_sp< TexturefindOrCreateDiscardableMSAAAttachment (SkISize dimensions, const TextureInfo &)
 
sk_sp< BufferfindOrCreateBuffer (size_t size, BufferType type, AccessPattern, std::string_view label)
 
sk_sp< SamplerfindOrCreateCompatibleSampler (const SamplerDesc &)
 
BackendTexture createBackendTexture (SkISize dimensions, const TextureInfo &)
 
void deleteBackendTexture (const BackendTexture &)
 
ProxyCacheproxyCache ()
 
size_t getResourceCacheLimit () const
 
size_t getResourceCacheCurrentBudgetedBytes () const
 
void dumpMemoryStatistics (SkTraceMemoryDump *traceMemoryDump) const
 
void freeGpuResources ()
 
void purgeResourcesNotUsedSince (StdSteadyClock::time_point purgeTime)
 

Static Public Attributes

static constexpr size_t kIntrinsicConstantSize = sizeof(float) * 4
 
static constexpr size_t kLoadMSAAVertexBufferSize = sizeof(float) * 8
 

Friends

class VulkanCommandBuffer
 

Additional Inherited Members

- Protected Member Functions inherited from skgpu::graphite::ResourceProvider
 ResourceProvider (SharedContext *sharedContext, SingleOwner *singleOwner, uint32_t recorderID, size_t resourceBudget)
 
- Protected Attributes inherited from skgpu::graphite::ResourceProvider
SharedContextfSharedContext
 
sk_sp< ResourceCachefResourceCache
 

Detailed Description

Definition at line 34 of file VulkanResourceProvider.h.

Constructor & Destructor Documentation

◆ VulkanResourceProvider()

skgpu::graphite::VulkanResourceProvider::VulkanResourceProvider ( SharedContext sharedContext,
SingleOwner singleOwner,
uint32_t  recorderID,
size_t  resourceBudget,
sk_sp< Buffer intrinsicConstantUniformBuffer,
sk_sp< Buffer loadMSAAVertexBuffer 
)

Definition at line 44 of file VulkanResourceProvider.cpp.

50 : ResourceProvider(sharedContext, singleOwner, recorderID, resourceBudget)
51 , fIntrinsicUniformBuffer(std::move(intrinsicConstantUniformBuffer))
52 , fLoadMSAAVertexBuffer(std::move(loadMSAAVertexBuffer))
53 , fUniformBufferDescSetCache(kMaxNumberOfCachedBufferDescSets) {}
ResourceProvider(SharedContext *sharedContext, SingleOwner *singleOwner, uint32_t recorderID, size_t resourceBudget)
constexpr int kMaxNumberOfCachedBufferDescSets

◆ ~VulkanResourceProvider()

skgpu::graphite::VulkanResourceProvider::~VulkanResourceProvider ( )
override

Definition at line 55 of file VulkanResourceProvider.cpp.

55 {
56 if (fPipelineCache != VK_NULL_HANDLE) {
57 VULKAN_CALL(this->vulkanSharedContext()->interface(),
58 DestroyPipelineCache(this->vulkanSharedContext()->device(),
59 fPipelineCache,
60 nullptr));
61 }
62 if (fMSAALoadVertShaderModule != VK_NULL_HANDLE) {
63 VULKAN_CALL(this->vulkanSharedContext()->interface(),
64 DestroyShaderModule(this->vulkanSharedContext()->device(),
65 fMSAALoadVertShaderModule,
66 nullptr));
67 }
68 if (fMSAALoadFragShaderModule != VK_NULL_HANDLE) {
69 VULKAN_CALL(this->vulkanSharedContext()->interface(),
70 DestroyShaderModule(this->vulkanSharedContext()->device(),
71 fMSAALoadFragShaderModule,
72 nullptr));
73 }
74 if (fMSAALoadPipelineLayout != VK_NULL_HANDLE) {
75 VULKAN_CALL(this->vulkanSharedContext()->interface(),
76 DestroyPipelineLayout(this->vulkanSharedContext()->device(),
77 fMSAALoadPipelineLayout,
78 nullptr));
79 }
80}
#define VULKAN_CALL(IFACE, X)
VkDevice device
Definition: main.cc:53
#define VK_NULL_HANDLE
Definition: vulkan_core.h:46

Member Function Documentation

◆ findOrCreateCompatibleYcbcrConversion()

sk_sp< VulkanYcbcrConversion > skgpu::graphite::VulkanResourceProvider::findOrCreateCompatibleYcbcrConversion ( const VulkanYcbcrConversionInfo ycbcrInfo) const

Definition at line 511 of file VulkanResourceProvider.cpp.

512 {
513 if (!ycbcrInfo.isValid()) {
514 return nullptr;
515 }
516 GraphiteResourceKey ycbcrConversionKey =
517 VulkanYcbcrConversion::MakeYcbcrConversionKey(this->vulkanSharedContext(), ycbcrInfo);
518
519 if (Resource* resource = fResourceCache->findAndRefResource(ycbcrConversionKey,
521 return sk_sp<VulkanYcbcrConversion>(static_cast<VulkanYcbcrConversion*>(resource));
522 }
523
524 auto ycbcrConversion = VulkanYcbcrConversion::Make(this->vulkanSharedContext(), ycbcrInfo);
525 if (!ycbcrConversion) {
526 return nullptr;
527 }
528
529 ycbcrConversion->setKey(ycbcrConversionKey);
530 fResourceCache->insertResource(ycbcrConversion.get());
531
532 return ycbcrConversion;
533}
static SkString resource(SkPDFResourceType type, int index)
sk_sp< ResourceCache > fResourceCache
static sk_sp< VulkanYcbcrConversion > Make(const VulkanSharedContext *, const VulkanYcbcrConversionInfo &)
static GraphiteResourceKey MakeYcbcrConversionKey(const VulkanSharedContext *, const VulkanYcbcrConversionInfo &)

◆ loadMSAAVertexBuffer()

const Buffer * skgpu::graphite::VulkanResourceProvider::loadMSAAVertexBuffer ( ) const

Definition at line 109 of file VulkanResourceProvider.cpp.

109 {
110 return fLoadMSAAVertexBuffer.get();
111}

◆ refIntrinsicConstantBuffer()

sk_sp< Buffer > skgpu::graphite::VulkanResourceProvider::refIntrinsicConstantBuffer ( ) const

Definition at line 105 of file VulkanResourceProvider.cpp.

105 {
106 return fIntrinsicUniformBuffer;
107}

Friends And Related Function Documentation

◆ VulkanCommandBuffer

friend class VulkanCommandBuffer
friend

Definition at line 105 of file VulkanResourceProvider.h.

Member Data Documentation

◆ kIntrinsicConstantSize

constexpr size_t skgpu::graphite::VulkanResourceProvider::kIntrinsicConstantSize = sizeof(float) * 4
staticconstexpr

Definition at line 36 of file VulkanResourceProvider.h.

◆ kLoadMSAAVertexBufferSize

constexpr size_t skgpu::graphite::VulkanResourceProvider::kLoadMSAAVertexBufferSize = sizeof(float) * 8
staticconstexpr

Definition at line 37 of file VulkanResourceProvider.h.


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