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 |