Advertisement
Guest User

Untitled

a guest
Jun 13th, 2017
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void vkr_init_descriptor_set(vkr_t *vkr,jmp_buf jump){
  2.  
  3.     //create descriptor set
  4.     VkResult res = 0;
  5.  
  6.  
  7.     VkDescriptorSetLayoutBinding layout_binding = {
  8.         .binding = 0,
  9.         .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
  10.         .descriptorCount = 1,
  11.         .stageFlags = VK_SHADER_STAGE_VERTEX_BIT,
  12.     };
  13.     // NEEDED FOR VULKAN TEXTURES
  14.     VkDescriptorSetLayoutBinding sampler_binding = {
  15.         .binding = 1,
  16.         .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
  17.         .descriptorCount = 1,
  18.         .stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT,
  19.     };
  20.  
  21.     VkDescriptorSetLayoutBinding desc_bindings[2] = {layout_binding, sampler_binding};
  22.  
  23.     VkDescriptorSetLayoutCreateInfo desc_layout = {
  24.         .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
  25.         .bindingCount = VKR_DESCRIPTOR_SETS,
  26.         .pBindings = desc_bindings,//&layout_binding,
  27.     };
  28.  
  29.     vkr->desc_count = VKR_DESCRIPTOR_SETS;
  30.     vkr->desc_list = calloc(1, vkr->desc_count * sizeof(VkDescriptorSetLayout));
  31.  
  32.     res = vkCreateDescriptorSetLayout(vkr->device, &desc_layout, NULL, vkr->desc_list);
  33.    
  34.     if(res != VK_SUCCESS){
  35.         longjmp(jump,vkr_error_desc_list);
  36.     }
  37.  
  38.     //now for the older part of the code:
  39.  
  40.     VkDescriptorPoolSize type_count[VKR_DESCRIPTOR_SETS] = {
  41.         {
  42.             .type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
  43.             .descriptorCount = 1,
  44.         },
  45.         {
  46.             .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
  47.             .descriptorCount = 1,
  48.         },
  49.     };
  50.  
  51.     VkDescriptorPoolCreateInfo desc_pool_info = {
  52.         .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
  53.         .maxSets = 1,
  54.         .poolSizeCount = VKR_DESCRIPTOR_SETS,
  55.         .pPoolSizes = type_count,
  56.     };
  57.  
  58.     res = vkCreateDescriptorPool(vkr->device, &desc_pool_info, NULL, &vkr->desc_pool);
  59.  
  60.     sys_warning("canary! 1");
  61.  
  62.     if(res != VK_SUCCESS){
  63.         longjmp(jump,vkr_error_desc_list);
  64.     }
  65.  
  66.     VkDescriptorSetAllocateInfo desc_alloc_info[1];
  67.  
  68.     desc_alloc_info[0] = (VkDescriptorSetAllocateInfo){
  69.         .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
  70.         .descriptorPool = vkr->desc_pool,
  71.         .descriptorSetCount = vkr->desc_count,
  72.         .pSetLayouts = vkr->desc_list,
  73.     };
  74.  
  75.     vkr->desc_set_count = VKR_DESCRIPTOR_SETS;
  76.     vkr->desc_set_list = calloc(1, vkr->desc_set_count * sizeof(VkDescriptorSet));
  77.    
  78.     res = vkAllocateDescriptorSets(vkr->device, desc_alloc_info, vkr->desc_set_list);
  79.    
  80.     sys_warning("canary! 2");
  81.  
  82.     if(res != VK_SUCCESS){
  83.         longjmp(jump,vkr_error_desc_pool);
  84.     }
  85.  
  86.     VkWriteDescriptorSet dset_writes[1];
  87.     dset_writes[0] = (VkWriteDescriptorSet){
  88.         .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
  89.         .dstSet = vkr->desc_set_list[0],
  90.         .descriptorCount = 1,
  91.         .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
  92.         .pBufferInfo = &vkr->uniform_info,
  93.     };
  94.  
  95.     vkUpdateDescriptorSets(vkr->device,1,dset_writes,0,NULL);
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement