function to get extensions
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
#include "vulkan_device_extensions.h"
|
||||||
|
#include "stdlib.h"
|
||||||
|
|
||||||
|
const char* *vkGetGryphnDeviceExtensions(uint32_t* count) {
|
||||||
|
const char* *extensiosns = malloc(sizeof(const char*));
|
||||||
|
extensiosns[0] = VK_KHR_SWAPCHAIN_EXTENSION_NAME;
|
||||||
|
|
||||||
|
*count = 1;
|
||||||
|
#ifdef GN_PLATFORM_MACOS
|
||||||
|
*count++;
|
||||||
|
extensiosns = realloc(sizeof(const char*), *count);
|
||||||
|
extensiosns[1] = "VK_KHR_portability_subset";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return extensiosns;
|
||||||
|
}
|
@@ -1,15 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <vulkan/vulkan.h>
|
#include <vulkan/vulkan.h>
|
||||||
|
|
||||||
#ifdef GN_PLATFORM_MACOS
|
const char* *vkGetGryphnDeviceExtensions(uint32_t* count);
|
||||||
static const uint32_t deviceExtensionCount = 2;
|
|
||||||
static const char* deviceExtensions[2] = {
|
|
||||||
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
|
|
||||||
"VK_KHR_portability_subset"
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
static const uint32_t deviceExtensionCount = 1;
|
|
||||||
static const char* deviceExtensions[1] = {
|
|
||||||
VK_KHR_SWAPCHAIN_EXTENSION_NAME
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
@@ -22,15 +22,15 @@ gnReturnCode gnCreateOutputDeviceFn(gnOutputDeviceHandle outputDevice, gnInstanc
|
|||||||
.samplerAnisotropy = VK_TRUE
|
.samplerAnisotropy = VK_TRUE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VkDeviceCreateInfo deviceCreateInfo = {
|
VkDeviceCreateInfo deviceCreateInfo = {
|
||||||
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
|
||||||
.queueCreateInfoCount = deviceInfo.queueInfoCount,
|
.queueCreateInfoCount = deviceInfo.queueInfoCount,
|
||||||
.pQueueCreateInfos = queueCreateInfos,
|
.pQueueCreateInfos = queueCreateInfos,
|
||||||
.pEnabledFeatures = &deviceFeatures,
|
.pEnabledFeatures = &deviceFeatures
|
||||||
|
|
||||||
.enabledExtensionCount = deviceExtensionCount,
|
|
||||||
.ppEnabledExtensionNames = deviceExtensions,
|
|
||||||
};
|
};
|
||||||
|
deviceCreateInfo.ppEnabledExtensionNames = vkGetGryphnDeviceExtensions(&deviceCreateInfo.enabledExtensionCount);
|
||||||
|
|
||||||
if (instance->debugger == NULL)
|
if (instance->debugger == NULL)
|
||||||
deviceCreateInfo.enabledLayerCount = 0;
|
deviceCreateInfo.enabledLayerCount = 0;
|
||||||
|
@@ -26,18 +26,26 @@ gnUniform* gnUniformPoolAllocateUniformsFn(gnUniformPool pool, gnUniformAllocati
|
|||||||
.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||||
.descriptorCount = 0
|
.descriptorCount = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
VkDescriptorPoolSize imageSize = {
|
||||||
|
.type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||||
|
.descriptorCount = 0
|
||||||
|
};
|
||||||
|
|
||||||
for (int i = 0; i < allocInfo.setCount; i++) {
|
for (int i = 0; i < allocInfo.setCount; i++) {
|
||||||
for (int c = 0; c < allocInfo.sets[i].uniformBindingCount; c++)
|
for (int c = 0; c < allocInfo.sets[i].uniformBindingCount; c++) {
|
||||||
uniformBufferSize.descriptorCount++;
|
if (allocInfo.sets[i].uniformBindings[i].type == GN_UNIFORM_BUFFER_DESCRIPTOR) uniformBufferSize.descriptorCount++;
|
||||||
|
if (allocInfo.sets[i].uniformBindings[i].type == GN_IMAGE_DESCRIPTOR) imageSize.descriptorCount++;
|
||||||
|
}
|
||||||
pool->uniformPool->pools[pool->uniformPool->poolCount].layouts[i] = vkGryphnCreateSetLayouts(&allocInfo.sets[i], pool->device->outputDevice->device);
|
pool->uniformPool->pools[pool->uniformPool->poolCount].layouts[i] = vkGryphnCreateSetLayouts(&allocInfo.sets[i], pool->device->outputDevice->device);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t maxSets = uniformBufferSize.descriptorCount;
|
uint32_t maxSets = uniformBufferSize.descriptorCount + uniformBufferSize.descriptorCount;
|
||||||
|
|
||||||
VkDescriptorPoolCreateInfo poolInfo = {
|
VkDescriptorPoolCreateInfo poolInfo = {
|
||||||
.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
|
.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
|
||||||
.poolSizeCount = 1,
|
.poolSizeCount = 1,
|
||||||
.pPoolSizes = &uniformBufferSize,
|
.pPoolSizes = (VkDescriptorPoolSize[]){ uniformBufferSize, imageSize },
|
||||||
.maxSets = maxSets
|
.maxSets = maxSets
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user