diff options
author | Brian Salomon <bsalomon@google.com> | 2018-07-12 14:53:49 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-13 00:45:54 +0000 |
commit | 662ea4baba570d2f21a7b33d268204e9bdfa7fb9 (patch) | |
tree | 71da861d0d9b8f014e7f09f89b122480e067e8c0 /src/gpu/vk | |
parent | 13ac194dbf9968d356e580b85420f1314f453a10 (diff) |
Remove texel buffer support.
Change-Id: Ia6f21afe714208979a5bc384e436b28ea2b9a297
Reviewed-on: https://skia-review.googlesource.com/141051
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/vk')
-rw-r--r-- | src/gpu/vk/GrVkCaps.cpp | 2 | ||||
-rw-r--r-- | src/gpu/vk/GrVkDescriptorSetManager.cpp | 34 | ||||
-rw-r--r-- | src/gpu/vk/GrVkGpu.cpp | 6 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineState.cpp | 128 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineState.h | 13 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineStateBuilder.cpp | 12 | ||||
-rw-r--r-- | src/gpu/vk/GrVkTexelBuffer.cpp | 73 | ||||
-rw-r--r-- | src/gpu/vk/GrVkTexelBuffer.h | 37 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUniformHandler.cpp | 34 | ||||
-rw-r--r-- | src/gpu/vk/GrVkUniformHandler.h | 14 |
10 files changed, 14 insertions, 339 deletions
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp index 58a7778b5e..8181569af3 100644 --- a/src/gpu/vk/GrVkCaps.cpp +++ b/src/gpu/vk/GrVkCaps.cpp @@ -392,8 +392,6 @@ void GrVkCaps::initShaderCaps(const VkPhysicalDeviceProperties& properties, uint shaderCaps->fDualSourceBlendingSupport = SkToBool(featureFlags & kDualSrcBlend_GrVkFeatureFlag); shaderCaps->fIntegerSupport = true; - shaderCaps->fTexelBufferSupport = true; - shaderCaps->fTexelFetchSupport = true; shaderCaps->fVertexIDSupport = true; shaderCaps->fFPManipulationSupport = true; diff --git a/src/gpu/vk/GrVkDescriptorSetManager.cpp b/src/gpu/vk/GrVkDescriptorSetManager.cpp index 7d70b337df..b032584378 100644 --- a/src/gpu/vk/GrVkDescriptorSetManager.cpp +++ b/src/gpu/vk/GrVkDescriptorSetManager.cpp @@ -29,15 +29,9 @@ GrVkDescriptorSetManager* GrVkDescriptorSetManager::CreateUniformManager(GrVkGpu GrVkDescriptorSetManager* GrVkDescriptorSetManager::CreateSamplerManager( GrVkGpu* gpu, VkDescriptorType type, const GrVkUniformHandler& uniformHandler) { SkSTArray<4, uint32_t> visibilities; - if (VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER == type) { - for (int i = 0 ; i < uniformHandler.numSamplers(); ++i) { - visibilities.push_back(uniformHandler.samplerVisibility(i)); - } - } else { - SkASSERT(type == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER); - for (int i = 0 ; i < uniformHandler.numTexelBuffers(); ++i) { - visibilities.push_back(uniformHandler.texelBufferVisibility(i)); - } + SkASSERT(type == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER); + for (int i = 0 ; i < uniformHandler.numSamplers(); ++i) { + visibilities.push_back(uniformHandler.samplerVisibility(i)); } return CreateSamplerManager(gpu, type, visibilities); } @@ -103,24 +97,14 @@ bool GrVkDescriptorSetManager::isCompatible(VkDescriptorType type, return false; } - if (type == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER) { - if (fBindingVisibilities.count() != uniHandler->numSamplers()) { - return false; - } - for (int i = 0; i < uniHandler->numSamplers(); ++i) { - if (uniHandler->samplerVisibility(i) != fBindingVisibilities[i]) { - return false; - } - } - } else if (VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER == type) { - if (fBindingVisibilities.count() != uniHandler->numTexelBuffers()) { + SkASSERT(type == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER); + if (fBindingVisibilities.count() != uniHandler->numSamplers()) { + return false; + } + for (int i = 0; i < uniHandler->numSamplers(); ++i) { + if (uniHandler->samplerVisibility(i) != fBindingVisibilities[i]) { return false; } - for (int i = 0; i < uniHandler->numTexelBuffers(); ++i) { - if (uniHandler->texelBufferVisibility(i) != fBindingVisibilities[i]) { - return false; - } - } } return true; } diff --git a/src/gpu/vk/GrVkGpu.cpp b/src/gpu/vk/GrVkGpu.cpp index 689966a61c..36d65a9215 100644 --- a/src/gpu/vk/GrVkGpu.cpp +++ b/src/gpu/vk/GrVkGpu.cpp @@ -27,7 +27,6 @@ #include "GrVkRenderPass.h" #include "GrVkResourceProvider.h" #include "GrVkSemaphore.h" -#include "GrVkTexelBuffer.h" #include "GrVkTexture.h" #include "GrVkTextureRenderTarget.h" #include "GrVkTransferBuffer.h" @@ -276,11 +275,6 @@ GrBuffer* GrVkGpu::onCreateBuffer(size_t size, GrBufferType type, GrAccessPatter kStream_GrAccessPattern == accessPattern); buff = GrVkTransferBuffer::Create(this, size, GrVkBuffer::kCopyWrite_Type); break; - case kTexel_GrBufferType: - SkASSERT(kDynamic_GrAccessPattern == accessPattern || - kStatic_GrAccessPattern == accessPattern); - buff = GrVkTexelBuffer::Create(this, size, kDynamic_GrAccessPattern == accessPattern); - break; case kDrawIndirect_GrBufferType: SK_ABORT("DrawIndirect Buffers not supported in vulkan backend."); return nullptr; diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp index 84aa68248c..9080128bef 100644 --- a/src/gpu/vk/GrVkPipelineState.cpp +++ b/src/gpu/vk/GrVkPipelineState.cpp @@ -21,7 +21,6 @@ #include "GrVkPipeline.h" #include "GrVkPipelineLayout.h" #include "GrVkSampler.h" -#include "GrVkTexelBuffer.h" #include "GrVkTexture.h" #include "GrVkUniformBuffer.h" #include "SkMipMap.h" @@ -34,13 +33,11 @@ GrVkPipelineState::GrVkPipelineState( GrVkPipeline* pipeline, VkPipelineLayout layout, const GrVkDescriptorSetManager::Handle& samplerDSHandle, - const GrVkDescriptorSetManager::Handle& texelBufferDSHandle, const GrGLSLBuiltinUniformHandles& builtinUniformHandles, const UniformInfoArray& uniforms, uint32_t geometryUniformSize, uint32_t fragmentUniformSize, uint32_t numSamplers, - uint32_t numTexelBuffers, std::unique_ptr<GrGLSLPrimitiveProcessor> geometryProcessor, std::unique_ptr<GrGLSLXferProcessor> xferProcessor, std::unique_ptr<std::unique_ptr<GrGLSLFragmentProcessor>[]> fragmentProcessors, @@ -49,9 +46,7 @@ GrVkPipelineState::GrVkPipelineState( , fPipelineLayout(new GrVkPipelineLayout(layout)) , fUniformDescriptorSet(nullptr) , fSamplerDescriptorSet(nullptr) - , fTexelBufferDescriptorSet(nullptr) , fSamplerDSHandle(samplerDSHandle) - , fTexelBufferDSHandle(texelBufferDSHandle) , fBuiltinUniformHandles(builtinUniformHandles) , fGeometryProcessor(std::move(geometryProcessor)) , fXferProcessor(std::move(xferProcessor)) @@ -61,8 +56,6 @@ GrVkPipelineState::GrVkPipelineState( fSamplers.setReserve(numSamplers); fTextureViews.setReserve(numSamplers); fTextures.setReserve(numSamplers); - fBufferViews.setReserve(numTexelBuffers); - fTexelBuffers.setReserve(numTexelBuffers); fDescriptorSets[0] = VK_NULL_HANDLE; fDescriptorSets[1] = VK_NULL_HANDLE; @@ -72,7 +65,6 @@ GrVkPipelineState::GrVkPipelineState( fFragmentUniformBuffer.reset(GrVkUniformBuffer::Create(gpu, fragmentUniformSize)); fNumSamplers = numSamplers; - fNumTexelBuffers = numTexelBuffers; } GrVkPipelineState::~GrVkPipelineState() { @@ -82,8 +74,6 @@ GrVkPipelineState::~GrVkPipelineState() { SkASSERT(!fSamplers.count()); SkASSERT(!fTextureViews.count()); SkASSERT(!fTextures.count()); - SkASSERT(!fBufferViews.count()); - SkASSERT(!fTexelBuffers.count()); } void GrVkPipelineState::freeTempResources(const GrVkGpu* gpu) { @@ -101,16 +91,6 @@ void GrVkPipelineState::freeTempResources(const GrVkGpu* gpu) { fTextures[i]->unref(gpu); } fTextures.rewind(); - - for (int i = 0; i < fBufferViews.count(); ++i) { - fBufferViews[i]->unref(gpu); - } - fBufferViews.rewind(); - - for (int i = 0; i < fTexelBuffers.count(); ++i) { - fTexelBuffers[i]->unref(gpu); - } - fTexelBuffers.rewind(); } void GrVkPipelineState::freeGPUResources(const GrVkGpu* gpu) { @@ -142,12 +122,6 @@ void GrVkPipelineState::freeGPUResources(const GrVkGpu* gpu) { fSamplerDescriptorSet = nullptr; } - if (fTexelBufferDescriptorSet) { - fTexelBufferDescriptorSet->recycle(const_cast<GrVkGpu*>(gpu)); - fTexelBufferDescriptorSet = nullptr; - } - - this->freeTempResources(gpu); } @@ -180,16 +154,6 @@ void GrVkPipelineState::abandonGPUResources() { } fTextures.rewind(); - for (int i = 0; i < fBufferViews.count(); ++i) { - fBufferViews[i]->unrefAndAbandon(); - } - fBufferViews.rewind(); - - for (int i = 0; i < fTexelBuffers.count(); ++i) { - fTexelBuffers[i]->unrefAndAbandon(); - } - - fTexelBuffers.rewind(); if (fUniformDescriptorSet) { fUniformDescriptorSet->unrefAndAbandon(); fUniformDescriptorSet = nullptr; @@ -199,17 +163,11 @@ void GrVkPipelineState::abandonGPUResources() { fSamplerDescriptorSet->unrefAndAbandon(); fSamplerDescriptorSet = nullptr; } - - if (fTexelBufferDescriptorSet) { - fTexelBufferDescriptorSet->unrefAndAbandon(); - fTexelBufferDescriptorSet = nullptr; - } } static void append_texture_bindings( const GrResourceIOProcessor& processor, - SkTArray<const GrResourceIOProcessor::TextureSampler*>* textureBindings, - SkTArray<const GrResourceIOProcessor::BufferAccess*>* bufferAccesses) { + SkTArray<const GrResourceIOProcessor::TextureSampler*>* textureBindings) { if (int numTextureSamplers = processor.numTextureSamplers()) { const GrResourceIOProcessor::TextureSampler** bindings = textureBindings->push_back_n(numTextureSamplers); @@ -218,14 +176,6 @@ static void append_texture_bindings( bindings[i] = &processor.textureSampler(i); } while (++i < numTextureSamplers); } - if (int numTexelBuffers = processor.numBuffers()) { - const GrResourceIOProcessor::BufferAccess** accesses = - bufferAccesses->push_back_n(numTexelBuffers); - int i = 0; - do { - accesses[i] = &processor.bufferAccess(i); - } while (++i < numTexelBuffers); - } } void GrVkPipelineState::setData(GrVkGpu* gpu, @@ -238,11 +188,10 @@ void GrVkPipelineState::setData(GrVkGpu* gpu, this->setRenderTargetState(pipeline.proxy()); SkSTArray<8, const GrResourceIOProcessor::TextureSampler*> textureBindings; - SkSTArray<8, const GrResourceIOProcessor::BufferAccess*> bufferAccesses; fGeometryProcessor->setData(fDataManager, primProc, GrFragmentProcessor::CoordTransformIter(pipeline)); - append_texture_bindings(primProc, &textureBindings, &bufferAccesses); + append_texture_bindings(primProc, &textureBindings); GrFragmentProcessor::Iter iter(pipeline); GrGLSLFragmentProcessor::Iter glslIter(fFragmentProcessors.get(), fFragmentProcessorCnt); @@ -250,7 +199,7 @@ void GrVkPipelineState::setData(GrVkGpu* gpu, GrGLSLFragmentProcessor* glslFP = glslIter.next(); while (fp && glslFP) { glslFP->setData(fDataManager, *fp); - append_texture_bindings(*fp, &textureBindings, &bufferAccesses); + append_texture_bindings(*fp, &textureBindings); fp = iter.next(); glslFP = glslIter.next(); } @@ -283,17 +232,6 @@ void GrVkPipelineState::setData(GrVkGpu* gpu, this->writeSamplers(gpu, textureBindings); } - if (fNumTexelBuffers) { - if (fTexelBufferDescriptorSet) { - fTexelBufferDescriptorSet->recycle(gpu); - } - fTexelBufferDescriptorSet = - gpu->resourceProvider().getSamplerDescriptorSet(fTexelBufferDSHandle); - int texelBufferDSIdx = GrVkUniformHandler::kTexelBufferDescSet; - fDescriptorSets[texelBufferDSIdx] = fTexelBufferDescriptorSet->descriptorSet(); - this->writeTexelBuffers(gpu, bufferAccesses); - } - if (fGeometryUniformBuffer || fFragmentUniformBuffer) { if (fDataManager.uploadUniformBuffers(gpu, fGeometryUniformBuffer.get(), @@ -417,49 +355,6 @@ void GrVkPipelineState::writeSamplers( } } -void GrVkPipelineState::writeTexelBuffers( - GrVkGpu* gpu, - const SkTArray<const GrResourceIOProcessor::BufferAccess*>& bufferAccesses) { - SkASSERT(fNumTexelBuffers == bufferAccesses.count()); - - for (int i = 0; i < bufferAccesses.count(); ++i) { - GrPixelConfig config = bufferAccesses[i]->texelConfig(); - VkFormat format; - SkAssertResult(GrPixelConfigToVkFormat(config, &format)); - - GrVkTexelBuffer* buffer = static_cast<GrVkTexelBuffer*>(bufferAccesses[i]->buffer()); - - const GrVkBufferView* bufferView = GrVkBufferView::Create(gpu, buffer->buffer(), - format, buffer->offset(), - buffer->size()); - fBufferViews.push(bufferView); - - const GrVkResource* bufferResource = buffer->resource(); - bufferResource->ref(); - fTexelBuffers.push(bufferResource); - - VkWriteDescriptorSet writeInfo; - memset(&writeInfo, 0, sizeof(VkWriteDescriptorSet)); - writeInfo.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - writeInfo.pNext = nullptr; - writeInfo.dstSet = fDescriptorSets[GrVkUniformHandler::kTexelBufferDescSet]; - writeInfo.dstBinding = i; - writeInfo.dstArrayElement = 0; - writeInfo.descriptorCount = 1; - writeInfo.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER; - writeInfo.pImageInfo = nullptr; - writeInfo.pBufferInfo = nullptr; - VkBufferView vkBufferView = bufferView->bufferView(); - writeInfo.pTexelBufferView = &vkBufferView; - - GR_VK_CALL(gpu->vkInterface(), UpdateDescriptorSets(gpu->device(), - 1, - &writeInfo, - 0, - nullptr)); - } -} - void GrVkPipelineState::setRenderTargetState(const GrRenderTargetProxy* proxy) { GrRenderTarget* rt = proxy->priv().peekRenderTarget(); @@ -499,12 +394,6 @@ void GrVkPipelineState::bind(const GrVkGpu* gpu, GrVkCommandBuffer* commandBuffe dsIndex, 1, &fDescriptorSets[dsIndex], 0, nullptr); } - if (fNumTexelBuffers) { - int dsIndex = GrVkUniformHandler::kTexelBufferDescSet; - commandBuffer->bindDescriptorSets(gpu, this, fPipelineLayout, - dsIndex, 1, - &fDescriptorSets[dsIndex], 0, nullptr); - } } void GrVkPipelineState::addUniformResources(GrVkCommandBuffer& commandBuffer) { @@ -514,9 +403,6 @@ void GrVkPipelineState::addUniformResources(GrVkCommandBuffer& commandBuffer) { if (fSamplerDescriptorSet) { commandBuffer.addRecycledResource(fSamplerDescriptorSet); } - if (fTexelBufferDescriptorSet) { - commandBuffer.addRecycledResource(fTexelBufferDescriptorSet); - } if (fGeometryUniformBuffer.get()) { commandBuffer.addRecycledResource(fGeometryUniformBuffer->resource()); @@ -536,12 +422,4 @@ void GrVkPipelineState::addUniformResources(GrVkCommandBuffer& commandBuffer) { for (int i = 0; i < fTextures.count(); ++i) { commandBuffer.addResource(fTextures[i]); } - - for (int i = 0; i < fBufferViews.count(); ++i) { - commandBuffer.addResource(fBufferViews[i]); - } - - for (int i = 0; i < fTexelBuffers.count(); ++i) { - commandBuffer.addResource(fTexelBuffers[i]); - } } diff --git a/src/gpu/vk/GrVkPipelineState.h b/src/gpu/vk/GrVkPipelineState.h index ee948a8519..a3320e5550 100644 --- a/src/gpu/vk/GrVkPipelineState.h +++ b/src/gpu/vk/GrVkPipelineState.h @@ -43,13 +43,11 @@ public: GrVkPipeline* pipeline, VkPipelineLayout layout, const GrVkDescriptorSetManager::Handle& samplerDSHandle, - const GrVkDescriptorSetManager::Handle& texelBufferDSHandle, const GrGLSLBuiltinUniformHandles& builtinUniformHandles, const UniformInfoArray& uniforms, uint32_t geometryUniformSize, uint32_t fragmentUniformSize, uint32_t numSamplers, - uint32_t numTexelBuffers, std::unique_ptr<GrGLSLPrimitiveProcessor> geometryProcessor, std::unique_ptr<GrGLSLXferProcessor> xferProcessor, std::unique_ptr<std::unique_ptr<GrGLSLFragmentProcessor>[]> fragmentProcessors, @@ -78,10 +76,6 @@ private: GrVkGpu* gpu, const SkTArray<const GrResourceIOProcessor::TextureSampler*>& textureBindings); - void writeTexelBuffers( - GrVkGpu* gpu, - const SkTArray<const GrResourceIOProcessor::BufferAccess*>& bufferAccesses); - /** * We use the RT's size and origin to adjust from Skia device space to vulkan normalized device * space and to make device space positions have the correct origin for processors that require @@ -137,10 +131,8 @@ private: const GrVkDescriptorSet* fUniformDescriptorSet; const GrVkDescriptorSet* fSamplerDescriptorSet; - const GrVkDescriptorSet* fTexelBufferDescriptorSet; const GrVkDescriptorSetManager::Handle fSamplerDSHandle; - const GrVkDescriptorSetManager::Handle fTexelBufferDSHandle; std::unique_ptr<GrVkUniformBuffer> fGeometryUniformBuffer; std::unique_ptr<GrVkUniformBuffer> fFragmentUniformBuffer; @@ -150,10 +142,6 @@ private: SkTDArray<const GrVkImageView*> fTextureViews; SkTDArray<const GrVkResource*> fTextures; - // GrVkResource used for TexelBuffers - SkTDArray<const GrVkBufferView*> fBufferViews; - SkTDArray<const GrVkResource*> fTexelBuffers; - // Tracks the current render target uniforms stored in the vertex buffer. RenderTargetState fRenderTargetState; GrGLSLBuiltinUniformHandles fBuiltinUniformHandles; @@ -167,7 +155,6 @@ private: GrVkPipelineStateDataManager fDataManager; int fNumSamplers; - int fNumTexelBuffers; }; #endif diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.cpp b/src/gpu/vk/GrVkPipelineStateBuilder.cpp index c4c748ba9c..91685c6016 100644 --- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp +++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp @@ -90,7 +90,7 @@ GrVkPipelineState* GrVkPipelineStateBuilder::finalize(const GrStencilSettings& s GrPrimitiveType primitiveType, const GrVkRenderPass& renderPass, Desc* desc) { - VkDescriptorSetLayout dsLayout[3]; + VkDescriptorSetLayout dsLayout[2]; VkPipelineLayout pipelineLayout; VkShaderModule vertShaderModule = VK_NULL_HANDLE; VkShaderModule geomShaderModule = VK_NULL_HANDLE; @@ -106,19 +106,13 @@ GrVkPipelineState* GrVkPipelineStateBuilder::finalize(const GrStencilSettings& s dsLayout[GrVkUniformHandler::kSamplerDescSet] = resourceProvider.getSamplerDSLayout(samplerDSHandle); - GrVkDescriptorSetManager::Handle texelBufferDSHandle; - resourceProvider.getSamplerDescriptorSetHandle(VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, - fUniformHandler, &texelBufferDSHandle); - dsLayout[GrVkUniformHandler::kTexelBufferDescSet] = - resourceProvider.getSamplerDSLayout(texelBufferDSHandle); - // Create the VkPipelineLayout VkPipelineLayoutCreateInfo layoutCreateInfo; memset(&layoutCreateInfo, 0, sizeof(VkPipelineLayoutCreateFlags)); layoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; layoutCreateInfo.pNext = 0; layoutCreateInfo.flags = 0; - layoutCreateInfo.setLayoutCount = 3; + layoutCreateInfo.setLayoutCount = 2; layoutCreateInfo.pSetLayouts = dsLayout; layoutCreateInfo.pushConstantRangeCount = 0; layoutCreateInfo.pPushConstantRanges = nullptr; @@ -197,13 +191,11 @@ GrVkPipelineState* GrVkPipelineStateBuilder::finalize(const GrStencilSettings& s pipeline, pipelineLayout, samplerDSHandle, - texelBufferDSHandle, fUniformHandles, fUniformHandler.fUniforms, fUniformHandler.fCurrentGeometryUBOOffset, fUniformHandler.fCurrentFragmentUBOOffset, (uint32_t)fUniformHandler.numSamplers(), - (uint32_t)fUniformHandler.numTexelBuffers(), std::move(fGeometryProcessor), std::move(fXferProcessor), std::move(fFragmentProcessors), diff --git a/src/gpu/vk/GrVkTexelBuffer.cpp b/src/gpu/vk/GrVkTexelBuffer.cpp deleted file mode 100644 index 501706cfb5..0000000000 --- a/src/gpu/vk/GrVkTexelBuffer.cpp +++ /dev/null @@ -1,73 +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 "GrVkTexelBuffer.h" - -#include "GrVkGpu.h" - -GrVkTexelBuffer::GrVkTexelBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc, - const GrVkBuffer::Resource* bufferResource) - : INHERITED(gpu, desc.fSizeInBytes, kTexel_GrBufferType, - kDynamic_GrAccessPattern) - , GrVkBuffer(desc, bufferResource) { - this->registerWithCache(SkBudgeted::kYes); -} - -GrVkTexelBuffer* GrVkTexelBuffer::Create(GrVkGpu* gpu, size_t size, bool dynamic) { - GrVkBuffer::Desc desc; - desc.fDynamic = dynamic; - desc.fType = GrVkBuffer::kTexel_Type; - desc.fSizeInBytes = size; - - const GrVkBuffer::Resource* bufferResource = GrVkBuffer::Create(gpu, desc); - if (!bufferResource) { - return nullptr; - } - GrVkTexelBuffer* buffer = new GrVkTexelBuffer(gpu, desc, bufferResource); - if (!buffer) { - bufferResource->unref(gpu); - } - return buffer; -} - -void GrVkTexelBuffer::onRelease() { - if (!this->wasDestroyed()) { - this->vkRelease(this->getVkGpu()); - } - - INHERITED::onRelease(); -} - -void GrVkTexelBuffer::onAbandon() { - this->vkAbandon(); - INHERITED::onAbandon(); -} - -void GrVkTexelBuffer::onMap() { - if (!this->wasDestroyed()) { - this->GrBuffer::fMapPtr = this->vkMap(this->getVkGpu()); - } -} - -void GrVkTexelBuffer::onUnmap() { - if (!this->wasDestroyed()) { - this->vkUnmap(this->getVkGpu()); - } -} - -bool GrVkTexelBuffer::onUpdateData(const void* src, size_t srcSizeInBytes) { - if (!this->wasDestroyed()) { - return this->vkUpdateData(this->getVkGpu(), src, srcSizeInBytes); - } else { - return false; - } -} - -GrVkGpu* GrVkTexelBuffer::getVkGpu() const { - SkASSERT(!this->wasDestroyed()); - return static_cast<GrVkGpu*>(this->getGpu()); -} diff --git a/src/gpu/vk/GrVkTexelBuffer.h b/src/gpu/vk/GrVkTexelBuffer.h deleted file mode 100644 index 0ca114d63e..0000000000 --- a/src/gpu/vk/GrVkTexelBuffer.h +++ /dev/null @@ -1,37 +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. - */ - -#ifndef GrVkTexelBuffer_DEFINED -#define GrVkTexelBuffer_DEFINED - -#include "GrBuffer.h" -#include "GrVkBuffer.h" - -class GrVkGpu; - -class GrVkTexelBuffer : public GrBuffer, public GrVkBuffer { -public: - static GrVkTexelBuffer* Create(GrVkGpu* gpu, size_t size, bool dynamic); - -protected: - void onAbandon() override; - void onRelease() override; - -private: - GrVkTexelBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc, - const GrVkBuffer::Resource* resource); - - void onMap() override; - void onUnmap() override; - bool onUpdateData(const void* src, size_t srcSizeInBytes) override; - - GrVkGpu* getVkGpu() const; - - typedef GrBuffer INHERITED; -}; - -#endif diff --git a/src/gpu/vk/GrVkUniformHandler.cpp b/src/gpu/vk/GrVkUniformHandler.cpp index 72b350983b..d92d8d2fd6 100644 --- a/src/gpu/vk/GrVkUniformHandler.cpp +++ b/src/gpu/vk/GrVkUniformHandler.cpp @@ -263,32 +263,6 @@ GrGLSLUniformHandler::SamplerHandle GrVkUniformHandler::addSampler(uint32_t visi return GrGLSLUniformHandler::SamplerHandle(fSamplers.count() - 1); } -GrGLSLUniformHandler::TexelBufferHandle GrVkUniformHandler::addTexelBuffer(uint32_t visibility, - GrSLPrecision precision, - const char* name) { - SkASSERT(name && strlen(name)); - SkDEBUGCODE(static const uint32_t kVisMask = kVertex_GrShaderFlag | - kGeometry_GrShaderFlag | - kFragment_GrShaderFlag); - SkASSERT(0 == (~kVisMask & visibility)); - SkASSERT(0 != visibility); - SkString mangleName; - char prefix = 'u'; - fProgramBuilder->nameVariable(&mangleName, prefix, name, true); - - UniformInfo& info = fTexelBuffers.push_back(); - info.fVariable.setType(kBufferSampler_GrSLType); - info.fVariable.setTypeModifier(GrShaderVar::kUniform_TypeModifier); - info.fVariable.setPrecision(precision); - info.fVariable.setName(mangleName); - SkString layoutQualifier; - layoutQualifier.appendf("set=%d, binding=%d", kTexelBufferDescSet, fTexelBuffers.count()- 1); - info.fVariable.addLayoutQualifier(layoutQualifier.c_str()); - info.fVisibility = visibility; - info.fUBOffset = 0; - return GrGLSLUniformHandler::TexelBufferHandle(fTexelBuffers.count() - 1); -} - void GrVkUniformHandler::appendUniformDecls(GrShaderFlags visibility, SkString* out) const { SkASSERT(kVertex_GrShaderFlag == visibility || kGeometry_GrShaderFlag == visibility || @@ -303,14 +277,6 @@ void GrVkUniformHandler::appendUniformDecls(GrShaderFlags visibility, SkString* } } - for (int i = 0; i < fTexelBuffers.count(); ++i) { - const UniformInfo& texelBuffer = fTexelBuffers[i]; - if (visibility == texelBuffer.fVisibility) { - texelBuffer.fVariable.appendDecl(fProgramBuilder->shaderCaps(), out); - out->append(";\n"); - } - } - #ifdef SK_DEBUG bool firstGeomOffsetCheck = false; bool firstFragOffsetCheck = false; diff --git a/src/gpu/vk/GrVkUniformHandler.h b/src/gpu/vk/GrVkUniformHandler.h index ebe9041789..7653abea67 100644 --- a/src/gpu/vk/GrVkUniformHandler.h +++ b/src/gpu/vk/GrVkUniformHandler.h @@ -19,7 +19,6 @@ public: enum { kUniformBufferDescSet = 0, kSamplerDescSet = 1, - kTexelBufferDescSet = 2, }; enum { kGeometryBinding = 0, @@ -47,7 +46,6 @@ private: : INHERITED(program) , fUniforms(kUniformsPerBlock) , fSamplers(kUniformsPerBlock) - , fTexelBuffers(kUniformsPerBlock) , fCurrentGeometryUBOOffset(0) , fCurrentFragmentUBOOffset(0) { } @@ -77,17 +75,6 @@ private: return fSamplers[handle.toIndex()].fVisibility; } - TexelBufferHandle addTexelBuffer(uint32_t visibility, GrSLPrecision, - const char* name) override; - - int numTexelBuffers() const { return fTexelBuffers.count(); } - const GrShaderVar& texelBufferVariable(TexelBufferHandle handle) const override { - return fTexelBuffers[handle.toIndex()].fVariable; - } - uint32_t texelBufferVisibility(TexelBufferHandle handle) const { - return fTexelBuffers[handle.toIndex()].fVisibility; - } - void appendUniformDecls(GrShaderFlags, SkString*) const override; bool hasGeometryUniforms() const { return fCurrentGeometryUBOOffset > 0; } @@ -102,7 +89,6 @@ private: UniformInfoArray fUniforms; UniformInfoArray fSamplers; SkTArray<GrSwizzle> fSamplerSwizzles; - UniformInfoArray fTexelBuffers; uint32_t fCurrentGeometryUBOOffset; uint32_t fCurrentFragmentUBOOffset; |