diff options
Diffstat (limited to 'examples/main_descriptors.cpp')
-rw-r--r-- | examples/main_descriptors.cpp | 44 |
1 files changed, 27 insertions, 17 deletions
diff --git a/examples/main_descriptors.cpp b/examples/main_descriptors.cpp index 5872ff8..f6bfb2d 100644 --- a/examples/main_descriptors.cpp +++ b/examples/main_descriptors.cpp @@ -1,6 +1,7 @@ +#include <cassert> + #include "common.h" #include "sample_spv.h" -#include <cassert> #if defined(SPIRV_REFLECT_HAS_VULKAN_H) #include <vulkan/vulkan.h> @@ -11,10 +12,10 @@ struct DescriptorSetLayoutData { }; #endif -int main(int argn, char** argv) -{ +int main(int argn, char** argv) { SpvReflectShaderModule module = {}; - SpvReflectResult result = spvReflectCreateShaderModule(sizeof(k_sample_spv), k_sample_spv, &module); + SpvReflectResult result = + spvReflectCreateShaderModule(sizeof(k_sample_spv), k_sample_spv, &module); assert(result == SPV_REFLECT_RESULT_SUCCESS); uint32_t count = 0; @@ -28,50 +29,59 @@ int main(int argn, char** argv) #if defined(SPIRV_REFLECT_HAS_VULKAN_H) // Demonstrates how to generate all necessary data structures to create a // VkDescriptorSetLayout for each descriptor set in this shader. - std::vector<DescriptorSetLayoutData> set_layouts(sets.size(), DescriptorSetLayoutData{}); + std::vector<DescriptorSetLayoutData> set_layouts(sets.size(), + DescriptorSetLayoutData{}); for (size_t i_set = 0; i_set < sets.size(); ++i_set) { const SpvReflectDescriptorSet& refl_set = *(sets[i_set]); DescriptorSetLayoutData& layout = set_layouts[i_set]; layout.bindings.resize(refl_set.binding_count); - for (uint32_t i_binding = 0; i_binding < refl_set.binding_count; ++i_binding) { - const SpvReflectDescriptorBinding& refl_binding = *(refl_set.bindings[i_binding]); + for (uint32_t i_binding = 0; i_binding < refl_set.binding_count; + ++i_binding) { + const SpvReflectDescriptorBinding& refl_binding = + *(refl_set.bindings[i_binding]); VkDescriptorSetLayoutBinding& layout_binding = layout.bindings[i_binding]; layout_binding.binding = refl_binding.binding; - layout_binding.descriptorType = static_cast<VkDescriptorType>(refl_binding.descriptor_type); + layout_binding.descriptorType = + static_cast<VkDescriptorType>(refl_binding.descriptor_type); layout_binding.descriptorCount = 1; for (uint32_t i_dim = 0; i_dim < refl_binding.array.dims_count; ++i_dim) { layout_binding.descriptorCount *= refl_binding.array.dims[i_dim]; } - layout_binding.stageFlags = static_cast<VkShaderStageFlagBits>(module.shader_stage); + layout_binding.stageFlags = + static_cast<VkShaderStageFlagBits>(module.shader_stage); } layout.set_number = refl_set.set; - layout.create_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; + layout.create_info.sType = + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; layout.create_info.bindingCount = refl_set.binding_count; layout.create_info.pBindings = layout.bindings.data(); } - // Nothing further is done with set_layouts in this sample; in a real application - // they would be merged with similar structures from other shader stages and/or pipelines - // to create a VkPipelineLayout. + // Nothing further is done with set_layouts in this sample; in a real + // application they would be merged with similar structures from other shader + // stages and/or pipelines to create a VkPipelineLayout. #endif // Log the descriptor set contents to stdout - const char* t = " "; + const char* t = " "; const char* tt = " "; PrintModuleInfo(std::cout, module); std::cout << "\n\n"; - std::cout << "Descriptor sets:" << "\n"; + std::cout << "Descriptor sets:" + << "\n"; for (size_t index = 0; index < sets.size(); ++index) { auto p_set = sets[index]; - // descriptor sets can also be retrieved directly from the module, by set index + // descriptor sets can also be retrieved directly from the module, by set + // index auto p_set2 = spvReflectGetDescriptorSet(&module, p_set->set, &result); assert(result == SPV_REFLECT_RESULT_SUCCESS); assert(p_set == p_set2); (void)p_set2; - std::cout << t << index << ":" << "\n"; + std::cout << t << index << ":" + << "\n"; PrintDescriptorSet(std::cout, *p_set, tt); std::cout << "\n\n"; } |