| Index: src/gpu/vk/GrVkPipelineStateBuilder.cpp
|
| diff --git a/src/gpu/vk/GrVkPipelineStateBuilder.cpp b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
|
| index be30bb3e4df3ea6110f758b65d3f72e2e51e49c1..2bd80033dd885bf71a1013bb3c848530a6861cdf 100644
|
| --- a/src/gpu/vk/GrVkPipelineStateBuilder.cpp
|
| +++ b/src/gpu/vk/GrVkPipelineStateBuilder.cpp
|
| @@ -162,18 +162,20 @@
|
| VkShaderModule vertShaderModule;
|
| VkShaderModule fragShaderModule;
|
|
|
| - uint32_t numSamplers = (uint32_t)fUniformHandler.numSamplers();
|
| + uint32_t numSamplers = fSamplerUniforms.count();
|
|
|
| SkAutoTDeleteArray<VkDescriptorSetLayoutBinding> dsSamplerBindings(
|
| new VkDescriptorSetLayoutBinding[numSamplers]);
|
| for (uint32_t i = 0; i < numSamplers; ++i) {
|
| - const GrVkGLSLSampler& sampler =
|
| - static_cast<const GrVkGLSLSampler&>(fUniformHandler.getSampler(i));
|
| - SkASSERT(sampler.binding() == i);
|
| - dsSamplerBindings[i].binding = sampler.binding();
|
| + UniformHandle uniHandle = fSamplerUniforms[i];
|
| + GrVkUniformHandler::UniformInfo uniformInfo = fUniformHandler.getUniformInfo(uniHandle);
|
| + SkASSERT(kSampler2D_GrSLType == uniformInfo.fVariable.getType());
|
| + SkASSERT(GrVkUniformHandler::kSamplerDescSet == uniformInfo.fSetNumber);
|
| + SkASSERT(uniformInfo.fBinding == i);
|
| + dsSamplerBindings[i].binding = uniformInfo.fBinding;
|
| dsSamplerBindings[i].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
| dsSamplerBindings[i].descriptorCount = 1;
|
| - dsSamplerBindings[i].stageFlags = visibility_to_vk_stage_flags(sampler.visibility());
|
| + dsSamplerBindings[i].stageFlags = visibility_to_vk_stage_flags(uniformInfo.fVisibility);
|
| dsSamplerBindings[i].pImmutableSamplers = nullptr;
|
| }
|
|
|
| @@ -182,10 +184,11 @@
|
| dsSamplerLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
| dsSamplerLayoutCreateInfo.pNext = nullptr;
|
| dsSamplerLayoutCreateInfo.flags = 0;
|
| - dsSamplerLayoutCreateInfo.bindingCount = numSamplers;
|
| + dsSamplerLayoutCreateInfo.bindingCount = fSamplerUniforms.count();
|
| // Setting to nullptr fixes an error in the param checker validation layer. Even though
|
| // bindingCount is 0 (which is valid), it still tries to validate pBindings unless it is null.
|
| - dsSamplerLayoutCreateInfo.pBindings = numSamplers ? dsSamplerBindings.get() : nullptr;
|
| + dsSamplerLayoutCreateInfo.pBindings = fSamplerUniforms.count() ? dsSamplerBindings.get() :
|
| + nullptr;
|
|
|
| GR_VK_CALL_ERRCHECK(fGpu->vkInterface(),
|
| CreateDescriptorSetLayout(fGpu->device(),
|
|
|