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
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#ifdef GN_PLATFORM_MACOS
|
||||
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
|
||||
const char* *vkGetGryphnDeviceExtensions(uint32_t* count);
|
||||
|
@@ -22,15 +22,15 @@ gnReturnCode gnCreateOutputDeviceFn(gnOutputDeviceHandle outputDevice, gnInstanc
|
||||
.samplerAnisotropy = VK_TRUE
|
||||
};
|
||||
|
||||
|
||||
|
||||
VkDeviceCreateInfo deviceCreateInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
|
||||
.queueCreateInfoCount = deviceInfo.queueInfoCount,
|
||||
.pQueueCreateInfos = queueCreateInfos,
|
||||
.pEnabledFeatures = &deviceFeatures,
|
||||
|
||||
.enabledExtensionCount = deviceExtensionCount,
|
||||
.ppEnabledExtensionNames = deviceExtensions,
|
||||
.pEnabledFeatures = &deviceFeatures
|
||||
};
|
||||
deviceCreateInfo.ppEnabledExtensionNames = vkGetGryphnDeviceExtensions(&deviceCreateInfo.enabledExtensionCount);
|
||||
|
||||
if (instance->debugger == NULL)
|
||||
deviceCreateInfo.enabledLayerCount = 0;
|
||||
|
@@ -26,18 +26,26 @@ gnUniform* gnUniformPoolAllocateUniformsFn(gnUniformPool pool, gnUniformAllocati
|
||||
.type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
.descriptorCount = 0
|
||||
};
|
||||
|
||||
VkDescriptorPoolSize imageSize = {
|
||||
.type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
.descriptorCount = 0
|
||||
};
|
||||
|
||||
for (int i = 0; i < allocInfo.setCount; i++) {
|
||||
for (int c = 0; c < allocInfo.sets[i].uniformBindingCount; c++)
|
||||
uniformBufferSize.descriptorCount++;
|
||||
for (int c = 0; c < allocInfo.sets[i].uniformBindingCount; c++) {
|
||||
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);
|
||||
}
|
||||
|
||||
uint32_t maxSets = uniformBufferSize.descriptorCount;
|
||||
uint32_t maxSets = uniformBufferSize.descriptorCount + uniformBufferSize.descriptorCount;
|
||||
|
||||
VkDescriptorPoolCreateInfo poolInfo = {
|
||||
.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
|
||||
.poolSizeCount = 1,
|
||||
.pPoolSizes = &uniformBufferSize,
|
||||
.pPoolSizes = (VkDescriptorPoolSize[]){ uniformBufferSize, imageSize },
|
||||
.maxSets = maxSets
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user