adding device selection, buffer creation and pipeline creation to Metal backend

This commit is contained in:
2025-09-07 01:04:15 +02:00
parent 231e8f2687
commit e9f01cf268
27 changed files with 848 additions and 16 deletions

View File

@@ -167,13 +167,17 @@ PulseDevice VulkanCreateDevice(PulseBackend backend, PulseDevice* forbiden_devic
instance->vkGetPhysicalDeviceMemoryProperties(device->physical, &device->memory_properties);
instance->vkGetPhysicalDeviceFeatures(device->physical, &device->features);
const char* extensions[] = {
"VK_KHR_portability_subset",
};
VkDeviceCreateInfo create_info = { 0 };
create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
create_info.queueCreateInfoCount = unique_queues_count;
create_info.pQueueCreateInfos = queue_create_infos;
create_info.pEnabledFeatures = &device->features;
create_info.enabledExtensionCount = 0;
create_info.ppEnabledExtensionNames = PULSE_NULLPTR;
create_info.enabledExtensionCount = 1;
create_info.ppEnabledExtensionNames = extensions;
create_info.enabledLayerCount = 0;
create_info.ppEnabledLayerNames = PULSE_NULLPTR;
create_info.flags = 0;

View File

@@ -115,7 +115,7 @@ static VkInstance VulkanCreateInstance(PulseBackend backend, const char** extens
create_info.pApplicationInfo = &app_info;
create_info.enabledExtensionCount = extensions_count;
create_info.ppEnabledExtensionNames = extensions_enabled;
#ifdef PULSE_PLAT_MACOS
#ifdef PULSE_PLAT_APPLE
create_info.flags = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
#else
create_info.flags = 0;
@@ -151,7 +151,7 @@ static VkInstance VulkanCreateInstance(PulseBackend backend, const char** extens
bool VulkanInitInstance(PulseBackend backend, VulkanInstance* instance, PulseDebugLevel debug_level)
{
#ifdef PULSE_PLAT_MACOS
#ifdef PULSE_PLAT_APPLE
const char* extensions[] = {
VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
};

View File

@@ -40,7 +40,7 @@ bool VulkanInitLoader()
const char* libnames[] = {
"vulkan-1.dll"
};
#elif defined(PULSE_PLAT_MACOS)
#elif defined(PULSE_PLAT_APPLE)
const char* libnames[] = {
"libvulkan.dylib",
"libvulkan.1.dylib",