| 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 "GrVkProgram.h" | 8 #include "GrVkProgram.h" |
| 9 | 9 |
| 10 #include "GrPipeline.h" | 10 #include "GrPipeline.h" |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 | 195 |
| 196 void GrVkProgram::writeUniformBuffers(const GrVkGpu* gpu) { | 196 void GrVkProgram::writeUniformBuffers(const GrVkGpu* gpu) { |
| 197 fProgramDataManager.uploadUniformBuffers(gpu, fVertexUniformBuffer, fFragmen
tUniformBuffer); | 197 fProgramDataManager.uploadUniformBuffers(gpu, fVertexUniformBuffer, fFragmen
tUniformBuffer); |
| 198 | 198 |
| 199 VkWriteDescriptorSet descriptorWrites[2]; | 199 VkWriteDescriptorSet descriptorWrites[2]; |
| 200 memset(descriptorWrites, 0, 2 * sizeof(VkWriteDescriptorSet)); | 200 memset(descriptorWrites, 0, 2 * sizeof(VkWriteDescriptorSet)); |
| 201 | 201 |
| 202 uint32_t firstUniformWrite = 0; | 202 uint32_t firstUniformWrite = 0; |
| 203 uint32_t uniformBindingUpdateCount = 0; | 203 uint32_t uniformBindingUpdateCount = 0; |
| 204 | 204 |
| 205 VkDescriptorBufferInfo vertBufferInfo; |
| 205 // Vertex Uniform Buffer | 206 // Vertex Uniform Buffer |
| 206 if (fVertexUniformBuffer.get()) { | 207 if (fVertexUniformBuffer.get()) { |
| 207 ++uniformBindingUpdateCount; | 208 ++uniformBindingUpdateCount; |
| 208 VkDescriptorBufferInfo vertBufferInfo; | |
| 209 memset(&vertBufferInfo, 0, sizeof(VkDescriptorBufferInfo)); | 209 memset(&vertBufferInfo, 0, sizeof(VkDescriptorBufferInfo)); |
| 210 vertBufferInfo.buffer = fVertexUniformBuffer->buffer(); | 210 vertBufferInfo.buffer = fVertexUniformBuffer->buffer(); |
| 211 vertBufferInfo.offset = 0; | 211 vertBufferInfo.offset = 0; |
| 212 vertBufferInfo.range = fVertexUniformBuffer->size(); | 212 vertBufferInfo.range = fVertexUniformBuffer->size(); |
| 213 | 213 |
| 214 descriptorWrites[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; | 214 descriptorWrites[0].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; |
| 215 descriptorWrites[0].pNext = nullptr; | 215 descriptorWrites[0].pNext = nullptr; |
| 216 descriptorWrites[0].dstSet = fDescriptorSets[1]; | 216 descriptorWrites[0].dstSet = fDescriptorSets[1]; |
| 217 descriptorWrites[0].dstBinding = GrVkUniformHandler::kVertexBinding; | 217 descriptorWrites[0].dstBinding = GrVkUniformHandler::kVertexBinding; |
| 218 descriptorWrites[0].dstArrayElement = 0; | 218 descriptorWrites[0].dstArrayElement = 0; |
| 219 descriptorWrites[0].descriptorCount = 1; | 219 descriptorWrites[0].descriptorCount = 1; |
| 220 descriptorWrites[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; | 220 descriptorWrites[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; |
| 221 descriptorWrites[0].pImageInfo = nullptr; | 221 descriptorWrites[0].pImageInfo = nullptr; |
| 222 descriptorWrites[0].pBufferInfo = &vertBufferInfo; | 222 descriptorWrites[0].pBufferInfo = &vertBufferInfo; |
| 223 descriptorWrites[0].pTexelBufferView = nullptr; | 223 descriptorWrites[0].pTexelBufferView = nullptr; |
| 224 } | 224 } |
| 225 | 225 |
| 226 VkDescriptorBufferInfo fragBufferInfo; |
| 226 // Fragment Uniform Buffer | 227 // Fragment Uniform Buffer |
| 227 if (fFragmentUniformBuffer.get()) { | 228 if (fFragmentUniformBuffer.get()) { |
| 228 if (0 == uniformBindingUpdateCount) { | 229 if (0 == uniformBindingUpdateCount) { |
| 229 firstUniformWrite = 1; | 230 firstUniformWrite = 1; |
| 230 } | 231 } |
| 231 ++uniformBindingUpdateCount; | 232 ++uniformBindingUpdateCount; |
| 232 VkDescriptorBufferInfo fragBufferInfo; | |
| 233 memset(&fragBufferInfo, 0, sizeof(VkDescriptorBufferInfo)); | 233 memset(&fragBufferInfo, 0, sizeof(VkDescriptorBufferInfo)); |
| 234 fragBufferInfo.buffer = fFragmentUniformBuffer->buffer(); | 234 fragBufferInfo.buffer = fFragmentUniformBuffer->buffer(); |
| 235 fragBufferInfo.offset = 0; | 235 fragBufferInfo.offset = 0; |
| 236 fragBufferInfo.range = fFragmentUniformBuffer->size(); | 236 fragBufferInfo.range = fFragmentUniformBuffer->size(); |
| 237 | 237 |
| 238 descriptorWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; | 238 descriptorWrites[1].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; |
| 239 descriptorWrites[1].pNext = nullptr; | 239 descriptorWrites[1].pNext = nullptr; |
| 240 descriptorWrites[1].dstSet = fDescriptorSets[1]; | 240 descriptorWrites[1].dstSet = fDescriptorSets[1]; |
| 241 descriptorWrites[1].dstBinding = GrVkUniformHandler::kFragBinding;; | 241 descriptorWrites[1].dstBinding = GrVkUniformHandler::kFragBinding;; |
| 242 descriptorWrites[1].dstArrayElement = 0; | 242 descriptorWrites[1].dstArrayElement = 0; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 | 358 |
| 359 for (int i = 0; i < fTextureViews.count(); ++i) { | 359 for (int i = 0; i < fTextureViews.count(); ++i) { |
| 360 commandBuffer.addResource(fTextureViews[i]); | 360 commandBuffer.addResource(fTextureViews[i]); |
| 361 } | 361 } |
| 362 | 362 |
| 363 for (int i = 0; i < fTextures.count(); ++i) { | 363 for (int i = 0; i < fTextures.count(); ++i) { |
| 364 commandBuffer.addResource(fTextures[i]); | 364 commandBuffer.addResource(fTextures[i]); |
| 365 } | 365 } |
| 366 #endif | 366 #endif |
| 367 } | 367 } |
| OLD | NEW |