| Index: src/gpu/vk/GrVkTexture.cpp
|
| diff --git a/src/gpu/vk/GrVkTexture.cpp b/src/gpu/vk/GrVkTexture.cpp
|
| index 8dcc3684747ef35151fab6bc88f973c47661f9ca..cdbc84f960fdc5f4d932a0c010256142de9387a3 100644
|
| --- a/src/gpu/vk/GrVkTexture.cpp
|
| +++ b/src/gpu/vk/GrVkTexture.cpp
|
| @@ -16,35 +16,47 @@
|
|
|
| // Because this class is virtually derived from GrSurface we must explicitly call its constructor.
|
| GrVkTexture::GrVkTexture(GrVkGpu* gpu,
|
| + SkBudgeted budgeted,
|
| const GrSurfaceDesc& desc,
|
| - GrGpuResource::LifeCycle lifeCycle,
|
| const GrVkImage::Resource* imageResource,
|
| const GrVkImageView* view)
|
| - : GrSurface(gpu, lifeCycle, desc)
|
| + : GrSurface(gpu, desc)
|
| , GrVkImage(imageResource)
|
| - , INHERITED(gpu, lifeCycle, desc, kSampler2D_GrSLType,
|
| + , INHERITED(gpu, desc, kSampler2D_GrSLType,
|
| false) // false because we don't upload MIP data in Vk yet
|
| , fTextureView(view) {
|
| - this->registerWithCache();
|
| + this->registerWithCache(budgeted);
|
| +}
|
| +
|
| +GrVkTexture::GrVkTexture(GrVkGpu* gpu,
|
| + Wrapped,
|
| + const GrSurfaceDesc& desc,
|
| + const GrVkImage::Resource* imageResource,
|
| + const GrVkImageView* view)
|
| + : GrSurface(gpu, desc)
|
| + , GrVkImage(imageResource)
|
| + , INHERITED(gpu, desc, kSampler2D_GrSLType,
|
| + false) // false because we don't upload MIP data in Vk yet
|
| + , fTextureView(view) {
|
| + this->registerWithCacheWrapped();
|
| }
|
|
|
| // Because this class is virtually derived from GrSurface we must explicitly call its constructor.
|
| GrVkTexture::GrVkTexture(GrVkGpu* gpu,
|
| const GrSurfaceDesc& desc,
|
| - GrGpuResource::LifeCycle lifeCycle,
|
| const GrVkImage::Resource* imageResource,
|
| - const GrVkImageView* view,
|
| - Derived)
|
| - : GrSurface(gpu, lifeCycle, desc)
|
| + const GrVkImageView* view)
|
| + : GrSurface(gpu, desc)
|
| , GrVkImage(imageResource)
|
| - , INHERITED(gpu, lifeCycle, desc, kSampler2D_GrSLType,
|
| + , INHERITED(gpu, desc, kSampler2D_GrSLType,
|
| false) // false because we don't upload MIP data in Vk yet
|
| , fTextureView(view) {}
|
|
|
|
|
| +template<typename ResourceType>
|
| GrVkTexture* GrVkTexture::Create(GrVkGpu* gpu,
|
| + ResourceType type,
|
| const GrSurfaceDesc& desc,
|
| - GrGpuResource::LifeCycle lifeCycle,
|
| VkFormat format,
|
| const GrVkImage::Resource* imageResource) {
|
| VkImage image = imageResource->fImage;
|
| @@ -54,11 +66,11 @@ GrVkTexture* GrVkTexture::Create(GrVkGpu* gpu,
|
| return nullptr;
|
| }
|
|
|
| - return new GrVkTexture(gpu, desc, lifeCycle, imageResource, imageView);
|
| + return new GrVkTexture(gpu, type, desc, imageResource, imageView);
|
| }
|
|
|
| -GrVkTexture* GrVkTexture::CreateNewTexture(GrVkGpu* gpu, const GrSurfaceDesc& desc,
|
| - GrGpuResource::LifeCycle lifeCycle,
|
| +GrVkTexture* GrVkTexture::CreateNewTexture(GrVkGpu* gpu, SkBudgeted budgeted,
|
| + const GrSurfaceDesc& desc,
|
| const GrVkImage::ImageDesc& imageDesc) {
|
| SkASSERT(imageDesc.fUsageFlags & VK_IMAGE_USAGE_SAMPLED_BIT);
|
|
|
| @@ -67,15 +79,16 @@ GrVkTexture* GrVkTexture::CreateNewTexture(GrVkGpu* gpu, const GrSurfaceDesc& de
|
| return nullptr;
|
| }
|
|
|
| - GrVkTexture* texture = Create(gpu, desc, lifeCycle, imageDesc.fFormat, imageResource);
|
| + GrVkTexture* texture = Create(gpu, budgeted, desc, imageDesc.fFormat, imageResource);
|
| // Create() will increment the refCount of the image resource if it succeeds
|
| imageResource->unref(gpu);
|
|
|
| return texture;
|
| }
|
|
|
| -GrVkTexture* GrVkTexture::CreateWrappedTexture(GrVkGpu* gpu, const GrSurfaceDesc& desc,
|
| - GrGpuResource::LifeCycle lifeCycle,
|
| +GrVkTexture* GrVkTexture::CreateWrappedTexture(GrVkGpu* gpu,
|
| + const GrSurfaceDesc& desc,
|
| + GrWrapOwnership ownership,
|
| VkFormat format,
|
| const GrVkTextureInfo* info) {
|
| SkASSERT(info);
|
| @@ -86,7 +99,7 @@ GrVkTexture* GrVkTexture::CreateWrappedTexture(GrVkGpu* gpu, const GrSurfaceDesc
|
| ? Resource::kLinearTiling_Flag : Resource::kNo_Flags;
|
|
|
| const GrVkImage::Resource* imageResource;
|
| - if (kBorrowed_LifeCycle == lifeCycle) {
|
| + if (kBorrow_GrWrapOwnership == ownership) {
|
| imageResource = new GrVkImage::BorrowedResource(info->fImage,
|
| info->fAlloc,
|
| flags,
|
| @@ -98,7 +111,7 @@ GrVkTexture* GrVkTexture::CreateWrappedTexture(GrVkGpu* gpu, const GrSurfaceDesc
|
| return nullptr;
|
| }
|
|
|
| - GrVkTexture* texture = Create(gpu, desc, lifeCycle, format, imageResource);
|
| + GrVkTexture* texture = Create(gpu, kWrapped, desc, format, imageResource);
|
| if (texture) {
|
| texture->fCurrentLayout = info->fImageLayout;
|
| }
|
| @@ -120,11 +133,7 @@ void GrVkTexture::onRelease() {
|
| fTextureView = nullptr;
|
| }
|
|
|
| - if (this->shouldFreeResources()) {
|
| - this->releaseImage(this->getVkGpu());
|
| - } else {
|
| - this->abandonImage();
|
| - }
|
| + this->releaseImage(this->getVkGpu());
|
|
|
| INHERITED::onRelease();
|
| }
|
|
|