8#ifndef GrVkResourceProvider_DEFINED
9#define GrVkResourceProvider_DEFINED
46 return fPipelineStateCache.
get();
50 return fPipelineStateCache;
59 VkRenderPass compatibleRenderPass,
60 VkPipelineLayout layout,
73 CompatibleRPHandle* compatibleHandle,
82 CompatibleRPHandle* compatibleHandle =
nullptr);
85 uint32_t colorAttachmentIndex);
97 CompatibleRPHandle* compatibleHandle,
133 const
skgpu::VulkanYcbcrConversionInfo& ycbcrInfo);
138 const
skgpu::VulkanYcbcrConversionInfo& ycbcrInfo);
143 VkRenderPass compatibleRenderPass,
144 bool overrideSubpassForResolveLoad);
149 VkRenderPass compatibleRenderPass,
219#if defined(GR_TEST_UTILS)
220 void resetShaderCacheForTesting()
const { fPipelineStateCache->
release(); }
226 PipelineStateCache(
GrVkGpu* gpu);
227 ~PipelineStateCache()
override;
232 VkRenderPass compatibleRenderPass,
233 bool overrideSubpassForResolveLoad);
236 VkRenderPass compatibleRenderPass,
238 return this->findOrCreatePipelineStateImpl(
desc, programInfo, compatibleRenderPass,
247 VkRenderPass compatibleRenderPass,
248 bool overrideSubpassForResolveLoad,
262 class CompatibleRenderPassSet {
278 return fRenderPasses[0];
286 void releaseResources();
290 int fLastReturnedIndex;
293 VkPipelineCache pipelineCache();
298 VkPipelineCache fPipelineCache;
300 struct MSAALoadPipeline {
330 GrVkDescriptorSetManager::Handle fUniformDSHandle;
331 GrVkDescriptorSetManager::Handle fInputDSHandle;
#define GR_DEFINE_RESOURCE_HANDLE_CLASS(name)
GrVkRenderPass::LoadFromResolve LoadFromResolve
const GrVkDescriptorSet * getUniformDescriptorSet()
VkDescriptorSetLayout getInputDSLayout() const
GrVkSamplerYcbcrConversion * findOrCreateCompatibleSamplerYcbcrConversion(const skgpu::VulkanYcbcrConversionInfo &ycbcrInfo)
VkDescriptorSetLayout getUniformDSLayout() const
const GrVkRenderPass * findCompatibleRenderPass(GrVkRenderTarget *target, CompatibleRPHandle *compatibleHandle, bool withResolve, bool withStencil, SelfDependencyFlags selfDepFlags, LoadFromResolve)
void forceSyncAllCommandBuffers()
GrVkPipelineState * findOrCreateCompatiblePipelineState(GrRenderTarget *, const GrProgramInfo &, VkRenderPass compatibleRenderPass, bool overrideSubpassForResolveLoad)
void recycleDescriptorSet(const GrVkDescriptorSet *descSet, const GrVkDescriptorSetManager::Handle &)
sk_sp< GrThreadSafePipelineBuilder > refPipelineStateCache()
GrVkRenderPass::SelfDependencyFlags SelfDependencyFlags
const GrVkDescriptorSet * getInputDescriptorSet()
sk_sp< const GrVkPipeline > makePipeline(const GrProgramInfo &, VkPipelineShaderStageCreateInfo *shaderStageInfo, int shaderStageCount, VkRenderPass compatibleRenderPass, VkPipelineLayout layout, uint32_t subpass)
GrVkSampler * findOrCreateCompatibleSampler(GrSamplerState, const skgpu::VulkanYcbcrConversionInfo &ycbcrInfo)
VkDescriptorSetLayout getSamplerDSLayout(const GrVkDescriptorSetManager::Handle &) const
void getZeroSamplerDescriptorSetHandle(GrVkDescriptorSetManager::Handle *handle)
const GrVkRenderPass * findCompatibleExternalRenderPass(VkRenderPass, uint32_t colorAttachmentIndex)
void addFinishedProcToActiveCommandBuffers(sk_sp< skgpu::RefCntedCallback > finishedCallback)
GrVkDescriptorPool * findOrCreateCompatibleDescriptorPool(VkDescriptorType type, uint32_t count)
const GrVkRenderPass * findRenderPass(GrVkRenderTarget *target, const GrVkRenderPass::LoadStoreOps &colorOps, const GrVkRenderPass::LoadStoreOps &resolveOps, const GrVkRenderPass::LoadStoreOps &stencilOps, CompatibleRPHandle *compatibleHandle, bool withResolve, bool withStencil, SelfDependencyFlags selfDepFlags, LoadFromResolve)
const GrVkDescriptorSet * getSamplerDescriptorSet(const GrVkDescriptorSetManager::Handle &)
sk_sp< const GrVkPipeline > findOrCreateMSAALoadPipeline(const GrVkRenderPass &renderPass, int numSamples, VkPipelineShaderStageCreateInfo *, VkPipelineLayout)
void releaseUnlockedBackendObjects()
void getSamplerDescriptorSetHandle(VkDescriptorType type, const GrVkUniformHandler &, GrVkDescriptorSetManager::Handle *handle)
GrVkCommandPool * findOrCreateCommandPool()
void storePipelineCacheData()
GrVkResourceProvider(GrVkGpu *gpu)
void checkCommandBuffers()
GrThreadSafePipelineBuilder * pipelineStateCache()
uint32_t Hash32(const void *data, size_t bytes, uint32_t seed)