diff options
-rw-r--r-- | gn/gpu.gni | 1 | ||||
-rw-r--r-- | src/gpu/gl/GrGLSemaphore.cpp | 20 | ||||
-rw-r--r-- | src/gpu/gl/GrGLSemaphore.h | 11 | ||||
-rw-r--r-- | src/gpu/gl/GrGLTextureRenderTarget.cpp | 24 | ||||
-rw-r--r-- | src/gpu/gl/GrGLTextureRenderTarget.h | 17 | ||||
-rw-r--r-- | src/gpu/vk/GrVkCommandBuffer.cpp | 58 | ||||
-rw-r--r-- | src/gpu/vk/GrVkCommandBuffer.h | 55 | ||||
-rw-r--r-- | src/gpu/vk/GrVkResourceProvider.cpp | 1 | ||||
-rw-r--r-- | src/gpu/vk/GrVkTextureRenderTarget.cpp | 59 | ||||
-rw-r--r-- | src/gpu/vk/GrVkTextureRenderTarget.h | 38 |
10 files changed, 96 insertions, 188 deletions
diff --git a/gn/gpu.gni b/gn/gpu.gni index 86f76742cc..2547981f5a 100644 --- a/gn/gpu.gni +++ b/gn/gpu.gni @@ -402,7 +402,6 @@ skia_gpu_sources = [ "$_src/gpu/gl/GrGLProgramDataManager.h", "$_src/gpu/gl/GrGLRenderTarget.cpp", "$_src/gpu/gl/GrGLRenderTarget.h", - "$_src/gpu/gl/GrGLSemaphore.cpp", "$_src/gpu/gl/GrGLSemaphore.h", "$_src/gpu/gl/GrGLStencilAttachment.cpp", "$_src/gpu/gl/GrGLStencilAttachment.h", diff --git a/src/gpu/gl/GrGLSemaphore.cpp b/src/gpu/gl/GrGLSemaphore.cpp deleted file mode 100644 index c26b74e9c1..0000000000 --- a/src/gpu/gl/GrGLSemaphore.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "GrGLSemaphore.h" - -#include "GrGLGpu.h" - -GrGLSemaphore::GrGLSemaphore(const GrGLGpu* gpu, bool isOwned) - : INHERITED(gpu), fSync(0), fIsOwned(isOwned) { -} - -GrGLSemaphore::~GrGLSemaphore() { - if (fIsOwned && fGpu) { - static_cast<const GrGLGpu*>(fGpu)->deleteSync(fSync); - } -} diff --git a/src/gpu/gl/GrGLSemaphore.h b/src/gpu/gl/GrGLSemaphore.h index ba05219357..cfc3de9951 100644 --- a/src/gpu/gl/GrGLSemaphore.h +++ b/src/gpu/gl/GrGLSemaphore.h @@ -11,8 +11,7 @@ #include "GrSemaphore.h" #include "GrBackendSemaphore.h" - -class GrGLGpu; +#include "GrGLGpu.h" class GrGLSemaphore : public GrSemaphore { public: @@ -29,13 +28,17 @@ public: return sema; } - ~GrGLSemaphore() override; + ~GrGLSemaphore() override { + if (fIsOwned && fGpu) { + static_cast<const GrGLGpu*>(fGpu)->deleteSync(fSync); + } + } GrGLsync sync() const { return fSync; } void setSync(const GrGLsync& sync) { fSync = sync; } private: - GrGLSemaphore(const GrGLGpu* gpu, bool isOwned); + GrGLSemaphore(const GrGLGpu* gpu, bool isOwned) : INHERITED(gpu), fSync(0), fIsOwned(isOwned) {} void setBackendSemaphore(GrBackendSemaphore* backendSemaphore) const override { backendSemaphore->initGL(fSync); diff --git a/src/gpu/gl/GrGLTextureRenderTarget.cpp b/src/gpu/gl/GrGLTextureRenderTarget.cpp index ef401cdd06..c643cfffa5 100644 --- a/src/gpu/gl/GrGLTextureRenderTarget.cpp +++ b/src/gpu/gl/GrGLTextureRenderTarget.cpp @@ -8,33 +8,9 @@ #include "GrGLTextureRenderTarget.h" #include "GrContext.h" -#include "GrGLGpu.h" #include "GrTexturePriv.h" #include "SkTraceMemoryDump.h" -GrGLTextureRenderTarget::GrGLTextureRenderTarget(GrGLGpu* gpu, - SkBudgeted budgeted, - const GrSurfaceDesc& desc, - const GrGLTexture::IDDesc& texIDDesc, - const GrGLRenderTarget::IDDesc& rtIDDesc, - bool wasMipMapDataProvided) - : GrSurface(gpu, desc) - , GrGLTexture(gpu, desc, texIDDesc, wasMipMapDataProvided) - , GrGLRenderTarget(gpu, desc, rtIDDesc) { - this->registerWithCache(budgeted); -} - -GrGLTextureRenderTarget::GrGLTextureRenderTarget(GrGLGpu* gpu, - const GrSurfaceDesc& desc, - const GrGLTexture::IDDesc& texIDDesc, - const GrGLRenderTarget::IDDesc& rtIDDesc, - bool wasMipMapDataProvided) - : GrSurface(gpu, desc) - , GrGLTexture(gpu, desc, texIDDesc, wasMipMapDataProvided) - , GrGLRenderTarget(gpu, desc, rtIDDesc) { - this->registerWithCacheWrapped(); -} - // GrGLTextureRenderTarget must dump both of its superclasses. void GrGLTextureRenderTarget::dumpMemoryStatistics( SkTraceMemoryDump* traceMemoryDump) const { diff --git a/src/gpu/gl/GrGLTextureRenderTarget.h b/src/gpu/gl/GrGLTextureRenderTarget.h index e104e85b3f..d74239ec14 100644 --- a/src/gpu/gl/GrGLTextureRenderTarget.h +++ b/src/gpu/gl/GrGLTextureRenderTarget.h @@ -9,11 +9,10 @@ #ifndef GrGLTextureRenderTarget_DEFINED #define GrGLTextureRenderTarget_DEFINED +#include "GrGLGpu.h" #include "GrGLTexture.h" #include "GrGLRenderTarget.h" -class GrGLGpu; - #ifdef SK_BUILD_FOR_WIN // Windows gives bogus warnings about inheriting asTexture/asRenderTarget via dominance. #pragma warning(push) @@ -29,7 +28,12 @@ public: const GrSurfaceDesc& desc, const GrGLTexture::IDDesc& texIDDesc, const GrGLRenderTarget::IDDesc& rtIDDesc, - bool wasMipMapDataProvided); + bool wasMipMapDataProvided) + : GrSurface(gpu, desc) + , GrGLTexture(gpu, desc, texIDDesc, wasMipMapDataProvided) + , GrGLRenderTarget(gpu, desc, rtIDDesc) { + this->registerWithCache(budgeted); + } bool canAttemptStencilAttachment() const override; @@ -55,7 +59,12 @@ private: const GrSurfaceDesc& desc, const GrGLTexture::IDDesc& texIDDesc, const GrGLRenderTarget::IDDesc& rtIDDesc, - bool wasMipMapDataProvided); + bool wasMipMapDataProvided) + : GrSurface(gpu, desc) + , GrGLTexture(gpu, desc, texIDDesc, wasMipMapDataProvided) + , GrGLRenderTarget(gpu, desc, rtIDDesc) { + this->registerWithCacheWrapped(); + } size_t onGpuMemorySize() const override; }; diff --git a/src/gpu/vk/GrVkCommandBuffer.cpp b/src/gpu/vk/GrVkCommandBuffer.cpp index d4fe80caf9..63642d4ed0 100644 --- a/src/gpu/vk/GrVkCommandBuffer.cpp +++ b/src/gpu/vk/GrVkCommandBuffer.cpp @@ -7,19 +7,14 @@ #include "GrVkCommandBuffer.h" -#include "GrVkGpu.h" #include "GrVkFramebuffer.h" -#include "GrVkImage.h" #include "GrVkImageView.h" -#include "GrVkIndexBuffer.h" #include "GrVkPipeline.h" -#include "GrVkPipelineState.h" #include "GrVkRenderPass.h" #include "GrVkRenderTarget.h" #include "GrVkPipelineState.h" #include "GrVkTransferBuffer.h" #include "GrVkUtil.h" -#include "GrVkVertexBuffer.h" #include "SkRect.h" void GrVkCommandBuffer::invalidateState() { @@ -150,40 +145,6 @@ void GrVkCommandBuffer::pipelineBarrier(const GrVkGpu* gpu, } -void GrVkCommandBuffer::bindInputBuffer(GrVkGpu* gpu, uint32_t binding, - const GrVkVertexBuffer* vbuffer) { - VkBuffer vkBuffer = vbuffer->buffer(); - SkASSERT(VK_NULL_HANDLE != vkBuffer); - SkASSERT(binding < kMaxInputBuffers); - // TODO: once vbuffer->offset() no longer always returns 0, we will need to track the offset - // to know if we can skip binding or not. - if (vkBuffer != fBoundInputBuffers[binding]) { - VkDeviceSize offset = vbuffer->offset(); - GR_VK_CALL(gpu->vkInterface(), CmdBindVertexBuffers(fCmdBuffer, - binding, - 1, - &vkBuffer, - &offset)); - fBoundInputBuffers[binding] = vkBuffer; - addResource(vbuffer->resource()); - } -} - -void GrVkCommandBuffer::bindIndexBuffer(GrVkGpu* gpu, const GrVkIndexBuffer* ibuffer) { - VkBuffer vkBuffer = ibuffer->buffer(); - SkASSERT(VK_NULL_HANDLE != vkBuffer); - // TODO: once ibuffer->offset() no longer always returns 0, we will need to track the offset - // to know if we can skip binding or not. - if (vkBuffer != fBoundIndexBuffer) { - GR_VK_CALL(gpu->vkInterface(), CmdBindIndexBuffer(fCmdBuffer, - vkBuffer, - ibuffer->offset(), - VK_INDEX_TYPE_UINT16)); - fBoundIndexBuffer = vkBuffer; - addResource(ibuffer->resource()); - } -} - void GrVkCommandBuffer::clearAttachments(const GrVkGpu* gpu, int numAttachments, const VkClearAttachment* attachments, @@ -574,25 +535,6 @@ void GrVkPrimaryCommandBuffer::blitImage(const GrVkGpu* gpu, filter)); } -void GrVkPrimaryCommandBuffer::blitImage(const GrVkGpu* gpu, - const GrVkImage& srcImage, - const GrVkImage& dstImage, - uint32_t blitRegionCount, - const VkImageBlit* blitRegions, - VkFilter filter) { - this->blitImage(gpu, - srcImage.resource(), - srcImage.image(), - srcImage.currentLayout(), - dstImage.resource(), - dstImage.image(), - dstImage.currentLayout(), - blitRegionCount, - blitRegions, - filter); -} - - void GrVkPrimaryCommandBuffer::copyImageToBuffer(const GrVkGpu* gpu, GrVkImage* srcImage, VkImageLayout srcLayout, diff --git a/src/gpu/vk/GrVkCommandBuffer.h b/src/gpu/vk/GrVkCommandBuffer.h index e602e4d574..b387885fff 100644 --- a/src/gpu/vk/GrVkCommandBuffer.h +++ b/src/gpu/vk/GrVkCommandBuffer.h @@ -14,16 +14,11 @@ #include "GrVkUtil.h" #include "vk/GrVkDefines.h" -class GrVkBuffer; class GrVkFramebuffer; -class GrVkIndexBuffer; -class GrVkImage; class GrVkPipeline; -class GrVkPipelineState; class GrVkRenderPass; class GrVkRenderTarget; class GrVkTransferBuffer; -class GrVkVertexBuffer; class GrVkCommandBuffer : public GrVkResource { public: @@ -45,9 +40,40 @@ public: BarrierType barrierType, void* barrier) const; - void bindInputBuffer(GrVkGpu* gpu, uint32_t binding, const GrVkVertexBuffer* vbuffer); + static constexpr uint32_t kMaxInputBuffers = 2; - void bindIndexBuffer(GrVkGpu* gpu, const GrVkIndexBuffer* ibuffer); + void bindInputBuffer(GrVkGpu* gpu, uint32_t binding, const GrVkVertexBuffer* vbuffer) { + VkBuffer vkBuffer = vbuffer->buffer(); + SkASSERT(VK_NULL_HANDLE != vkBuffer); + SkASSERT(binding < kMaxInputBuffers); + // TODO: once vbuffer->offset() no longer always returns 0, we will need to track the offset + // to know if we can skip binding or not. + if (vkBuffer != fBoundInputBuffers[binding]) { + VkDeviceSize offset = vbuffer->offset(); + GR_VK_CALL(gpu->vkInterface(), CmdBindVertexBuffers(fCmdBuffer, + binding, + 1, + &vkBuffer, + &offset)); + fBoundInputBuffers[binding] = vkBuffer; + addResource(vbuffer->resource()); + } + } + + void bindIndexBuffer(GrVkGpu* gpu, const GrVkIndexBuffer* ibuffer) { + VkBuffer vkBuffer = ibuffer->buffer(); + SkASSERT(VK_NULL_HANDLE != vkBuffer); + // TODO: once ibuffer->offset() no longer always returns 0, we will need to track the offset + // to know if we can skip binding or not. + if (vkBuffer != fBoundIndexBuffer) { + GR_VK_CALL(gpu->vkInterface(), CmdBindIndexBuffer(fCmdBuffer, + vkBuffer, + ibuffer->offset(), + VK_INDEX_TYPE_UINT16)); + fBoundIndexBuffer = vkBuffer; + addResource(ibuffer->resource()); + } + } void bindPipeline(const GrVkGpu* gpu, const GrVkPipeline* pipeline); @@ -152,8 +178,6 @@ private: virtual void onReset(GrVkGpu* gpu) {} - static constexpr uint32_t kMaxInputBuffers = 2; - VkBuffer fBoundInputBuffers[kMaxInputBuffers]; VkBuffer fBoundIndexBuffer; @@ -234,7 +258,18 @@ public: const GrVkImage& dstImage, uint32_t blitRegionCount, const VkImageBlit* blitRegions, - VkFilter filter); + VkFilter filter) { + this->blitImage(gpu, + srcImage.resource(), + srcImage.image(), + srcImage.currentLayout(), + dstImage.resource(), + dstImage.image(), + dstImage.currentLayout(), + blitRegionCount, + blitRegions, + filter); + } void copyImageToBuffer(const GrVkGpu* gpu, GrVkImage* srcImage, diff --git a/src/gpu/vk/GrVkResourceProvider.cpp b/src/gpu/vk/GrVkResourceProvider.cpp index 0f4b2a9f34..9b94c08723 100644 --- a/src/gpu/vk/GrVkResourceProvider.cpp +++ b/src/gpu/vk/GrVkResourceProvider.cpp @@ -10,7 +10,6 @@ #include "GrSamplerParams.h" #include "GrVkCommandBuffer.h" #include "GrVkCopyPipeline.h" -#include "GrVkGpu.h" #include "GrVkPipeline.h" #include "GrVkRenderTarget.h" #include "GrVkSampler.h" diff --git a/src/gpu/vk/GrVkTextureRenderTarget.cpp b/src/gpu/vk/GrVkTextureRenderTarget.cpp index 8dc5ffed1e..a77722832d 100644 --- a/src/gpu/vk/GrVkTextureRenderTarget.cpp +++ b/src/gpu/vk/GrVkTextureRenderTarget.cpp @@ -19,65 +19,6 @@ #define VK_CALL(GPU, X) GR_VK_CALL(GPU->vkInterface(), X) -GrVkTextureRenderTarget::GrVkTextureRenderTarget(GrVkGpu* gpu, - SkBudgeted budgeted, - const GrSurfaceDesc& desc, - const GrVkImageInfo& info, - const GrVkImageView* texView, - const GrVkImageInfo& msaaInfo, - const GrVkImageView* colorAttachmentView, - const GrVkImageView* resolveAttachmentView) - : GrSurface(gpu, desc) - , GrVkImage(info, GrVkImage::kNot_Wrapped) - , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped) - , GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView, - resolveAttachmentView, GrVkImage::kNot_Wrapped) { - this->registerWithCache(budgeted); -} - -GrVkTextureRenderTarget::GrVkTextureRenderTarget(GrVkGpu* gpu, - SkBudgeted budgeted, - const GrSurfaceDesc& desc, - const GrVkImageInfo& info, - const GrVkImageView* texView, - const GrVkImageView* colorAttachmentView) - : GrSurface(gpu, desc) - , GrVkImage(info, GrVkImage::kNot_Wrapped) - , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped) - , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, GrVkImage::kNot_Wrapped) { - this->registerWithCache(budgeted); -} - -GrVkTextureRenderTarget::GrVkTextureRenderTarget(GrVkGpu* gpu, - const GrSurfaceDesc& desc, - const GrVkImageInfo& info, - const GrVkImageView* texView, - const GrVkImageInfo& msaaInfo, - const GrVkImageView* colorAttachmentView, - const GrVkImageView* resolveAttachmentView, - GrVkImage::Wrapped wrapped) - : GrSurface(gpu, desc) - , GrVkImage(info, wrapped) - , GrVkTexture(gpu, desc, info, texView, wrapped) - , GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView, - resolveAttachmentView, wrapped) { - this->registerWithCacheWrapped(); -} - -GrVkTextureRenderTarget::GrVkTextureRenderTarget(GrVkGpu* gpu, - const GrSurfaceDesc& desc, - const GrVkImageInfo& info, - const GrVkImageView* texView, - const GrVkImageView* colorAttachmentView, - GrVkImage::Wrapped wrapped) - : GrSurface(gpu, desc) - , GrVkImage(info, wrapped) - , GrVkTexture(gpu, desc, info, texView, wrapped) - , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, wrapped) { - this->registerWithCacheWrapped(); -} - - sk_sp<GrVkTextureRenderTarget> GrVkTextureRenderTarget::Make(GrVkGpu* gpu, const GrSurfaceDesc& desc, const GrVkImageInfo& info, diff --git a/src/gpu/vk/GrVkTextureRenderTarget.h b/src/gpu/vk/GrVkTextureRenderTarget.h index 9dc7574730..7eab1058d6 100644 --- a/src/gpu/vk/GrVkTextureRenderTarget.h +++ b/src/gpu/vk/GrVkTextureRenderTarget.h @@ -11,8 +11,7 @@ #include "GrVkTexture.h" #include "GrVkRenderTarget.h" - -class GrVkGpu; +#include "GrVkGpu.h" #ifdef SK_BUILD_FOR_WIN // Windows gives bogus warnings about inheriting asTexture/asRenderTarget via dominance. @@ -55,15 +54,27 @@ private: const GrVkImageView* texView, const GrVkImageInfo& msaaInfo, const GrVkImageView* colorAttachmentView, - const GrVkImageView* resolveAttachmentView); + const GrVkImageView* resolveAttachmentView) + : GrSurface(gpu, desc) + , GrVkImage(info, GrVkImage::kNot_Wrapped) + , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped) + , GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView, + resolveAttachmentView, GrVkImage::kNot_Wrapped) { + this->registerWithCache(budgeted); + } GrVkTextureRenderTarget(GrVkGpu* gpu, SkBudgeted budgeted, const GrSurfaceDesc& desc, const GrVkImageInfo& info, const GrVkImageView* texView, - const GrVkImageView* colorAttachmentView); - + const GrVkImageView* colorAttachmentView) + : GrSurface(gpu, desc) + , GrVkImage(info, GrVkImage::kNot_Wrapped) + , GrVkTexture(gpu, desc, info, texView, GrVkImage::kNot_Wrapped) + , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, GrVkImage::kNot_Wrapped) { + this->registerWithCache(budgeted); + } GrVkTextureRenderTarget(GrVkGpu* gpu, const GrSurfaceDesc& desc, const GrVkImageInfo& info, @@ -71,14 +82,27 @@ private: const GrVkImageInfo& msaaInfo, const GrVkImageView* colorAttachmentView, const GrVkImageView* resolveAttachmentView, - GrVkImage::Wrapped wrapped); + GrVkImage::Wrapped wrapped) + : GrSurface(gpu, desc) + , GrVkImage(info, wrapped) + , GrVkTexture(gpu, desc, info, texView, wrapped) + , GrVkRenderTarget(gpu, desc, info, msaaInfo, colorAttachmentView, + resolveAttachmentView, wrapped) { + this->registerWithCacheWrapped(); + } GrVkTextureRenderTarget(GrVkGpu* gpu, const GrSurfaceDesc& desc, const GrVkImageInfo& info, const GrVkImageView* texView, const GrVkImageView* colorAttachmentView, - GrVkImage::Wrapped wrapped); + GrVkImage::Wrapped wrapped) + : GrSurface(gpu, desc) + , GrVkImage(info, wrapped) + , GrVkTexture(gpu, desc, info, texView, wrapped) + , GrVkRenderTarget(gpu, desc, info, colorAttachmentView, wrapped) { + this->registerWithCacheWrapped(); + } static sk_sp<GrVkTextureRenderTarget> Make(GrVkGpu*, const GrSurfaceDesc&, |