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

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

Issue 2256843002: Don't add the resolve attachment to vulkan render passes. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: nit Created 4 years, 3 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/GrVkResourceProvider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "GrVkRenderTarget.h" 8 #include "GrVkRenderTarget.h"
9 9
10 #include "GrRenderTargetPriv.h" 10 #include "GrRenderTargetPriv.h"
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 232
233 // Vulkan requires us to create a compatible renderpass before we can create our framebuffer, 233 // Vulkan requires us to create a compatible renderpass before we can create our framebuffer,
234 // so we use this to get a (cached) basic renderpass, only for creation. 234 // so we use this to get a (cached) basic renderpass, only for creation.
235 fCachedSimpleRenderPass = 235 fCachedSimpleRenderPass =
236 gpu->resourceProvider().findCompatibleRenderPass(*this, &fCompatibleRPHa ndle); 236 gpu->resourceProvider().findCompatibleRenderPass(*this, &fCompatibleRPHa ndle);
237 237
238 // Stencil attachment view is stored in the base RT stencil attachment 238 // Stencil attachment view is stored in the base RT stencil attachment
239 const GrVkImageView* stencilView = this->stencilAttachmentView(); 239 const GrVkImageView* stencilView = this->stencilAttachmentView();
240 fFramebuffer = GrVkFramebuffer::Create(gpu, this->width(), this->height(), 240 fFramebuffer = GrVkFramebuffer::Create(gpu, this->width(), this->height(),
241 fCachedSimpleRenderPass, fColorAttach mentView, 241 fCachedSimpleRenderPass, fColorAttach mentView,
242 fResolveAttachmentView, stencilView); 242 stencilView);
243 SkASSERT(fFramebuffer); 243 SkASSERT(fFramebuffer);
244 } 244 }
245 245
246 void GrVkRenderTarget::getAttachmentsDescriptor( 246 void GrVkRenderTarget::getAttachmentsDescriptor(
247 GrVkRenderPass::AttachmentsDescriptor * desc, 247 GrVkRenderPass::AttachmentsDescriptor * desc,
248 GrVkRenderPass::AttachmentFlags* atta chmentFlags) const { 248 GrVkRenderPass::AttachmentFlags* atta chmentFlags) const {
249 int colorSamples = this->numColorSamples(); 249 int colorSamples = this->numColorSamples();
250 VkFormat colorFormat; 250 VkFormat colorFormat;
251 GrPixelConfigToVkFormat(this->config(), &colorFormat); 251 GrPixelConfigToVkFormat(this->config(), &colorFormat);
252 desc->fColor.fFormat = colorFormat; 252 desc->fColor.fFormat = colorFormat;
253 desc->fColor.fSamples = colorSamples ? colorSamples : 1; 253 desc->fColor.fSamples = colorSamples ? colorSamples : 1;
254 *attachmentFlags = GrVkRenderPass::kColor_AttachmentFlag; 254 *attachmentFlags = GrVkRenderPass::kColor_AttachmentFlag;
255 uint32_t attachmentCount = 1; 255 uint32_t attachmentCount = 1;
256 if (colorSamples > 0) {
257 desc->fResolve.fFormat = colorFormat;
258 desc->fResolve.fSamples = 1;
259 *attachmentFlags |= GrVkRenderPass::kResolve_AttachmentFlag;
260 ++attachmentCount;
261 }
262 256
263 const GrStencilAttachment* stencil = this->renderTargetPriv().getStencilAtta chment(); 257 const GrStencilAttachment* stencil = this->renderTargetPriv().getStencilAtta chment();
264 if (stencil) { 258 if (stencil) {
265 const GrVkStencilAttachment* vkStencil = static_cast<const GrVkStencilAt tachment*>(stencil); 259 const GrVkStencilAttachment* vkStencil = static_cast<const GrVkStencilAt tachment*>(stencil);
266 desc->fStencil.fFormat = vkStencil->vkFormat(); 260 desc->fStencil.fFormat = vkStencil->vkFormat();
267 desc->fStencil.fSamples = vkStencil->numSamples() ? vkStencil->numSample s() : 1; 261 desc->fStencil.fSamples = vkStencil->numSamples() ? vkStencil->numSample s() : 1;
268 // Currently in vulkan stencil and color attachments must all have same number of samples 262 // Currently in vulkan stencil and color attachments must all have same number of samples
269 SkASSERT(desc->fColor.fSamples == desc->fStencil.fSamples); 263 SkASSERT(desc->fColor.fSamples == desc->fStencil.fSamples);
270 *attachmentFlags |= GrVkRenderPass::kStencil_AttachmentFlag; 264 *attachmentFlags |= GrVkRenderPass::kStencil_AttachmentFlag;
271 ++attachmentCount; 265 ++attachmentCount;
272 } 266 }
273 desc->fAttachmentCount = attachmentCount; 267 desc->fAttachmentCount = attachmentCount;
274 } 268 }
275 269
276 GrVkRenderTarget::~GrVkRenderTarget() { 270 GrVkRenderTarget::~GrVkRenderTarget() {
277 // either release or abandon should have been called by the owner of this ob ject. 271 // either release or abandon should have been called by the owner of this ob ject.
278 SkASSERT(!fMSAAImage); 272 SkASSERT(!fMSAAImage);
279 SkASSERT(!fResolveAttachmentView); 273 SkASSERT(!fResolveAttachmentView);
280 SkASSERT(!fColorAttachmentView); 274 SkASSERT(!fColorAttachmentView);
281 SkASSERT(!fFramebuffer); 275 SkASSERT(!fFramebuffer);
282 SkASSERT(!fCachedSimpleRenderPass); 276 SkASSERT(!fCachedSimpleRenderPass);
283 } 277 }
284 278
285 void GrVkRenderTarget::addResources(GrVkCommandBuffer& commandBuffer) const { 279 void GrVkRenderTarget::addResources(GrVkCommandBuffer& commandBuffer) const {
286 commandBuffer.addResource(this->framebuffer()); 280 commandBuffer.addResource(this->framebuffer());
287 commandBuffer.addResource(this->resource());
288 commandBuffer.addResource(this->colorAttachmentView()); 281 commandBuffer.addResource(this->colorAttachmentView());
289 if (this->msaaImageResource()) { 282 commandBuffer.addResource(this->msaaImageResource() ? this->msaaImageResourc e()
290 commandBuffer.addResource(this->msaaImageResource()); 283 : this->resource());
291 commandBuffer.addResource(this->resolveAttachmentView());
292 }
293 if (this->stencilImageResource()) { 284 if (this->stencilImageResource()) {
294 commandBuffer.addResource(this->stencilImageResource()); 285 commandBuffer.addResource(this->stencilImageResource());
295 commandBuffer.addResource(this->stencilAttachmentView()); 286 commandBuffer.addResource(this->stencilAttachmentView());
296 } 287 }
297 } 288 }
298 289
299 void GrVkRenderTarget::releaseInternalObjects() { 290 void GrVkRenderTarget::releaseInternalObjects() {
300 GrVkGpu* gpu = this->getVkGpu(); 291 GrVkGpu* gpu = this->getVkGpu();
301 292
302 if (fMSAAImage) { 293 if (fMSAAImage) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 } 373 }
383 374
384 return nullptr; 375 return nullptr;
385 } 376 }
386 377
387 378
388 GrVkGpu* GrVkRenderTarget::getVkGpu() const { 379 GrVkGpu* GrVkRenderTarget::getVkGpu() const {
389 SkASSERT(!this->wasDestroyed()); 380 SkASSERT(!this->wasDestroyed());
390 return static_cast<GrVkGpu*>(this->getGpu()); 381 return static_cast<GrVkGpu*>(this->getGpu());
391 } 382 }
OLDNEW
« no previous file with comments | « src/gpu/vk/GrVkRenderPass.cpp ('k') | src/gpu/vk/GrVkResourceProvider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698