diff options
Diffstat (limited to 'src/gpu/vk/GrVkTextureRenderTarget.h')
-rw-r--r-- | src/gpu/vk/GrVkTextureRenderTarget.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/gpu/vk/GrVkTextureRenderTarget.h b/src/gpu/vk/GrVkTextureRenderTarget.h new file mode 100644 index 0000000000..6e0d89968f --- /dev/null +++ b/src/gpu/vk/GrVkTextureRenderTarget.h @@ -0,0 +1,89 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef GrVkTextureRenderTarget_DEFINED +#define GrVkTextureRenderTarget_DEFINED + +#include "GrVkTexture.h" +#include "GrVkRenderTarget.h" +#include "GrVkGpu.h" + +#ifdef SK_BUILD_FOR_WIN +// Windows gives bogus warnings about inheriting asTexture/asRenderTarget via dominance. +#pragma warning(push) +#pragma warning(disable: 4250) +#endif + +class GrVkImageView; + +class GrVkTextureRenderTarget: public GrVkTexture, public GrVkRenderTarget { +public: + static GrVkTextureRenderTarget* CreateNewTextureRenderTarget(GrVkGpu*, const GrSurfaceDesc&, + GrGpuResource::LifeCycle, + const GrVkImage::ImageDesc&); + + static GrVkTextureRenderTarget* CreateWrappedTextureRenderTarget(GrVkGpu*, + const GrSurfaceDesc&, + GrGpuResource::LifeCycle, + VkFormat, + GrVkImage::Resource*); + +protected: + void onAbandon() override { + GrVkRenderTarget::onAbandon(); + GrVkTexture::onAbandon(); + } + + void onRelease() override { + GrVkRenderTarget::onRelease(); + GrVkTexture::onRelease(); + } + +private: + GrVkTextureRenderTarget(GrVkGpu* gpu, + const GrSurfaceDesc& desc, + GrGpuResource::LifeCycle lifeCycle, + const GrVkImage::Resource* imageResource, + const GrVkImageView* texView, + const GrVkImage::Resource* msaaResource, + const GrVkImageView* colorAttachmentView, + const GrVkImageView* resolveAttachmentView) + : GrSurface(gpu, lifeCycle, desc) + , GrVkImage(imageResource) + , GrVkTexture(gpu, desc, lifeCycle, imageResource, texView, GrVkTexture::kDerived) + , GrVkRenderTarget(gpu, desc, lifeCycle, imageResource, msaaResource, colorAttachmentView, + resolveAttachmentView, GrVkRenderTarget::kDerived) { + this->registerWithCache(); + } + + GrVkTextureRenderTarget(GrVkGpu* gpu, + const GrSurfaceDesc& desc, + GrGpuResource::LifeCycle lifeCycle, + const GrVkImage::Resource* imageResource, + const GrVkImageView* texView, + const GrVkImageView* colorAttachmentView) + : GrSurface(gpu, lifeCycle, desc) + , GrVkImage(imageResource) + , GrVkTexture(gpu, desc, lifeCycle, imageResource, texView, GrVkTexture::kDerived) + , GrVkRenderTarget(gpu, desc, lifeCycle, imageResource, colorAttachmentView, + GrVkRenderTarget::kDerived) { + this->registerWithCache(); + } + + static GrVkTextureRenderTarget* Create(GrVkGpu*, const GrSurfaceDesc&, + GrGpuResource::LifeCycle, + VkFormat format, + const GrVkImage::Resource* imageResource); + + // GrGLRenderTarget accounts for the texture's memory and any MSAA renderbuffer's memory. + size_t onGpuMemorySize() const override { + return GrVkRenderTarget::onGpuMemorySize(); + } +}; + +#endif |