destroy device lifecycle

This commit is contained in:
2026-05-08 00:33:27 -04:00
parent 4087972149
commit dca85ff7e8
6 changed files with 17 additions and 1 deletions
@@ -9,3 +9,9 @@ gnReturnCode gnCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo,
*device = newDevice;
return instance->dispatchTable.createDevice(instance, createInfo, newDevice);
}
gnReturnCode gnDestroyDevice(gnDevice* device) {
gnReturnCode returnCode = (*device)->dispatchTable.destroyDevice(*device);
*device = NULL;
return returnCode;
}
@@ -13,3 +13,4 @@ typedef struct gnDevice_t {
} gnDevice_t;
gnReturnCode gnCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice* device);
gnReturnCode gnDestroyDevice(gnDevice* device);
@@ -1,7 +1,8 @@
#pragma once
#include "gryphn_handle.h"
typedef gnReturnCode (*PFN_gnDestroyDevice)(gnDevice);
typedef struct gnDeviceDispatchTable {
PFN_gnDestroyDevice destroyDevice;
} gnDeviceDispatchTable;
@@ -57,6 +57,12 @@ gnReturnCode metalGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysica
}
gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device) {
device->dispatchTable.destroyDevice = metalDestroyDevice;
device->internalData = createInfo->physicalDevice->internalData;
return GN_SUCCESS;
}
gnReturnCode metalDestroyDevice(gnDevice device) {
// [device->internalData release];
return GN_SUCCESS;
}
@@ -8,3 +8,4 @@
gnReturnCode metalEnumeratePhysicalDevices(gnInstance instance, uint32_t* deviceCount, gnPhysicalDevice* devices);
gnReturnCode metalGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysicalDeviceProperties* properties);
gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device);
gnReturnCode metalDestroyDevice(gnDevice device);
+1
View File
@@ -68,5 +68,6 @@ int main() {
std::cerr << "Caught Exception: " << e.what() << "\n";
return 0;
}
gnDestroyDevice(&device);
gnDestroyInstance(&instance);
}