37class VulkanMemoryAllocator;
38class VulkanMutableTextureState;
39struct VulkanInterface;
71 VkDevice
device()
const {
return fDevice; }
72 VkQueue
queue()
const {
return fQueue; }
79 return fPhysDevMemProps;
103#if defined(GR_TEST_UTILS)
112 void resetShaderCacheForTesting()
const override {
113 fResourceProvider.resetShaderCacheForTesting();
118 SkISize dimensions,
int numStencilSamples)
override;
159 [[nodiscard]] std::unique_ptr<GrSemaphore>
makeSemaphore(
bool isOwned)
override;
172 void addDrawable(std::unique_ptr<SkDrawable::GpuDrawHandler> drawable);
195 const SkIRect& renderPassBounds,
196 bool forSecondaryCB);
214 uint32_t instanceVersion,
215 uint32_t physicalDeviceVersion,
218 void destroyResources();
225 std::string_view label)
override;
233 std::array<float, 4>
color)
override;
244 uint32_t newQueueFamilyIndex,
251 int renderTargetSampleCnt,
255 uint32_t levelClearMask,
256 std::string_view label)
override;
263 size_t dataSize)
override;
288 size_t rowBytes)
override;
296 bool prepForTexSampling)
override;
302 size_t size)
override;
310 size_t rowBytes)
override;
353 bool submitCommandBuffer(SyncQueue sync);
355 void copySurfaceAsCopyImage(
GrSurface* dst,
379 bool uploadTexDataOptimal(
GrVkImage* tex,
384 bool uploadTexDataCompressed(
GrVkImage* tex,
394 bool createVkImageForBackendSurface(
VkFormat,
406 bool fDeviceIsLost =
false;
408 VkPhysicalDevice fPhysicalDevice;
411 uint32_t fQueueIndex;
437 std::unique_ptr<GrVkOpsRenderPass> fCachedOpsRenderPass;
442 using INHERITED =
GrGpu;
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
void * GrGpuFinishedContext
void(* GrGpuFinishedProc)(GrGpuFinishedContext finishedContext)
static SkColorType colorType(AImageDecoder *decoder, const AImageDecoderHeaderInfo *headerInfo)
const GrCaps * caps() const
std::unique_ptr< GrSemaphore > makeSemaphore(bool isOwned) override
bool onReadPixels(GrSurface *, SkIRect, GrColorType surfaceColorType, GrColorType dstColorType, void *buffer, size_t rowBytes) override
bool setBackendTextureState(const GrBackendTexture &, const skgpu::MutableTextureState &, skgpu::MutableTextureState *previousState, sk_sp< skgpu::RefCntedCallback > finishedCallback) override
uint32_t queueIndex() const
bool onSubmitToGpu(GrSyncCpu sync) override
const GrVkCaps & vkCaps() const
static std::unique_ptr< GrGpu > Make(const GrVkBackendContext &, const GrContextOptions &, GrDirectContext *)
void onResolveRenderTarget(GrRenderTarget *target, const SkIRect &resolveRect) override
void prepareSurfacesForBackendAccessAndStateUpdates(SkSpan< GrSurfaceProxy * > proxies, SkSurfaces::BackendSurfaceAccess access, const skgpu::MutableTextureState *newState) override
void insertSemaphore(GrSemaphore *semaphore) override
bool zeroBuffer(sk_sp< GrGpuBuffer >)
void addImageMemoryBarrier(const GrManagedResource *, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, bool byRegion, VkImageMemoryBarrier *barrier) const
bool onClearBackendTexture(const GrBackendTexture &, sk_sp< skgpu::RefCntedCallback > finishedCallback, std::array< float, 4 > color) override
bool loadMSAAFromResolve(GrVkCommandBuffer *commandBuffer, const GrVkRenderPass &renderPass, GrAttachment *dst, GrVkImage *src, const SkIRect &srcRect)
void addBufferMemoryBarrier(const GrManagedResource *, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, bool byRegion, VkBufferMemoryBarrier *barrier) const
const skgpu::VulkanInterface * vkInterface() const
void addDrawable(std::unique_ptr< SkDrawable::GpuDrawHandler > drawable)
void deleteBackendTexture(const GrBackendTexture &) override
void checkFinishProcs() override
bool beginRenderPass(const GrVkRenderPass *, sk_sp< const GrVkFramebuffer >, const VkClearValue *colorClear, const GrSurface *, const SkIRect &renderPassBounds, bool forSecondaryCB)
void disconnect(DisconnectType) override
sk_sp< GrTexture > onWrapRenderableBackendTexture(const GrBackendTexture &, int sampleCnt, GrWrapOwnership, GrWrapCacheable) override
const VkPhysicalDeviceMemoryProperties & physicalDeviceMemoryProperties() const
sk_sp< GrAttachment > makeStencilAttachment(const GrBackendFormat &, SkISize dimensions, int numStencilSamples) override
sk_sp< GrGpuBuffer > onCreateBuffer(size_t size, GrGpuBufferType type, GrAccessPattern) override
sk_sp< GrThreadSafePipelineBuilder > refPipelineBuilder() override
void endRenderPass(GrRenderTarget *target, GrSurfaceOrigin origin, const SkIRect &bounds)
sk_sp< GrRenderTarget > onWrapBackendRenderTarget(const GrBackendRenderTarget &) override
sk_sp< GrTexture > onWrapCompressedBackendTexture(const GrBackendTexture &, GrWrapOwnership, GrWrapCacheable) override
sk_sp< GrTexture > onWrapBackendTexture(const GrBackendTexture &, GrWrapOwnership, GrWrapCacheable, GrIOType) override
GrVkResourceProvider & resourceProvider()
void waitSemaphore(GrSemaphore *semaphore) override
GrVkCommandPool * cmdPool() const
@ kPipelineCache_PersistentCacheKeyType
@ kShader_PersistentCacheKeyType
bool onCopySurface(GrSurface *dst, const SkIRect &dstRect, GrSurface *src, const SkIRect &srcRect, GrSamplerState::Filter) override
bool onRegenerateMipMapLevels(GrTexture *tex) override
GrBackendFormat getPreferredStencilFormat(const GrBackendFormat &) override
GrThreadSafePipelineBuilder * pipelineBuilder() override
bool updateBuffer(sk_sp< GrVkBuffer > buffer, const void *src, VkDeviceSize offset, VkDeviceSize size)
const VkPhysicalDeviceProperties & physicalDeviceProperties() const
bool onTransferPixelsFrom(GrSurface *, SkIRect, GrColorType surfaceColorType, GrColorType bufferColorType, sk_sp< GrGpuBuffer >, size_t offset) override
bool isDeviceLost() const override
std::unique_ptr< GrSemaphore > wrapBackendSemaphore(const GrBackendSemaphore &, GrSemaphoreWrapType, GrWrapOwnership) override
std::unique_ptr< GrSemaphore > prepareTextureForCrossContextUsage(GrTexture *) override
bool disconnected() const
bool onWritePixels(GrSurface *, SkIRect, GrColorType surfaceColorType, GrColorType srcColorType, const GrMipLevel[], int mipLevelCount, bool prepForTexSampling) override
sk_sp< GrTexture > onCreateTexture(SkISize, const GrBackendFormat &, GrRenderable, int renderTargetSampleCnt, skgpu::Budgeted, GrProtected, int mipLevelCount, uint32_t levelClearMask, std::string_view label) override
VkPhysicalDevice physicalDevice() const
void storeVkPipelineCacheData() override
GrVkPrimaryCommandBuffer * currentCommandBuffer() const
sk_sp< GrRenderTarget > onWrapVulkanSecondaryCBAsRenderTarget(const SkImageInfo &, const GrVkDrawableInfo &) override
void finishOutstandingGpuWork() override
bool onUpdateCompressedBackendTexture(const GrBackendTexture &, sk_sp< skgpu::RefCntedCallback > finishedCallback, const void *data, size_t length) override
sk_sp< GrAttachment > makeMSAAAttachment(SkISize dimensions, const GrBackendFormat &format, int numSamples, GrProtected isProtected, GrMemoryless isMemoryless) override
void submit(GrOpsRenderPass *) override
bool protectedContext() const
GrBackendTexture onCreateCompressedBackendTexture(SkISize dimensions, const GrBackendFormat &, skgpu::Mipmapped, GrProtected) override
bool checkVkResult(VkResult)
void submitSecondaryCommandBuffer(std::unique_ptr< GrVkSecondaryCommandBuffer >)
GrStagingBufferManager * stagingBufferManager() override
void onReportSubmitHistograms() override
bool onTransferFromBufferToBuffer(sk_sp< GrGpuBuffer > src, size_t srcOffset, sk_sp< GrGpuBuffer > dst, size_t dstOffset, size_t size) override
GrBackendTexture onCreateBackendTexture(SkISize dimensions, const GrBackendFormat &, GrRenderable, skgpu::Mipmapped, GrProtected, std::string_view label) override
sk_sp< GrTexture > onCreateCompressedTexture(SkISize dimensions, const GrBackendFormat &, skgpu::Budgeted, skgpu::Mipmapped, GrProtected, const void *data, size_t dataSize) override
void takeOwnershipOfBuffer(sk_sp< GrGpuBuffer >) override
void releaseUnlockedBackendObjects() override
void(* SubmitProc)(SubmitContext submitContext)
GrOpsRenderPass * onGetOpsRenderPass(GrRenderTarget *, bool useMSAASurface, GrAttachment *stencil, GrSurfaceOrigin, const SkIRect &, const GrOpsRenderPass::LoadAndStoreInfo &, const GrOpsRenderPass::StencilLoadAndStoreInfo &, const skia_private::TArray< GrSurfaceProxy *, true > &sampledProxies, GrXferBarrierFlags renderPassXferBarriers) override
bool onTransferPixelsTo(GrTexture *, SkIRect, GrColorType textureColorType, GrColorType bufferColorType, sk_sp< GrGpuBuffer >, size_t offset, size_t rowBytes) override
bool setBackendRenderTargetState(const GrBackendRenderTarget &, const skgpu::MutableTextureState &, skgpu::MutableTextureState *previousState, sk_sp< skgpu::RefCntedCallback > finishedCallback) override
void xferBarrier(GrRenderTarget *, GrXferBarrierType) override
void addFinishedProc(GrGpuFinishedProc finishedProc, GrGpuFinishedContext finishedContext) override
skgpu::VulkanMemoryAllocator * memoryAllocator() const
void releaseUnlockedBackendObjects()
void checkCommandBuffers()
static const uint8_t buffer[]
uint32_t uint32_t * format
void * VulkanDeviceLostContext
void(* VulkanDeviceLostProc)(VulkanDeviceLostContext faultContext, const std::string &description, const std::vector< VkDeviceFaultAddressInfoEXT > &addressInfos, const std::vector< VkDeviceFaultVendorInfoEXT > &vendorInfos, const std::vector< std::byte > &vendorBinaryData)
VkFlags VkPipelineStageFlags