| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "vk/GrVkProgramBuilder.h" | 8 #include "vk/GrVkProgramBuilder.h" |
| 9 | 9 |
| 10 #include "vk/GrVkGpu.h" | 10 #include "vk/GrVkGpu.h" |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 if (!pipeline) { | 265 if (!pipeline) { |
| 266 GR_VK_CALL(fGpu->vkInterface(), DestroyPipelineLayout(fGpu->device(), pi
pelineLayout, | 266 GR_VK_CALL(fGpu->vkInterface(), DestroyPipelineLayout(fGpu->device(), pi
pelineLayout, |
| 267 nullptr)); | 267 nullptr)); |
| 268 GR_VK_CALL(fGpu->vkInterface(), DestroyDescriptorSetLayout(fGpu->device(
), dsLayout[0], | 268 GR_VK_CALL(fGpu->vkInterface(), DestroyDescriptorSetLayout(fGpu->device(
), dsLayout[0], |
| 269 nullptr)); | 269 nullptr)); |
| 270 GR_VK_CALL(fGpu->vkInterface(), DestroyDescriptorSetLayout(fGpu->device(
), dsLayout[1], | 270 GR_VK_CALL(fGpu->vkInterface(), DestroyDescriptorSetLayout(fGpu->device(
), dsLayout[1], |
| 271 nullptr)); | 271 nullptr)); |
| 272 return nullptr; | 272 return nullptr; |
| 273 } | 273 } |
| 274 | 274 |
| 275 | |
| 276 GrVkDescriptorPool::DescriptorTypeCounts typeCounts; | |
| 277 typeCounts.setTypeCount(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 2); | |
| 278 SkASSERT(numSamplers < 256); | |
| 279 typeCounts.setTypeCount(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, (uint8_t)
numSamplers); | |
| 280 GrVkDescriptorPool* descriptorPool = | |
| 281 fGpu->resourceProvider().findOrCreateCompatibleDescriptorPool(typeCounts
); | |
| 282 | |
| 283 VkDescriptorSetAllocateInfo dsAllocateInfo; | |
| 284 memset(&dsAllocateInfo, 0, sizeof(VkDescriptorSetAllocateInfo)); | |
| 285 dsAllocateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; | |
| 286 dsAllocateInfo.pNext = nullptr; | |
| 287 dsAllocateInfo.descriptorPool = descriptorPool->descPool(); | |
| 288 dsAllocateInfo.descriptorSetCount = 2; | |
| 289 dsAllocateInfo.pSetLayouts = dsLayout; | |
| 290 | |
| 291 VkDescriptorSet descriptorSets[2]; | |
| 292 GR_VK_CALL_ERRCHECK(fGpu->vkInterface(), AllocateDescriptorSets(fGpu->device
(), | |
| 293 &dsAllocateI
nfo, | |
| 294 descriptorSe
ts)); | |
| 295 | |
| 296 return new GrVkProgram(fGpu, | 275 return new GrVkProgram(fGpu, |
| 297 pipeline, | 276 pipeline, |
| 298 pipelineLayout, | 277 pipelineLayout, |
| 299 dsLayout, | 278 dsLayout, |
| 300 descriptorPool, | |
| 301 descriptorSets, | |
| 302 fUniformHandles, | 279 fUniformHandles, |
| 303 fUniformHandler.fUniforms, | 280 fUniformHandler.fUniforms, |
| 304 fUniformHandler.fCurrentVertexUBOOffset, | 281 fUniformHandler.fCurrentVertexUBOOffset, |
| 305 fUniformHandler.fCurrentFragmentUBOOffset, | 282 fUniformHandler.fCurrentFragmentUBOOffset, |
| 306 numSamplers, | 283 numSamplers, |
| 307 fGeometryProcessor, | 284 fGeometryProcessor, |
| 308 fXferProcessor, | 285 fXferProcessor, |
| 309 fFragmentProcessors); | 286 fFragmentProcessors); |
| 310 } | 287 } |
| OLD | NEW |