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

Unified Diff: src/gpu/vk/GrVkRenderPass.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, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/vk/GrVkRenderPass.h ('k') | src/gpu/vk/GrVkRenderTarget.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/vk/GrVkRenderPass.cpp
diff --git a/src/gpu/vk/GrVkRenderPass.cpp b/src/gpu/vk/GrVkRenderPass.cpp
index ba325ef5a699ab505402db6b456bd088031ac36b..ee2d3d9f0e9415d77e7a617c3e9cc3024600dc2c 100644
--- a/src/gpu/vk/GrVkRenderPass.cpp
+++ b/src/gpu/vk/GrVkRenderPass.cpp
@@ -46,12 +46,11 @@ void GrVkRenderPass::initSimple(const GrVkGpu* gpu, const GrVkRenderTarget& targ
static const GrVkRenderPass::LoadStoreOps kBasicLoadStoreOps(VK_ATTACHMENT_LOAD_OP_LOAD,
VK_ATTACHMENT_STORE_OP_STORE);
- this->init(gpu, target, kBasicLoadStoreOps, kBasicLoadStoreOps, kBasicLoadStoreOps);
+ this->init(gpu, target, kBasicLoadStoreOps, kBasicLoadStoreOps);
}
void GrVkRenderPass::init(const GrVkGpu* gpu,
const LoadStoreOps& colorOp,
- const LoadStoreOps& resolveOp,
const LoadStoreOps& stencilOp) {
uint32_t numAttachments = fAttachmentsDescriptor.fAttachmentCount;
// Attachment descriptions to be set on the render pass
@@ -62,11 +61,10 @@ void GrVkRenderPass::init(const GrVkGpu* gpu,
// Refs to attachments on the render pass (as described by teh VkAttachmentDescription above),
// that are used by the subpass.
VkAttachmentReference colorRef;
- VkAttachmentReference resolveRef;
VkAttachmentReference stencilRef;
uint32_t currentAttachment = 0;
- // Go through each of the attachment types (color, resolve, stencil) and set the necessary
+ // Go through each of the attachment types (color, stencil) and set the necessary
// on the various Vk structs.
VkSubpassDescription subpassDesc;
memset(&subpassDesc, 0, sizeof(VkSubpassDescription));
@@ -74,6 +72,8 @@ void GrVkRenderPass::init(const GrVkGpu* gpu,
subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
subpassDesc.inputAttachmentCount = 0;
subpassDesc.pInputAttachments = nullptr;
+ subpassDesc.pResolveAttachments = nullptr;
+
if (fAttachmentFlags & kColor_AttachmentFlag) {
// set up color attachment
fAttachmentsDescriptor.fColor.fLoadStoreOps = colorOp;
@@ -93,21 +93,6 @@ void GrVkRenderPass::init(const GrVkGpu* gpu,
}
subpassDesc.pColorAttachments = &colorRef;
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- // set up resolve attachment
- fAttachmentsDescriptor.fResolve.fLoadStoreOps = resolveOp;
- setup_vk_attachment_description(&attachments[currentAttachment],
- fAttachmentsDescriptor.fResolve,
- VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
- // setup subpass use of attachment
- resolveRef.attachment = currentAttachment++;
- // I'm really not sure what the layout should be for the resolve textures.
- resolveRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
- subpassDesc.pResolveAttachments = &resolveRef;
- } else {
- subpassDesc.pResolveAttachments = nullptr;
- }
-
if (fAttachmentFlags & kStencil_AttachmentFlag) {
// set up stencil attachment
fAttachmentsDescriptor.fStencil.fLoadStoreOps = stencilOp;
@@ -155,22 +140,20 @@ void GrVkRenderPass::init(const GrVkGpu* gpu,
void GrVkRenderPass::init(const GrVkGpu* gpu,
const GrVkRenderPass& compatibleRenderPass,
const LoadStoreOps& colorOp,
- const LoadStoreOps& resolveOp,
const LoadStoreOps& stencilOp) {
fAttachmentFlags = compatibleRenderPass.fAttachmentFlags;
fAttachmentsDescriptor = compatibleRenderPass.fAttachmentsDescriptor;
- this->init(gpu, colorOp, resolveOp, stencilOp);
+ this->init(gpu, colorOp, stencilOp);
}
void GrVkRenderPass::init(const GrVkGpu* gpu,
const GrVkRenderTarget& target,
const LoadStoreOps& colorOp,
- const LoadStoreOps& resolveOp,
const LoadStoreOps& stencilOp) {
// Get attachment information from render target. This includes which attachments the render
- // target has (color, resolve, stencil) and the attachments format and sample count.
+ // target has (color, stencil) and the attachments format and sample count.
target.getAttachmentsDescriptor(&fAttachmentsDescriptor, &fAttachmentFlags);
- this->init(gpu, colorOp, resolveOp, stencilOp);
+ this->init(gpu, colorOp, stencilOp);
}
void GrVkRenderPass::freeGPUData(const GrVkGpu* gpu) const {
@@ -187,18 +170,6 @@ bool GrVkRenderPass::colorAttachmentIndex(uint32_t* index) const {
return false;
}
-// Works under the assumption that resolve attachment will always be after the color attachment.
-bool GrVkRenderPass::resolveAttachmentIndex(uint32_t* index) const {
- *index = 0;
- if (fAttachmentFlags & kColor_AttachmentFlag) {
- ++(*index);
- }
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- return true;
- }
- return false;
-}
-
// Works under the assumption that stencil attachment will always be after the color and resolve
// attachment.
bool GrVkRenderPass::stencilAttachmentIndex(uint32_t* index) const {
@@ -206,9 +177,6 @@ bool GrVkRenderPass::stencilAttachmentIndex(uint32_t* index) const {
if (fAttachmentFlags & kColor_AttachmentFlag) {
++(*index);
}
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- ++(*index);
- }
if (fAttachmentFlags & kStencil_AttachmentFlag) {
return true;
}
@@ -249,11 +217,6 @@ bool GrVkRenderPass::isCompatible(const AttachmentsDescriptor& desc,
return false;
}
}
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- if (!fAttachmentsDescriptor.fResolve.isCompatible(desc.fResolve)) {
- return false;
- }
- }
if (fAttachmentFlags & kStencil_AttachmentFlag) {
if (!fAttachmentsDescriptor.fStencil.isCompatible(desc.fStencil)) {
return false;
@@ -276,18 +239,12 @@ bool GrVkRenderPass::isCompatible(const GrVkRenderPass& renderPass) const {
}
bool GrVkRenderPass::equalLoadStoreOps(const LoadStoreOps& colorOps,
- const LoadStoreOps& resolveOps,
const LoadStoreOps& stencilOps) const {
if (fAttachmentFlags & kColor_AttachmentFlag) {
if (fAttachmentsDescriptor.fColor.fLoadStoreOps != colorOps) {
return false;
}
}
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- if (fAttachmentsDescriptor.fResolve.fLoadStoreOps != resolveOps) {
- return false;
- }
- }
if (fAttachmentFlags & kStencil_AttachmentFlag) {
if (fAttachmentsDescriptor.fStencil.fLoadStoreOps != stencilOps) {
return false;
@@ -302,10 +259,6 @@ void GrVkRenderPass::genKey(GrProcessorKeyBuilder* b) const {
b->add32(fAttachmentsDescriptor.fColor.fFormat);
b->add32(fAttachmentsDescriptor.fColor.fSamples);
}
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- b->add32(fAttachmentsDescriptor.fResolve.fFormat);
- b->add32(fAttachmentsDescriptor.fResolve.fSamples);
- }
if (fAttachmentFlags & kStencil_AttachmentFlag) {
b->add32(fAttachmentsDescriptor.fStencil.fFormat);
b->add32(fAttachmentsDescriptor.fStencil.fSamples);
« no previous file with comments | « src/gpu/vk/GrVkRenderPass.h ('k') | src/gpu/vk/GrVkRenderTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698