diff options
Diffstat (limited to 'src/gpu/vk/GrVkPipelineState.cpp')
-rw-r--r-- | src/gpu/vk/GrVkPipelineState.cpp | 128 |
1 files changed, 3 insertions, 125 deletions
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]); - } } |