finish removing the Queue API

This commit is contained in:
Greg Wells
2025-07-15 11:50:09 -04:00
parent 125c45662d
commit 6e2669b084
11 changed files with 56 additions and 64 deletions

View File

@@ -8,7 +8,7 @@ gnInstanceFunctions loadMetalInstanceFunctions() {
._gnCreateInstance = createMetalInstance, ._gnCreateInstance = createMetalInstance,
._gnDestroyInstance = destroyMetalInstance, ._gnDestroyInstance = destroyMetalInstance,
._gnGetPhysicalDevices = getMetalDevices, ._gnGetPhysicalDevices = getMetalDevices,
._gnQueueCanPresentToSurface = metalCanQueuePresentToSurface, ._gnPhysicalDeviceCanPresentToSurface = metalCanDevicePresent,
._gnCreateOutputDevice = createMetalOutputDevice, ._gnCreateOutputDevice = createMetalOutputDevice,
._gnDestroyOutputDevice = destroyMetalOutputDevice, ._gnDestroyOutputDevice = destroyMetalOutputDevice,
._gnCreateMacOSWindowSurface = createMetalSurface, ._gnCreateMacOSWindowSurface = createMetalSurface,

View File

@@ -17,7 +17,7 @@ struct gnPlatformOutputDevice_t {
} gnPlatformOutputDevice; } gnPlatformOutputDevice;
gnPhysicalDevice* getMetalDevices(gnInstanceHandle instance, uint32_t* deviceCount); gnPhysicalDevice* getMetalDevices(gnInstanceHandle instance, uint32_t* deviceCount);
gnBool metalCanQueuePresentToSurface(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurface windowSurface); gnBool metalCanDevicePresent(gnPhysicalDevice device, gnWindowSurface windowSurface);
gnReturnCode createMetalOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo); gnReturnCode createMetalOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo);
void waitForMetalDevice(gnOutputDeviceHandle device); void waitForMetalDevice(gnOutputDeviceHandle device);

View File

@@ -45,6 +45,6 @@ gnPhysicalDevice* getMetalDevices(gnInstanceHandle instance, uint32_t* deviceCou
return devicesList; return devicesList;
} }
gnBool metalCanQueuePresentToSurface(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurface windowSurface) { gnBool metalCanDevicePresent(gnPhysicalDevice device, gnWindowSurface windowSurface) {
return gnTrue; // I belive that a window should always be able to present to a surface in metal return gnTrue; // I belive that a window should always be able to present to a surface in metal
} }

View File

@@ -10,7 +10,7 @@ gnInstanceFunctions loadVulkanInstanceFunctions() {
._gnDestroyInstance = destroyInstance, ._gnDestroyInstance = destroyInstance,
._gnGetPhysicalDevices = getPhysicalDevices, ._gnGetPhysicalDevices = getPhysicalDevices,
._gnQueueCanPresentToSurface = queueCanPresentToSurface, ._gnPhysicalDeviceCanPresentToSurface = deviceCanPresentToSurface,
._gnCreateOutputDevice = createOutputDevice, ._gnCreateOutputDevice = createOutputDevice,
._gnDestroyOutputDevice = destroyOutputDevice, ._gnDestroyOutputDevice = destroyOutputDevice,

View File

@@ -16,7 +16,7 @@ typedef struct gnPlatformPhysicalDevice_t {
} gnPlatformPhysicalDevice; } gnPlatformPhysicalDevice;
gnPhysicalDevice* getPhysicalDevices(gnInstanceHandle instance, uint32_t* deviceCount); gnPhysicalDevice* getPhysicalDevices(gnInstanceHandle instance, uint32_t* deviceCount);
gnBool queueCanPresentToSurface(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface); gnBool deviceCanPresentToSurface(gnPhysicalDevice device, gnWindowSurface surface);
gnMultisampleCountFlags vkSampleCountToGryphn(VkSampleCountFlags counts); gnMultisampleCountFlags vkSampleCountToGryphn(VkSampleCountFlags counts);

View File

@@ -8,55 +8,47 @@ gnPhysicalOutputDeviceHandle* gnGetPhyscialDevices(gnInstanceHandle instance, ui
return devices; return devices;
} }
gnBool gnQueueCanPresentToSurface(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface) { gnBool gnPhysicalDeviceCanPresentToSurface(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface) {
// if (queueIndex >= device.queueProperties.queueCount) { return device->instance->callingLayer->instanceFunctions._gnPhysicalDeviceCanPresentToSurface(device, windowSurface);
// gnDebuggerSetErrorMessage(device.instance->debugger,
// (gnMessageData){
// .message = gnCreateString("gnQueueCanPresentToSurface queue index passed in is large then queueProperties.queueCount")
// }
// );
// return gnFalse;
// }
return device->instance->callingLayer->instanceFunctions._gnQueueCanPresentToSurface(device, queueIndex, windowSurface);
} }
gnBool gnHasGraphicsQueue(gnPhysicalDevice device) {
for (int i = 0; i < device->queueProperties.queueCount; i++) {
if ((device->queueProperties.queueProperties[i].queueType & GN_QUEUE_GRAPHICS) == GN_QUEUE_GRAPHICS) {
return gnTrue;
}
}
return gnFalse;
}
gnBool gnHasPresentQueue(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) {
for (int i = 0; i < device->queueProperties.queueCount; i++) {
if (gnQueueCanPresentToSurface(device, i, windowSurface)) {
return gnTrue;
}
}
return gnFalse;
}
int gnGetGraphicsQueueIndex(gnPhysicalDevice device) {
for (int i = 0; i < device->queueProperties.queueCount; i++) {
if ((device->queueProperties.queueProperties[i].queueType & GN_QUEUE_GRAPHICS) == GN_QUEUE_GRAPHICS) {
return i;
break;
}
}
return -1;
}
int gnGetPresentQueueIndex(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) {
for (int i = 0; i < device->queueProperties.queueCount; i++) {
if (gnQueueCanPresentToSurface(device, i, windowSurface)) {
return i;
break;
}
}
return -1;
}
gnPhysicalDeviceProperties gnGetPhysicalDeviceProperties(gnPhysicalOutputDeviceHandle device) { return device->properties; } gnPhysicalDeviceProperties gnGetPhysicalDeviceProperties(gnPhysicalOutputDeviceHandle device) { return device->properties; }
gnPhysicalDeviceFeatures gnGetPhysicalDeviceFeatures(gnPhysicalOutputDeviceHandle device) { return device->features; } gnPhysicalDeviceFeatures gnGetPhysicalDeviceFeatures(gnPhysicalOutputDeviceHandle device) { return device->features; }
// gnBool gnHasGraphicsQueue(gnPhysicalDevice device) {
// for (int i = 0; i < device->queueProperties.queueCount; i++) {
// if ((device->queueProperties.queueProperties[i].queueType & GN_QUEUE_GRAPHICS) == GN_QUEUE_GRAPHICS) {
// return gnTrue;
// }
// }
// return gnFalse;
// }
// gnBool gnHasPresentQueue(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) {
// for (int i = 0; i < device->queueProperties.queueCount; i++) {
// if (gnQueueCanPresentToSurface(device, i, windowSurface)) {
// return gnTrue;
// }
// }
// return gnFalse;
// }
// int gnGetGraphicsQueueIndex(gnPhysicalDevice device) {
// for (int i = 0; i < device->queueProperties.queueCount; i++) {
// if ((device->queueProperties.queueProperties[i].queueType & GN_QUEUE_GRAPHICS) == GN_QUEUE_GRAPHICS) {
// return i;
// break;
// }
// }
// return -1;
// }
// int gnGetPresentQueueIndex(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) {
// for (int i = 0; i < device->queueProperties.queueCount; i++) {
// if (gnQueueCanPresentToSurface(device, i, windowSurface)) {
// return i;
// break;
// }
// }
// return -1;
// }
// gnPhysicalDeviceQueueProperties gnGetPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device) { return device->queueProperties; } // gnPhysicalDeviceQueueProperties gnGetPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device) { return device->queueProperties; }

View File

@@ -57,14 +57,14 @@ typedef struct gnPhysicalOutputDevice_t {
#endif #endif
gnPhysicalOutputDeviceHandle* gnGetPhyscialDevices(gnInstanceHandle instance, uint32_t* count); gnPhysicalOutputDeviceHandle* gnGetPhyscialDevices(gnInstanceHandle instance, uint32_t* count);
gnBool gnQueueCanPresentToSurface(gnPhysicalOutputDeviceHandle device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface); gnBool gnPhysicalDeviceCanPresentToSurface(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);
gnPhysicalDeviceProperties gnGetPhysicalDeviceProperties(gnPhysicalOutputDeviceHandle device); // gnPhysicalDeviceProperties gnGetPhysicalDeviceProperties(gnPhysicalOutputDeviceHandle device);
gnPhysicalDeviceFeatures gnGetPhysicalDeviceFeatures(gnPhysicalOutputDeviceHandle device); // gnPhysicalDeviceFeatures gnGetPhysicalDeviceFeatures(gnPhysicalOutputDeviceHandle device);
// gnPhysicalDeviceQueueProperties gnGetPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device); // gnPhysicalDeviceQueueProperties gnGetPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device);
gnBool gnHasGraphicsQueue(gnPhysicalOutputDeviceHandle device); // gnBool gnHasGraphicsQueue(gnPhysicalOutputDeviceHandle device);
gnBool gnHasPresentQueue(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface); // gnBool gnHasPresentQueue(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);
int gnGetGraphicsQueueIndex(gnPhysicalOutputDeviceHandle device); // int gnGetGraphicsQueueIndex(gnPhysicalOutputDeviceHandle device);
int gnGetPresentQueueIndex(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface); // int gnGetPresentQueueIndex(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);

View File

@@ -23,7 +23,7 @@ typedef struct gnInstanceFunctions {
void (*_gnDestroyInstance)(gnInstanceHandle instance); void (*_gnDestroyInstance)(gnInstanceHandle instance);
gnPhysicalDevice* (*_gnGetPhysicalDevices)(gnInstanceHandle instance, uint32_t* count); gnPhysicalDevice* (*_gnGetPhysicalDevices)(gnInstanceHandle instance, uint32_t* count);
gnBool (*_gnQueueCanPresentToSurface)(gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface); gnBool (*_gnPhysicalDeviceCanPresentToSurface)(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface);
gnReturnCode (*_gnCreateOutputDevice)(gnOutputDeviceHandle device, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo); gnReturnCode (*_gnCreateOutputDevice)(gnOutputDeviceHandle device, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo);
void (*_gnDestroyOutputDevice)(gnOutputDeviceHandle device); void (*_gnDestroyOutputDevice)(gnOutputDeviceHandle device);

View File

@@ -10,7 +10,7 @@ gnInstanceFunctions loadFunctionLoaderInstanceFunctions() {
._gnDestroyInstance = checkDestroyInstance, ._gnDestroyInstance = checkDestroyInstance,
._gnGetPhysicalDevices = checkGetPhysicalDevices, ._gnGetPhysicalDevices = checkGetPhysicalDevices,
._gnQueueCanPresentToSurface = checkQueueCanPresentToSurface, ._gnPhysicalDeviceCanPresentToSurface = checkCanDevicePresent,
._gnCreateOutputDevice = checkCreateOutputDevice, ._gnCreateOutputDevice = checkCreateOutputDevice,
._gnDestroyOutputDevice = checkDestroyOutputDevice, ._gnDestroyOutputDevice = checkDestroyOutputDevice,

View File

@@ -15,8 +15,8 @@ void checkDestroyInstance(gnInstance instance) {
gnPhysicalDevice* checkGetPhysicalDevices(gnInstanceHandle instance, uint32_t* count) { gnPhysicalDevice* checkGetPhysicalDevices(gnInstanceHandle instance, uint32_t* count) {
CHECK_RETURNED_FUNCTION(instance, _gnGetPhysicalDevices, instanceFunctions, NULL, instance, count); CHECK_RETURNED_FUNCTION(instance, _gnGetPhysicalDevices, instanceFunctions, NULL, instance, count);
} }
gnBool checkQueueCanPresentToSurface(gnPhysicalDevice device, uint32_t queueIndex, const gnWindowSurfaceHandle windowSurface) { gnBool checkCanDevicePresent(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) {
CHECK_RETURNED_FUNCTION(device->instance, _gnQueueCanPresentToSurface, instanceFunctions, gnFalse, device, queueIndex, windowSurface); CHECK_RETURNED_FUNCTION(device->instance, _gnPhysicalDeviceCanPresentToSurface, instanceFunctions, gnFalse, device, windowSurface);
} }
gnReturnCode checkCreateOutputDevice(gnOutputDeviceHandle device, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo) { gnReturnCode checkCreateOutputDevice(gnOutputDeviceHandle device, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo) {

View File

@@ -6,7 +6,7 @@ gnReturnCode checkCreateInstance(gnInstanceHandle instance, gnInstanceInfo info)
void checkDestroyInstance(gnInstance instance); void checkDestroyInstance(gnInstance instance);
gnPhysicalDevice* checkGetPhysicalDevices(gnInstanceHandle instance, uint32_t* count); gnPhysicalDevice* checkGetPhysicalDevices(gnInstanceHandle instance, uint32_t* count);
gnBool checkQueueCanPresentToSurface(const gnPhysicalDevice device, uint32_t queueIndex, const gnWindowSurfaceHandle windowSurface); gnBool checkCanDevicePresent(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface);
gnReturnCode checkCreateOutputDevice(gnOutputDeviceHandle device, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo); gnReturnCode checkCreateOutputDevice(gnOutputDeviceHandle device, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo);
void checkDestroyOutputDevice(gnOutputDeviceHandle device); void checkDestroyOutputDevice(gnOutputDeviceHandle device);