MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Hpp / main

Function main

RAII_Samples/09_InitDescriptorSet/09_InitDescriptorSet.cpp:27–81  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25static char const * EngineName = "Vulkan.hpp";
26
27int main()
28{
29 try
30 {
31 vk::raii::Context context;
32 vk::raii::Instance instance = vk::raii::su::makeInstance( context, AppName, EngineName, {}, vk::su::getInstanceExtensions() );
33#if !defined( NDEBUG )
34 vk::raii::DebugUtilsMessengerEXT debugUtilsMessenger( instance, vk::su::makeDebugUtilsMessengerCreateInfoEXT() );
35#endif
36 vk::raii::PhysicalDevice physicalDevice = vk::raii::PhysicalDevices( instance ).front();
37
38 uint32_t graphicsQueueFamilyIndex = vk::su::findGraphicsQueueFamilyIndex( physicalDevice.getQueueFamilyProperties() );
39 vk::raii::Device device = vk::raii::su::makeDevice( physicalDevice, graphicsQueueFamilyIndex );
40
41 vk::raii::su::BufferData uniformBufferData( physicalDevice, device, sizeof( glm::mat4x4 ), vk::BufferUsageFlagBits::eUniformBuffer );
42 glm::mat4x4 mvpcMatrix = vk::su::createModelViewProjectionClipMatrix( vk::Extent2D( 0, 0 ) );
43 vk::raii::su::copyToDevice( uniformBufferData.deviceMemory, mvpcMatrix );
44
45 vk::raii::DescriptorSetLayout descriptorSetLayout =
46 vk::raii::su::makeDescriptorSetLayout( device, { { vk::DescriptorType::eUniformBuffer, 1, vk::ShaderStageFlagBits::eVertex } } );
47
48 /* VULKAN_HPP_KEY_START */
49
50 // create a descriptor pool
51 vk::DescriptorPoolSize poolSize( vk::DescriptorType::eUniformBuffer, 1 );
52 vk::DescriptorPoolCreateInfo descriptorPoolCreateInfo( vk::DescriptorPoolCreateFlagBits::eFreeDescriptorSet, 1, poolSize );
53 vk::raii::DescriptorPool descriptorPool( device, descriptorPoolCreateInfo );
54
55 // allocate a descriptor set
56 vk::DescriptorSetAllocateInfo descriptorSetAllocateInfo( descriptorPool, *descriptorSetLayout );
57 vk::raii::DescriptorSet descriptorSet = std::move( vk::raii::DescriptorSets( device, descriptorSetAllocateInfo ).front() );
58
59 vk::DescriptorBufferInfo descriptorBufferInfo( uniformBufferData.buffer, 0, sizeof( glm::mat4x4 ) );
60 vk::WriteDescriptorSet writeDescriptorSet( descriptorSet, 0, 0, vk::DescriptorType::eUniformBuffer, {}, descriptorBufferInfo );
61 device.updateDescriptorSets( writeDescriptorSet, nullptr );
62
63 /* VULKAN_HPP_KEY_END */
64 }
65 catch ( vk::SystemError & err )
66 {
67 std::cout << "vk::SystemError: " << err.what() << std::endl;
68 exit( -1 );
69 }
70 catch ( std::exception & err )
71 {
72 std::cout << "std::exception: " << err.what() << std::endl;
73 exit( -1 );
74 }
75 catch ( ... )
76 {
77 std::cout << "unknown error\n";
78 exit( -1 );
79 }
80 return 0;
81}

Callers

nothing calls this directly

Calls 8

makeInstanceFunction · 0.85
getInstanceExtensionsFunction · 0.85
makeDeviceFunction · 0.85
makeDescriptorSetLayoutFunction · 0.85
copyToDeviceFunction · 0.50

Tested by

no test coverage detected