diff options
author | 2017-03-06 16:17:12 -0500 | |
---|---|---|
committer | 2017-03-07 15:11:24 +0000 | |
commit | 467921e5e6479fe9cebba125657d8e33d89004ae (patch) | |
tree | bffd056e5d9ad99a50c1876d658f4b31d6721d15 /src/gpu/vk/GrVkCaps.cpp | |
parent | 894d5611e54cbf62a03ff9ffb48a2302dda9ab86 (diff) |
Move GrDrawOp pipeline/clip processing to GrRenderTargetContext
This is currently done in GrOpList. However, it can trigger resource creation, which in turn can trigger a flush. In the future flushing may destroy the op list.
Change-Id: I21cb1e10060bf31c95431c0511fcfff637cd6498
Reviewed-on: https://skia-review.googlesource.com/9304
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/vk/GrVkCaps.cpp')
-rw-r--r-- | src/gpu/vk/GrVkCaps.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp index fd454ad544..16a91c1a1f 100644 --- a/src/gpu/vk/GrVkCaps.cpp +++ b/src/gpu/vk/GrVkCaps.cpp @@ -6,11 +6,11 @@ */ #include "GrVkCaps.h" - +#include "GrRenderTarget.h" #include "GrShaderCaps.h" #include "GrVkUtil.h" -#include "vk/GrVkInterface.h" #include "vk/GrVkBackendContext.h" +#include "vk/GrVkInterface.h" GrVkCaps::GrVkCaps(const GrContextOptions& contextOptions, const GrVkInterface* vkInterface, VkPhysicalDevice physDev, uint32_t featureFlags, uint32_t extensionFlags) @@ -52,6 +52,22 @@ GrVkCaps::GrVkCaps(const GrContextOptions& contextOptions, const GrVkInterface* this->init(contextOptions, vkInterface, physDev, featureFlags, extensionFlags); } +bool GrVkCaps::initDescForDstCopy(const GrRenderTarget* src, GrSurfaceDesc* desc) const { + // We can always succeed here with either a CopyImage (none msaa src) or ResolveImage (msaa). + // For CopyImage we can make a simple texture, for ResolveImage we require the dst to be a + // render target as well. + desc->fOrigin = src->origin(); + desc->fConfig = src->config(); + if (src->numColorSamples() > 1 || (src->asTexture() && this->supportsCopiesAsDraws())) { + desc->fFlags = kRenderTarget_GrSurfaceFlag; + } else { + // Just going to use CopyImage here + desc->fFlags = kNone_GrSurfaceFlags; + } + + return true; +} + void GrVkCaps::init(const GrContextOptions& contextOptions, const GrVkInterface* vkInterface, VkPhysicalDevice physDev, uint32_t featureFlags, uint32_t extensionFlags) { |