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,
._gnDestroyInstance = destroyMetalInstance,
._gnGetPhysicalDevices = getMetalDevices,
._gnQueueCanPresentToSurface = metalCanQueuePresentToSurface,
._gnPhysicalDeviceCanPresentToSurface = metalCanDevicePresent,
._gnCreateOutputDevice = createMetalOutputDevice,
._gnDestroyOutputDevice = destroyMetalOutputDevice,
._gnCreateMacOSWindowSurface = createMetalSurface,

View File

@@ -17,7 +17,7 @@ struct gnPlatformOutputDevice_t {
} gnPlatformOutputDevice;
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);
void waitForMetalDevice(gnOutputDeviceHandle device);

View File

@@ -45,6 +45,6 @@ gnPhysicalDevice* getMetalDevices(gnInstanceHandle instance, uint32_t* deviceCou
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
}

View File

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

View File

@@ -16,7 +16,7 @@ typedef struct gnPlatformPhysicalDevice_t {
} gnPlatformPhysicalDevice;
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);

View File

@@ -8,55 +8,47 @@ gnPhysicalOutputDeviceHandle* gnGetPhyscialDevices(gnInstanceHandle instance, ui
return devices;
}
gnBool gnQueueCanPresentToSurface(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface) {
// if (queueIndex >= device.queueProperties.queueCount) {
// 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 gnPhysicalDeviceCanPresentToSurface(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface) {
return device->instance->callingLayer->instanceFunctions._gnPhysicalDeviceCanPresentToSurface(device, 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; }
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; }

View File

@@ -57,14 +57,14 @@ typedef struct gnPhysicalOutputDevice_t {
#endif
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);
gnPhysicalDeviceFeatures gnGetPhysicalDeviceFeatures(gnPhysicalOutputDeviceHandle device);
// gnPhysicalDeviceProperties gnGetPhysicalDeviceProperties(gnPhysicalOutputDeviceHandle device);
// gnPhysicalDeviceFeatures gnGetPhysicalDeviceFeatures(gnPhysicalOutputDeviceHandle device);
// gnPhysicalDeviceQueueProperties gnGetPhysicalDeviceQueueProperties(gnPhysicalOutputDeviceHandle device);
gnBool gnHasGraphicsQueue(gnPhysicalOutputDeviceHandle device);
gnBool gnHasPresentQueue(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);
// gnBool gnHasGraphicsQueue(gnPhysicalOutputDeviceHandle device);
// gnBool gnHasPresentQueue(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);
int gnGetGraphicsQueueIndex(gnPhysicalOutputDeviceHandle device);
int gnGetPresentQueueIndex(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);
// int gnGetGraphicsQueueIndex(gnPhysicalOutputDeviceHandle device);
// int gnGetPresentQueueIndex(gnPhysicalOutputDeviceHandle device, gnWindowSurfaceHandle windowSurface);

View File

@@ -23,7 +23,7 @@ typedef struct gnInstanceFunctions {
void (*_gnDestroyInstance)(gnInstanceHandle instance);
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);
void (*_gnDestroyOutputDevice)(gnOutputDeviceHandle device);

View File

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

View File

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

View File

@@ -6,7 +6,7 @@ gnReturnCode checkCreateInstance(gnInstanceHandle instance, gnInstanceInfo info)
void checkDestroyInstance(gnInstance instance);
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);
void checkDestroyOutputDevice(gnOutputDeviceHandle device);