Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void vkr_init_descriptor_set(vkr_t *vkr,jmp_buf jump){
- //create descriptor set
- VkResult res = 0;
- VkDescriptorSetLayoutBinding layout_binding = {
- .binding = 0,
- .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
- .descriptorCount = 1,
- .stageFlags = VK_SHADER_STAGE_VERTEX_BIT,
- };
- // NEEDED FOR VULKAN TEXTURES
- VkDescriptorSetLayoutBinding sampler_binding = {
- .binding = 1,
- .descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
- .descriptorCount = 1,
- .stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT,
- };
- VkDescriptorSetLayoutBinding desc_bindings[2] = {layout_binding, sampler_binding};
- VkDescriptorSetLayoutCreateInfo desc_layout = {
- .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
- .bindingCount = VKR_DESCRIPTOR_SETS,
- .pBindings = desc_bindings,//&layout_binding,
- };
- vkr->desc_count = VKR_DESCRIPTOR_SETS;
- vkr->desc_list = calloc(1, vkr->desc_count * sizeof(VkDescriptorSetLayout));
- res = vkCreateDescriptorSetLayout(vkr->device, &desc_layout, NULL, vkr->desc_list);
- if(res != VK_SUCCESS){
- longjmp(jump,vkr_error_desc_list);
- }
- //now for the older part of the code:
- VkDescriptorPoolSize type_count[VKR_DESCRIPTOR_SETS] = {
- {
- .type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
- .descriptorCount = 1,
- },
- {
- .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
- .descriptorCount = 1,
- },
- };
- VkDescriptorPoolCreateInfo desc_pool_info = {
- .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
- .maxSets = 1,
- .poolSizeCount = VKR_DESCRIPTOR_SETS,
- .pPoolSizes = type_count,
- };
- res = vkCreateDescriptorPool(vkr->device, &desc_pool_info, NULL, &vkr->desc_pool);
- sys_warning("canary! 1");
- if(res != VK_SUCCESS){
- longjmp(jump,vkr_error_desc_list);
- }
- VkDescriptorSetAllocateInfo desc_alloc_info[1];
- desc_alloc_info[0] = (VkDescriptorSetAllocateInfo){
- .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
- .descriptorPool = vkr->desc_pool,
- .descriptorSetCount = vkr->desc_count,
- .pSetLayouts = vkr->desc_list,
- };
- vkr->desc_set_count = VKR_DESCRIPTOR_SETS;
- vkr->desc_set_list = calloc(1, vkr->desc_set_count * sizeof(VkDescriptorSet));
- res = vkAllocateDescriptorSets(vkr->device, desc_alloc_info, vkr->desc_set_list);
- sys_warning("canary! 2");
- if(res != VK_SUCCESS){
- longjmp(jump,vkr_error_desc_pool);
- }
- VkWriteDescriptorSet dset_writes[1];
- dset_writes[0] = (VkWriteDescriptorSet){
- .sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
- .dstSet = vkr->desc_set_list[0],
- .descriptorCount = 1,
- .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
- .pBufferInfo = &vkr->uniform_info,
- };
- vkUpdateDescriptorSets(vkr->device,1,dset_writes,0,NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement