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

Unified Diff: src/gpu/vk/GrVkRenderPass.cpp

Issue 1723503002: Revert of Add vulkan files into skia repo. (Closed) Base URL: https://skia.googlesource.com/skia.git@merge
Patch Set: 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 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.h » ('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
deleted file mode 100644
index 9c4787b865cb3bce8ef6e271e37bfd5d9931357d..0000000000000000000000000000000000000000
--- a/src/gpu/vk/GrVkRenderPass.cpp
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-* Copyright 2015 Google Inc.
-*
-* Use of this source code is governed by a BSD-style license that can be
-* found in the LICENSE file.
-*/
-
-#include "GrVkRenderPass.h"
-
-#include "GrVkFramebuffer.h"
-#include "GrVkGpu.h"
-#include "GrVkRenderTarget.h"
-#include "GrVkUtil.h"
-
-void setup_simple_vk_attachment_description(VkAttachmentDescription* attachment,
- VkFormat format,
- uint32_t samples,
- VkImageLayout layout) {
- attachment->flags = 0;
- attachment->format = format;
- SkAssertResult(GrSampleCountToVkSampleCount(samples, &attachment->samples));
- attachment->loadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
- attachment->storeOp = VK_ATTACHMENT_STORE_OP_STORE;
- attachment->stencilLoadOp = VK_ATTACHMENT_LOAD_OP_LOAD;
- attachment->storeOp = VK_ATTACHMENT_STORE_OP_STORE;
- attachment->initialLayout = layout;
- attachment->finalLayout = layout;
-}
-
-void GrVkRenderPass::initSimple(const GrVkGpu* gpu, const GrVkRenderTarget& target) {
- // 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.getAttachmentsDescriptor(&fAttachmentsDescriptor, &fAttachmentFlags);
-
- uint32_t numAttachments = fAttachmentsDescriptor.fAttachmentCount;
- // Attachment descriptions to be set on the render pass
- SkTArray<VkAttachmentDescription> attachments(numAttachments);
- attachments.reset(numAttachments);
- memset(attachments.begin(), 0, numAttachments*sizeof(VkAttachmentDescription));
-
- // 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
- // on the various Vk structs.
- VkSubpassDescription subpassDesc;
- memset(&subpassDesc, 0, sizeof(VkSubpassDescription));
- subpassDesc.flags = 0;
- subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
- subpassDesc.inputAttachmentCount = 0;
- subpassDesc.pInputAttachments = nullptr;
- if (fAttachmentFlags & kColor_AttachmentFlag) {
- // set up color attachment
- setup_simple_vk_attachment_description(&attachments[currentAttachment],
- fAttachmentsDescriptor.fColor.fFormat,
- fAttachmentsDescriptor.fColor.fSamples,
- VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
- // setup subpass use of attachment
- colorRef.attachment = currentAttachment++;
- colorRef.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
- subpassDesc.colorAttachmentCount = 1;
- } else {
- // I don't think there should ever be a time where we don't have a color attachment
- SkASSERT(false);
- colorRef.attachment = VK_ATTACHMENT_UNUSED;
- colorRef.layout = VK_IMAGE_LAYOUT_UNDEFINED;
- subpassDesc.colorAttachmentCount = 0;
- }
- subpassDesc.pColorAttachments = &colorRef;
-
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- // set up resolve attachment
- setup_simple_vk_attachment_description(&attachments[currentAttachment],
- fAttachmentsDescriptor.fResolve.fFormat,
- fAttachmentsDescriptor.fResolve.fSamples,
- 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
- setup_simple_vk_attachment_description(&attachments[currentAttachment],
- fAttachmentsDescriptor.fStencil.fFormat,
- fAttachmentsDescriptor.fStencil.fSamples,
- VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
- // setup subpass use of attachment
- stencilRef.attachment = currentAttachment++;
- stencilRef.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
- } else {
- stencilRef.attachment = VK_ATTACHMENT_UNUSED;
- stencilRef.layout = VK_IMAGE_LAYOUT_UNDEFINED;
- }
- subpassDesc.pDepthStencilAttachment = &stencilRef;
-
- subpassDesc.preserveAttachmentCount = 0;
- subpassDesc.pPreserveAttachments = nullptr;
-
- SkASSERT(numAttachments == currentAttachment);
-
- // Create the VkRenderPass compatible with the attachment descriptions above
- VkRenderPassCreateInfo createInfo;
- memset(&createInfo, 0, sizeof(VkRenderPassCreateInfo));
- createInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO;
- createInfo.pNext = nullptr;
- createInfo.flags = 0;
- createInfo.attachmentCount = numAttachments;
- createInfo.pAttachments = attachments.begin();
- createInfo.subpassCount = 1;
- createInfo.pSubpasses = &subpassDesc;
- createInfo.dependencyCount = 0;
- createInfo.pDependencies = nullptr;
-
- GR_VK_CALL_ERRCHECK(gpu->vkInterface(), CreateRenderPass(gpu->device(),
- &createInfo,
- nullptr,
- &fRenderPass));
-}
-
-void GrVkRenderPass::freeGPUData(const GrVkGpu* gpu) const {
- GR_VK_CALL(gpu->vkInterface(), DestroyRenderPass(gpu->device(), fRenderPass, nullptr));
-}
-
-// Works under the assumption that color attachment will always be the first attachment in our
-// attachment array if it exists.
-bool GrVkRenderPass::colorAttachmentIndex(uint32_t* index) const {
- *index = 0;
- if (fAttachmentFlags & kColor_AttachmentFlag) {
- return true;
- }
- 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 {
- *index = 0;
- if (fAttachmentFlags & kColor_AttachmentFlag) {
- ++(*index);
- }
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- ++(*index);
- }
- if (fAttachmentFlags & kStencil_AttachmentFlag) {
- return true;
- }
- return false;
-}
-
-void GrVkRenderPass::getBeginInfo(const GrVkRenderTarget& target,
- VkRenderPassBeginInfo* beginInfo,
- VkSubpassContents* contents) const {
- SkASSERT(this->isCompatible(target));
-
- VkRect2D renderArea;
- renderArea.offset = { 0, 0 };
- renderArea.extent = { (uint32_t)target.width(), (uint32_t)target.height() };
-
- memset(beginInfo, 0, sizeof(VkRenderPassBeginInfo));
- beginInfo->sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
- beginInfo->pNext = nullptr;
- beginInfo->renderPass = fRenderPass;
- beginInfo->framebuffer = target.framebuffer()->framebuffer();
- beginInfo->renderArea = renderArea;
- beginInfo->clearValueCount = 0;
- beginInfo->pClearValues = nullptr;
-
- // Currently just assuming no secondary cmd buffers. This value will need to be update if we
- // have them.
- *contents = VK_SUBPASS_CONTENTS_INLINE;
-}
-
-bool GrVkRenderPass::isCompatible(const GrVkRenderTarget& target) const {
- AttachmentsDescriptor desc;
- AttachmentFlags flags;
- target.getAttachmentsDescriptor(&desc, &flags);
-
- if (flags != fAttachmentFlags) {
- return false;
- }
-
- if (fAttachmentFlags & kColor_AttachmentFlag) {
- if (fAttachmentsDescriptor.fColor != desc.fColor) {
- return false;
- }
- }
- if (fAttachmentFlags & kResolve_AttachmentFlag) {
- if (fAttachmentsDescriptor.fResolve != desc.fResolve) {
- return false;
- }
- }
- if (fAttachmentFlags & kStencil_AttachmentFlag) {
- if (fAttachmentsDescriptor.fStencil != desc.fStencil) {
- return false;
- }
- }
-
- return true;
-}
« no previous file with comments | « src/gpu/vk/GrVkRenderPass.h ('k') | src/gpu/vk/GrVkRenderTarget.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698