Use GrBackendObjectOwnership instead of GrVkImage::Wrapped
This is more in line with what GL does and will make things cleaner for
the metal backend as well.
Bug: skia:
Change-Id: I0ba0c588f813ad78051251c1cb9e8f92fd917ecc
Reviewed-on: https://skia-review.googlesource.com/35940
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/vk/GrVkImage.h b/src/gpu/vk/GrVkImage.h
index 57ab18a..b71ed49 100644
--- a/src/gpu/vk/GrVkImage.h
+++ b/src/gpu/vk/GrVkImage.h
@@ -23,16 +23,10 @@
class Resource;
public:
- enum Wrapped {
- kNot_Wrapped,
- kAdopted_Wrapped,
- kBorrowed_Wrapped,
- };
-
- GrVkImage(const GrVkImageInfo& info, Wrapped wrapped)
+ GrVkImage(const GrVkImageInfo& info, GrBackendObjectOwnership ownership)
: fInfo(info)
- , fIsBorrowed(kBorrowed_Wrapped == wrapped) {
- if (kBorrowed_Wrapped == wrapped) {
+ , fIsBorrowed(GrBackendObjectOwnership::kBorrowed == ownership) {
+ if (fIsBorrowed) {
fResource = new BorrowedResource(info.fImage, info.fAlloc, info.fImageTiling);
} else {
fResource = new Resource(info.fImage, info.fAlloc, info.fImageTiling);
diff --git a/src/gpu/vk/GrVkRenderTarget.cpp b/src/gpu/vk/GrVkRenderTarget.cpp
index d5719fd..27cb119 100644
--- a/src/gpu/vk/GrVkRenderTarget.cpp
+++ b/src/gpu/vk/GrVkRenderTarget.cpp
@@ -28,13 +28,13 @@
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
const GrVkImageView* resolveAttachmentView,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
+ , GrVkImage(info, ownership)
// for the moment we only support 1:1 color to stencil
, GrRenderTarget(gpu, desc)
, fColorAttachmentView(colorAttachmentView)
- , fMSAAImage(new GrVkImage(msaaInfo, GrVkImage::kNot_Wrapped))
+ , fMSAAImage(new GrVkImage(msaaInfo, GrBackendObjectOwnership::kOwned))
, fResolveAttachmentView(resolveAttachmentView)
, fFramebuffer(nullptr)
, fCachedSimpleRenderPass(nullptr) {
@@ -51,13 +51,13 @@
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
const GrVkImageView* resolveAttachmentView,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
+ , GrVkImage(info, ownership)
// for the moment we only support 1:1 color to stencil
, GrRenderTarget(gpu, desc)
, fColorAttachmentView(colorAttachmentView)
- , fMSAAImage(new GrVkImage(msaaInfo, GrVkImage::kNot_Wrapped))
+ , fMSAAImage(new GrVkImage(msaaInfo, GrBackendObjectOwnership::kOwned))
, fResolveAttachmentView(resolveAttachmentView)
, fFramebuffer(nullptr)
, fCachedSimpleRenderPass(nullptr) {
@@ -72,9 +72,9 @@
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* colorAttachmentView,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
+ , GrVkImage(info, ownership)
, GrRenderTarget(gpu, desc)
, fColorAttachmentView(colorAttachmentView)
, fMSAAImage(nullptr)
@@ -92,9 +92,9 @@
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* colorAttachmentView,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
+ , GrVkImage(info, ownership)
, GrRenderTarget(gpu, desc)
, fColorAttachmentView(colorAttachmentView)
, fMSAAImage(nullptr)
@@ -110,7 +110,7 @@
SkBudgeted budgeted,
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
- GrVkImage::Wrapped wrapped) {
+ GrBackendObjectOwnership ownership) {
SkASSERT(1 == info.fLevelCount);
VkFormat pixelFormat;
GrPixelConfigToVkFormat(desc.fConfig, &pixelFormat);
@@ -167,9 +167,9 @@
GrVkRenderTarget* texRT;
if (desc.fSampleCnt) {
texRT = new GrVkRenderTarget(gpu, budgeted, desc, info, msInfo,
- colorAttachmentView, resolveAttachmentView, wrapped);
+ colorAttachmentView, resolveAttachmentView, ownership);
} else {
- texRT = new GrVkRenderTarget(gpu, budgeted, desc, info, colorAttachmentView, wrapped);
+ texRT = new GrVkRenderTarget(gpu, budgeted, desc, info, colorAttachmentView, ownership);
}
return texRT;
@@ -188,7 +188,7 @@
}
GrVkRenderTarget* rt = GrVkRenderTarget::Create(gpu, budgeted, desc, info,
- GrVkImage::kNot_Wrapped);
+ GrBackendObjectOwnership::kOwned);
if (!rt) {
GrVkImage::DestroyImageInfo(gpu, &info);
}
@@ -203,7 +203,8 @@
SkASSERT(VK_NULL_HANDLE != info->fImage);
return sk_sp<GrVkRenderTarget>(
- GrVkRenderTarget::Create(gpu, SkBudgeted::kNo, desc, *info, GrVkImage::kBorrowed_Wrapped));
+ GrVkRenderTarget::Create(gpu, SkBudgeted::kNo, desc, *info,
+ GrBackendObjectOwnership::kBorrowed));
}
bool GrVkRenderTarget::completeStencilAttachment() {
diff --git a/src/gpu/vk/GrVkRenderTarget.h b/src/gpu/vk/GrVkRenderTarget.h
index 272998e..eeb8a1a 100644
--- a/src/gpu/vk/GrVkRenderTarget.h
+++ b/src/gpu/vk/GrVkRenderTarget.h
@@ -83,13 +83,13 @@
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
const GrVkImageView* resolveAttachmentView,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
GrVkRenderTarget(GrVkGpu* gpu,
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* colorAttachmentView,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
GrVkGpu* getVkGpu() const;
@@ -119,17 +119,17 @@
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
const GrVkImageView* resolveAttachmentView,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
GrVkRenderTarget(GrVkGpu* gpu,
SkBudgeted,
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* colorAttachmentView,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
static GrVkRenderTarget* Create(GrVkGpu*, SkBudgeted, const GrSurfaceDesc&,
- const GrVkImageInfo&, GrVkImage::Wrapped wrapped);
+ const GrVkImageInfo&, GrBackendObjectOwnership);
bool completeStencilAttachment() override;
diff --git a/src/gpu/vk/GrVkStencilAttachment.cpp b/src/gpu/vk/GrVkStencilAttachment.cpp
index 8e5940d..5348885 100644
--- a/src/gpu/vk/GrVkStencilAttachment.cpp
+++ b/src/gpu/vk/GrVkStencilAttachment.cpp
@@ -19,7 +19,7 @@
const GrVkImageInfo& info,
const GrVkImageView* stencilView)
: GrStencilAttachment(gpu, desc.fWidth, desc.fHeight, format.fStencilBits, desc.fSamples)
- , GrVkImage(info, GrVkImage::kNot_Wrapped)
+ , GrVkImage(info, GrBackendObjectOwnership::kOwned)
, fFormat(format)
, fStencilView(stencilView) {
this->registerWithCache(SkBudgeted::kYes);
diff --git a/src/gpu/vk/GrVkTexture.cpp b/src/gpu/vk/GrVkTexture.cpp
index 2b1655f..f88cec5 100644
--- a/src/gpu/vk/GrVkTexture.cpp
+++ b/src/gpu/vk/GrVkTexture.cpp
@@ -32,7 +32,7 @@
const GrVkImageInfo& info,
const GrVkImageView* view)
: GrSurface(gpu, desc)
- , GrVkImage(info, GrVkImage::kNot_Wrapped)
+ , GrVkImage(info, GrBackendObjectOwnership::kOwned)
, INHERITED(gpu, desc, kTexture2DSampler_GrSLType, highest_filter_mode(desc.fConfig),
info.fLevelCount > 1)
, fTextureView(view)
@@ -45,9 +45,9 @@
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* view,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
+ , GrVkImage(info, ownership)
, INHERITED(gpu, desc, kTexture2DSampler_GrSLType, highest_filter_mode(desc.fConfig),
info.fLevelCount > 1)
, fTextureView(view)
@@ -60,9 +60,9 @@
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* view,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
+ , GrVkImage(info, ownership)
, INHERITED(gpu, desc, kTexture2DSampler_GrSLType, highest_filter_mode(desc.fConfig),
info.fLevelCount > 1)
, fTextureView(view)
@@ -92,7 +92,7 @@
sk_sp<GrVkTexture> GrVkTexture::MakeWrappedTexture(GrVkGpu* gpu,
const GrSurfaceDesc& desc,
- GrWrapOwnership ownership,
+ GrWrapOwnership wrapOwnership,
const GrVkImageInfo* info) {
SkASSERT(info);
// Wrapped textures require both image and allocation (because they can be mapped)
@@ -105,9 +105,9 @@
return nullptr;
}
- GrVkImage::Wrapped wrapped = kBorrow_GrWrapOwnership == ownership
- ? GrVkImage::kBorrowed_Wrapped : GrVkImage::kAdopted_Wrapped;
- return sk_sp<GrVkTexture>(new GrVkTexture(gpu, kWrapped, desc, *info, imageView, wrapped));
+ GrBackendObjectOwnership ownership = kBorrow_GrWrapOwnership == wrapOwnership
+ ? GrBackendObjectOwnership::kBorrowed : GrBackendObjectOwnership::kOwned;
+ return sk_sp<GrVkTexture>(new GrVkTexture(gpu, kWrapped, desc, *info, imageView, ownership));
}
GrVkTexture::~GrVkTexture() {
diff --git a/src/gpu/vk/GrVkTexture.h b/src/gpu/vk/GrVkTexture.h
index 239f6b3..40d778f 100644
--- a/src/gpu/vk/GrVkTexture.h
+++ b/src/gpu/vk/GrVkTexture.h
@@ -42,7 +42,7 @@
protected:
GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, const GrVkImageInfo&, const GrVkImageView*,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
GrVkGpu* getVkGpu() const;
@@ -54,7 +54,7 @@
GrVkTexture(GrVkGpu*, SkBudgeted, const GrSurfaceDesc&,
const GrVkImageInfo&, const GrVkImageView* imageView);
GrVkTexture(GrVkGpu*, Wrapped, const GrSurfaceDesc&,
- const GrVkImageInfo&, const GrVkImageView* imageView, GrVkImage::Wrapped wrapped);
+ const GrVkImageInfo&, const GrVkImageView* imageView, GrBackendObjectOwnership);
const GrVkImageView* fTextureView;
const GrVkImageView* fLinearTextureView;
diff --git a/src/gpu/vk/GrVkTextureRenderTarget.cpp b/src/gpu/vk/GrVkTextureRenderTarget.cpp
index 8dc5ffe..e380e73 100644
--- a/src/gpu/vk/GrVkTextureRenderTarget.cpp
+++ b/src/gpu/vk/GrVkTextureRenderTarget.cpp
@@ -26,12 +26,13 @@
const GrVkImageView* texView,
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
- const GrVkImageView* resolveAttachmentView)
+ const GrVkImageView* resolveAttachmentView,
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, GrVkImage::kNot_Wrapped)
- , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped)
+ , GrVkImage(info, ownership)
+ , GrVkTexture(gpu, desc, info, texView, ownership)
, GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView,
- resolveAttachmentView, GrVkImage::kNot_Wrapped) {
+ resolveAttachmentView, GrBackendObjectOwnership::kOwned) {
this->registerWithCache(budgeted);
}
@@ -40,11 +41,12 @@
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* texView,
- const GrVkImageView* colorAttachmentView)
+ const GrVkImageView* colorAttachmentView,
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, GrVkImage::kNot_Wrapped)
- , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped)
- , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, GrVkImage::kNot_Wrapped) {
+ , GrVkImage(info, ownership)
+ , GrVkTexture(gpu, desc, info, texView, ownership)
+ , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, GrBackendObjectOwnership::kOwned) {
this->registerWithCache(budgeted);
}
@@ -55,12 +57,12 @@
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
const GrVkImageView* resolveAttachmentView,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
- , GrVkTexture(gpu, desc, info, texView, wrapped)
+ , GrVkImage(info, ownership)
+ , GrVkTexture(gpu, desc, info, texView, ownership)
, GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView,
- resolveAttachmentView, wrapped) {
+ resolveAttachmentView, ownership) {
this->registerWithCacheWrapped();
}
@@ -69,11 +71,11 @@
const GrVkImageInfo& info,
const GrVkImageView* texView,
const GrVkImageView* colorAttachmentView,
- GrVkImage::Wrapped wrapped)
+ GrBackendObjectOwnership ownership)
: GrSurface(gpu, desc)
- , GrVkImage(info, wrapped)
- , GrVkTexture(gpu, desc, info, texView, wrapped)
- , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, wrapped) {
+ , GrVkImage(info, ownership)
+ , GrVkTexture(gpu, desc, info, texView, ownership)
+ , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, ownership) {
this->registerWithCacheWrapped();
}
@@ -82,7 +84,8 @@
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
SkBudgeted budgeted,
- GrVkImage::Wrapped wrapped) {
+ GrBackendObjectOwnership ownership,
+ bool isWrapped) {
VkImage image = info.fImage;
// Create the texture ImageView
const GrVkImageView* imageView = GrVkImageView::Create(gpu, image, info.fFormat,
@@ -149,30 +152,30 @@
sk_sp<GrVkTextureRenderTarget> texRT;
if (desc.fSampleCnt) {
- if (GrVkImage::kNot_Wrapped == wrapped) {
+ if (!isWrapped) {
texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
gpu, budgeted, desc,
info, imageView, msInfo,
colorAttachmentView,
- resolveAttachmentView));
+ resolveAttachmentView, ownership));
} else {
texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
gpu, desc,
info, imageView, msInfo,
colorAttachmentView,
- resolveAttachmentView, wrapped));
+ resolveAttachmentView, ownership));
}
} else {
- if (GrVkImage::kNot_Wrapped == wrapped) {
+ if (!isWrapped) {
texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
gpu, budgeted, desc,
info, imageView,
- colorAttachmentView));
+ colorAttachmentView, ownership));
} else {
texRT = sk_sp<GrVkTextureRenderTarget>(new GrVkTextureRenderTarget(
gpu, desc,
info, imageView,
- colorAttachmentView, wrapped));
+ colorAttachmentView, ownership));
}
}
return texRT;
@@ -191,7 +194,8 @@
return nullptr;
}
- sk_sp<GrVkTextureRenderTarget> trt = Make(gpu, desc, info, budgeted, GrVkImage::kNot_Wrapped);
+ sk_sp<GrVkTextureRenderTarget> trt = Make(gpu, desc, info, budgeted,
+ GrBackendObjectOwnership::kOwned, false);
if (!trt) {
GrVkImage::DestroyImageInfo(gpu, &info);
}
@@ -202,16 +206,16 @@
sk_sp<GrVkTextureRenderTarget>
GrVkTextureRenderTarget::MakeWrappedTextureRenderTarget(GrVkGpu* gpu,
const GrSurfaceDesc& desc,
- GrWrapOwnership ownership,
+ GrWrapOwnership wrapOwnership,
const GrVkImageInfo* info) {
SkASSERT(info);
// Wrapped textures require both image and allocation (because they can be mapped)
SkASSERT(VK_NULL_HANDLE != info->fImage && VK_NULL_HANDLE != info->fAlloc.fMemory);
- GrVkImage::Wrapped wrapped = kBorrow_GrWrapOwnership == ownership ? GrVkImage::kBorrowed_Wrapped
- : GrVkImage::kAdopted_Wrapped;
+ GrBackendObjectOwnership ownership = kBorrow_GrWrapOwnership == wrapOwnership
+ ? GrBackendObjectOwnership::kBorrowed : GrBackendObjectOwnership::kOwned;
- return Make(gpu, desc, *info, SkBudgeted::kNo, wrapped);
+ return Make(gpu, desc, *info, SkBudgeted::kNo, ownership, true);
}
bool GrVkTextureRenderTarget::updateForMipmap(GrVkGpu* gpu, const GrVkImageInfo& newInfo) {
diff --git a/src/gpu/vk/GrVkTextureRenderTarget.h b/src/gpu/vk/GrVkTextureRenderTarget.h
index 9dc7574..6ec5250 100644
--- a/src/gpu/vk/GrVkTextureRenderTarget.h
+++ b/src/gpu/vk/GrVkTextureRenderTarget.h
@@ -55,14 +55,16 @@
const GrVkImageView* texView,
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
- const GrVkImageView* resolveAttachmentView);
+ const GrVkImageView* resolveAttachmentView,
+ GrBackendObjectOwnership);
GrVkTextureRenderTarget(GrVkGpu* gpu,
SkBudgeted budgeted,
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* texView,
- const GrVkImageView* colorAttachmentView);
+ const GrVkImageView* colorAttachmentView,
+ GrBackendObjectOwnership);
GrVkTextureRenderTarget(GrVkGpu* gpu,
const GrSurfaceDesc& desc,
@@ -71,20 +73,21 @@
const GrVkImageInfo& msaaInfo,
const GrVkImageView* colorAttachmentView,
const GrVkImageView* resolveAttachmentView,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
GrVkTextureRenderTarget(GrVkGpu* gpu,
const GrSurfaceDesc& desc,
const GrVkImageInfo& info,
const GrVkImageView* texView,
const GrVkImageView* colorAttachmentView,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership);
static sk_sp<GrVkTextureRenderTarget> Make(GrVkGpu*,
const GrSurfaceDesc&,
const GrVkImageInfo&,
SkBudgeted budgeted,
- GrVkImage::Wrapped wrapped);
+ GrBackendObjectOwnership,
+ bool isWrapped);
// GrGLRenderTarget accounts for the texture's memory and any MSAA renderbuffer's memory.
size_t onGpuMemorySize() const override;