Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: src/gpu/vk/GrVkRenderTarget.h

Issue 1718693002: Add vulkan files into skia repo. (Closed) Base URL: https://skia.googlesource.com/skia.git@merge
Patch Set: fix path Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/vk/GrVkRenderPass.cpp ('k') | src/gpu/vk/GrVkRenderTarget.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8
9 #ifndef GrVkRenderTarget_DEFINED
10 #define GrVkRenderTarget_DEFINED
11
12 #include "GrVkImage.h"
13 #include "GrRenderTarget.h"
14
15 #include "GrVkRenderPass.h"
16
17 class GrVkCommandBuffer;
18 class GrVkFramebuffer;
19 class GrVkGpu;
20 class GrVkImageView;
21 class GrVkStencilAttachment;
22
23 #ifdef SK_BUILD_FOR_WIN
24 // Windows gives bogus warnings about inheriting asTexture/asRenderTarget via do minance.
25 #pragma warning(push)
26 #pragma warning(disable: 4250)
27 #endif
28
29 class GrVkRenderTarget: public GrRenderTarget, public virtual GrVkImage {
30 public:
31 static GrVkRenderTarget* CreateNewRenderTarget(GrVkGpu*, const GrSurfaceDesc &,
32 GrGpuResource::LifeCycle,
33 const GrVkImage::ImageDesc&);
34
35 static GrVkRenderTarget* CreateWrappedRenderTarget(GrVkGpu*, const GrSurface Desc&,
36 GrGpuResource::LifeCycle,
37 const GrVkImage::Resource * resource);
38
39 ~GrVkRenderTarget() override;
40
41 const GrVkFramebuffer* framebuffer() const { return fFramebuffer; }
42 const GrVkImageView* colorAttachmentView() const { return fColorAttachmentVi ew; }
43 const GrVkImage::Resource* msaaImageResource() const { return fMSAAImageReso urce; }
44 const GrVkImageView* resolveAttachmentView() const { return fResolveAttachme ntView; }
45 const GrVkImage::Resource* stencilImageResource() const;
46 const GrVkImageView* stencilAttachmentView() const;
47
48 const GrVkRenderPass* simpleRenderPass() const { return fCachedSimpleRenderP ass; }
49
50 // override of GrRenderTarget
51 ResolveType getResolveType() const override {
52 return kCanResolve_ResolveType;
53 }
54
55 bool canAttemptStencilAttachment() const override {
56 return true;
57 }
58
59 GrBackendObject getRenderTargetHandle() const override;
60
61 // Returns the total number of attachments
62 void getAttachmentsDescriptor(GrVkRenderPass::AttachmentsDescriptor* desc,
63 GrVkRenderPass::AttachmentFlags* flags) const;
64
65 void addResources(GrVkCommandBuffer& commandBuffer) const;
66
67 protected:
68 enum Derived { kDerived };
69
70 GrVkRenderTarget(GrVkGpu* gpu,
71 const GrSurfaceDesc& desc,
72 GrGpuResource::LifeCycle,
73 const GrVkImage::Resource* imageResource,
74 const GrVkImage::Resource* msaaImageResource,
75 const GrVkImageView* colorAttachmentView,
76 const GrVkImageView* resolveAttachmentView);
77
78 GrVkRenderTarget(GrVkGpu* gpu,
79 const GrSurfaceDesc& desc,
80 GrGpuResource::LifeCycle,
81 const GrVkImage::Resource* imageResource,
82 const GrVkImage::Resource* msaaImageResource,
83 const GrVkImageView* colorAttachmentView,
84 const GrVkImageView* resolveAttachmentView,
85 Derived);
86
87 GrVkRenderTarget(GrVkGpu* gpu,
88 const GrSurfaceDesc& desc,
89 GrGpuResource::LifeCycle,
90 const GrVkImage::Resource* imageResource,
91 const GrVkImageView* colorAttachmentView);
92
93 GrVkRenderTarget(GrVkGpu* gpu,
94 const GrSurfaceDesc& desc,
95 GrGpuResource::LifeCycle,
96 const GrVkImage::Resource* imageResource,
97 const GrVkImageView* colorAttachmentView,
98 Derived);
99
100 static GrVkRenderTarget* Create(GrVkGpu*, const GrSurfaceDesc&,
101 GrGpuResource::LifeCycle,
102 const GrVkImage::Resource* imageResource);
103
104 GrVkGpu* getVkGpu() const;
105
106 void onAbandon() override;
107 void onRelease() override;
108
109 // This accounts for the texture's memory and any MSAA renderbuffer's memory .
110 size_t onGpuMemorySize() const override {
111 SkASSERT(kUnknown_GrPixelConfig != fDesc.fConfig);
112 SkASSERT(!GrPixelConfigIsCompressed(fDesc.fConfig));
113 size_t colorBytes = GrBytesPerPixel(fDesc.fConfig);
114 SkASSERT(colorBytes > 0);
115 return fColorValuesPerPixel * fDesc.fWidth * fDesc.fHeight * colorBytes;
116 }
117
118 private:
119 bool completeStencilAttachment() override;
120
121 void createFramebuffer(GrVkGpu* gpu);
122
123 void releaseInternalObjects();
124 void abandonInternalObjects();
125
126 const GrVkFramebuffer* fFramebuffer;
127 const GrVkImageView* fColorAttachmentView;
128 const GrVkImage::Resource* fMSAAImageResource;
129 const GrVkImageView* fResolveAttachmentView;
130 int fColorValuesPerPixel;
131
132 // This is a cached pointer to a simple render pass. The render target shoul d unref it
133 // once it is done with it.
134 const GrVkRenderPass* fCachedSimpleRenderPass;
135 };
136
137 #endif
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkRenderPass.cpp ('k') | src/gpu/vk/GrVkRenderTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698