SHARE
TWEET
Untitled
a guest
Mar 9th, 2018
78
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- // Bad
- static int CreateUniformDescription(VkDescriptorPool* pDescPool, VkDescriptorSetLayout* pDescLayout, VkDescriptorSet* pDescSet,
- VkDeviceMemory* pDevMemory, VkBuffer* pUniBuffer)
- {
- // Setup Layout Binding for the Uniform buffer that contains "camera"
- VkDescriptorSetLayoutBinding layoutBinding = {};
- layoutBinding.binding = 0;
- layoutBinding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
- layoutBinding.descriptorCount = 1;
- layoutBinding.stageFlags = VK_SHADER_STAGE_VERTEX_BIT;
- // Setup the Description Layout Info
- VkDescriptorSetLayoutCreateInfo descLayoutInfo = {};
- descLayoutInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
- descLayoutInfo.pBindings = &layoutBinding;
- descLayoutInfo.bindingCount = 1;
- // Create Description Layout
- VkDescriptorSetLayout descLayout = {};
- VkResult res = vkCreateDescriptorSetLayout(_VkSystem.device, &descLayoutInfo, 0, &descLayout);
- if (res != VK_SUCCESS)
- return 1;
- // Setup Descriptor Pool Size
- VkDescriptorPoolSize descPoolSize = {};
- descPoolSize.descriptorCount = 1;
- descPoolSize.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
- // Setup Descriptor Pool Info
- VkDescriptorPoolCreateInfo descPoolInfo = {};
- descPoolInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
- descPoolInfo.maxSets = 1;
- descPoolInfo.poolSizeCount = 1;
- descPoolInfo.pPoolSizes = &descPoolSize;
- // Create Descriptor Pool
- VkDescriptorPool descPool = {};
- res = vkCreateDescriptorPool(_VkSystem.device, &descPoolInfo, 0, &descPool);
- if (res != VK_SUCCESS)
- return 1;
- // Setup Descriptor Allocate Info
- VkDescriptorSetAllocateInfo allocInfo = {};
- allocInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
- allocInfo.descriptorPool = descPool;
- allocInfo.pSetLayouts = &descLayout;
- allocInfo.descriptorSetCount = 1;
- // Allocate Descriptor set/s
- VkDescriptorSet descSet = {};
- res = vkAllocateDescriptorSets(_VkSystem.device, &allocInfo, &descSet);
- if (res != VK_SUCCESS)
- return 1;
- // Create some random big buffer for the Uniform block
- int uniBlockSize = sizeof(float) * 2; // vec2
- VkDeviceMemory devMemory2;
- VkBuffer uniBuffer;
- CreateBuffer(uniBlockSize, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, &uniBuffer, &devMemory2);
- VkMappedMemoryRange range;
- void* pBuffer;
- vkMapMemory(_VkSystem.device, devMemory2, 0, uniBlockSize, 0, &pBuffer);
- ((float*)pBuffer)[0] = 0.1f; // x
- ((float*)pBuffer)[1] = 0.5f; // y
- vkUnmapMemory(_VkSystem.device, devMemory2);
- // Setup Descriptor Buffer Info
- VkDescriptorBufferInfo bufferInfo = {};
- bufferInfo.buffer = uniBuffer;
- bufferInfo.range = uniBlockSize;
- // Setup Write Descriptor Set
- VkWriteDescriptorSet writeDescSet = {};
- writeDescSet.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
- writeDescSet.descriptorCount = 1;
- writeDescSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
- writeDescSet.dstSet = descSet;
- writeDescSet.pBufferInfo = &bufferInfo;
- // Update Descriptor set/s
- vkUpdateDescriptorSets(_VkSystem.device, 1, &writeDescSet, 0, 0);
- *pDescLayout = descLayout;
- *pDescSet = descSet;
- *pDevMemory = devMemory2;
- *pUniBuffer = uniBuffer;
- *pDescPool = descPool;
- return res;
- }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
