aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/vk/GrVkPipelineState.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/vk/GrVkPipelineState.cpp')
-rw-r--r--src/gpu/vk/GrVkPipelineState.cpp128
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]);
- }
}