From 5ce0ff33505599b004896503be0ce16439c6f832 Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Wed, 1 Oct 2025 11:41:08 -0400 Subject: [PATCH] fix can device present function --- projects/apis/metal/src/devices/metal_output_devices.h | 2 +- projects/apis/metal/src/devices/metal_physical_device.m | 2 +- .../apis/vulkan/src/output_device/vulkan_physical_device.c | 2 +- .../apis/vulkan/src/output_device/vulkan_physical_device.h | 2 +- projects/core/src/output_device/gryphn_physical_device.c | 2 +- projects/loader/src/gryphn_instance_functions.h | 2 +- .../function_loader/src/instance_functions.c | 5 ++--- .../function_loader/src/instance_functions.h | 2 +- 8 files changed, 9 insertions(+), 10 deletions(-) diff --git a/projects/apis/metal/src/devices/metal_output_devices.h b/projects/apis/metal/src/devices/metal_output_devices.h index 8de2ae5..c0a9754 100644 --- a/projects/apis/metal/src/devices/metal_output_devices.h +++ b/projects/apis/metal/src/devices/metal_output_devices.h @@ -23,7 +23,7 @@ struct gnPlatformOutputDevice_t { } gnPlatformOutputDevice; gnPhysicalDevice* getMetalDevices(gnInstanceHandle instance, uint32_t* deviceCount); -gnBool metalCanDevicePresent(gnPhysicalDevice device, gnWindowSurface windowSurface); +gnBool metalCanDevicePresent(gnInstance instance, gnPhysicalDevice device, gnWindowSurface windowSurface); gnReturnCode createMetalOutputDevice(gnInstanceHandle instance, gnOutputDeviceHandle outputDevice, gnOutputDeviceInfo deviceInfo); void waitForMetalDevice(gnOutputDeviceHandle device); diff --git a/projects/apis/metal/src/devices/metal_physical_device.m b/projects/apis/metal/src/devices/metal_physical_device.m index 0a7355d..a5aa13d 100644 --- a/projects/apis/metal/src/devices/metal_physical_device.m +++ b/projects/apis/metal/src/devices/metal_physical_device.m @@ -23,7 +23,7 @@ gnPhysicalDeviceProperties metalQueryPhysicalDeviceProperties(gnInstance instanc }; } -gnBool metalCanDevicePresent(gnPhysicalDevice device, gnWindowSurface windowSurface) { +gnBool metalCanDevicePresent(gnInstance instance, gnPhysicalDevice device, gnWindowSurface windowSurface) { if (device == GN_NULL_HANDLE || windowSurface == GN_NULL_HANDLE) return GN_FALSE; return GN_TRUE; // I belive that a window should always be able to present to a surface in metal } diff --git a/projects/apis/vulkan/src/output_device/vulkan_physical_device.c b/projects/apis/vulkan/src/output_device/vulkan_physical_device.c index 52eaf80..b6f45ef 100644 --- a/projects/apis/vulkan/src/output_device/vulkan_physical_device.c +++ b/projects/apis/vulkan/src/output_device/vulkan_physical_device.c @@ -173,7 +173,7 @@ vulkanNeededQueue* vulkanLoadNeededQueues(gnPhysicalDevice physicalDevice, uint3 } -gnBool deviceCanPresentToSurface(gnPhysicalDevice physicalDevice, gnWindowSurface surface) {; +gnBool deviceCanPresentToSurface(gnInstance instance, gnPhysicalDevice physicalDevice, gnWindowSurface surface) {; uint32_t queueFamilyCount = 0; vkGetPhysicalDeviceQueueFamilyProperties((VkPhysicalDevice)physicalDevice, &queueFamilyCount, NULL); for (uint32_t i = 0; i < queueFamilyCount; i++) { diff --git a/projects/apis/vulkan/src/output_device/vulkan_physical_device.h b/projects/apis/vulkan/src/output_device/vulkan_physical_device.h index ebfed29..565ccdf 100644 --- a/projects/apis/vulkan/src/output_device/vulkan_physical_device.h +++ b/projects/apis/vulkan/src/output_device/vulkan_physical_device.h @@ -14,6 +14,6 @@ gnPhysicalDeviceProperties vulkanQueryPhysicalDeviceProperties(gnInstance instan gnPhysicalDeviceFeatures vulkanQueryPhysicalDeviceFeatures(gnInstance instance, gnPhysicalDeviceHandle device, gryphnInstanceFunctionLayers* layers); gnPhysicalDeviceLimits vulkanQueryPhysicalDeviceLimits(gnInstance instance, gnPhysicalDeviceHandle device, gryphnInstanceFunctionLayers* layers); -gnBool deviceCanPresentToSurface(gnPhysicalDevice device, gnWindowSurface surface); +gnBool deviceCanPresentToSurface(gnInstance instance, gnPhysicalDevice device, gnWindowSurface surface); gnSampleCountFlags vkSampleCountToGryphn(VkSampleCountFlags counts); VkSampleCountFlags gnSampleCountToVulkan(gnSampleCountFlags counts); diff --git a/projects/core/src/output_device/gryphn_physical_device.c b/projects/core/src/output_device/gryphn_physical_device.c index a147ed0..da31c31 100644 --- a/projects/core/src/output_device/gryphn_physical_device.c +++ b/projects/core/src/output_device/gryphn_physical_device.c @@ -15,5 +15,5 @@ gnPhysicalDeviceLimits gnQueryPhysicalDeviceLimits(gnInstanceHandle instance, gn } gnBool gnPhysicalDeviceCanPresentToSurface(gnInstanceHandle instance, gnPhysicalDeviceHandle device, gnWindowSurfaceHandle windowSurface) { - return instance->callingLayer->instanceFunctions._gnPhysicalDeviceCanPresentToSurface(device, windowSurface); + return instance->callingLayer->instanceFunctions._gnPhysicalDeviceCanPresentToSurface(instance, device, windowSurface); } diff --git a/projects/loader/src/gryphn_instance_functions.h b/projects/loader/src/gryphn_instance_functions.h index 8f20594..7a3bef0 100644 --- a/projects/loader/src/gryphn_instance_functions.h +++ b/projects/loader/src/gryphn_instance_functions.h @@ -33,7 +33,7 @@ typedef gnPhysicalDeviceFeatures (*PFN_gnQueryPhysicalDeviceFeatures)(gnInstance typedef gnPhysicalDeviceLimits (*PFN_gnQueryPhysicalDeviceLimits)(gnInstanceHandle, gnPhysicalDeviceHandle, gryphnInstanceFunctionLayers*); typedef struct gnInstanceFunctions { - gnBool (*_gnPhysicalDeviceCanPresentToSurface)(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface); + gnBool (*_gnPhysicalDeviceCanPresentToSurface)(gnInstance instance, gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface); gnReturnCode (*_gnCreateOutputDevice)(gnInstanceHandle instance, gnOutputDeviceHandle device, gnOutputDeviceInfo deviceInfo); void (*_gnDestroyOutputDevice)(gnOutputDeviceHandle device); diff --git a/projects/validation_layers/function_loader/src/instance_functions.c b/projects/validation_layers/function_loader/src/instance_functions.c index 2579fb6..61b1c3b 100644 --- a/projects/validation_layers/function_loader/src/instance_functions.c +++ b/projects/validation_layers/function_loader/src/instance_functions.c @@ -77,9 +77,8 @@ gnPhysicalDeviceLimits checkQueryPhysicalDeviceLimits(gnInstanceHandle instance, return next->getPhysicalDeviceLimits(instance, device, next->next); } -gnBool checkCanDevicePresent(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) { - // CHECK_RETURNED_FUNCTION(device->instance, _gnPhysicalDeviceCanPresentToSurface, instanceFunctions, GN_FALSE, device, windowSurface); - return GN_TRUE; // this shit needs to be fixed fast, il work out a spec part for it later +gnBool checkCanDevicePresent(gnInstance instance, gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface) { + CHECK_RETURNED_FUNCTION(instance, _gnPhysicalDeviceCanPresentToSurface, instanceFunctions, GN_FALSE, instance, device, windowSurface); } gnReturnCode checkCreateOutputDevice(gnInstanceHandle instance, gnOutputDeviceHandle device, gnOutputDeviceInfo deviceInfo) { diff --git a/projects/validation_layers/function_loader/src/instance_functions.h b/projects/validation_layers/function_loader/src/instance_functions.h index 5f7bf77..da03873 100644 --- a/projects/validation_layers/function_loader/src/instance_functions.h +++ b/projects/validation_layers/function_loader/src/instance_functions.h @@ -12,7 +12,7 @@ gnPhysicalDeviceFeatures checkQueryPhysicalDeviceFeatures(gnInstanceHandle insta gnPhysicalDeviceLimits checkQueryPhysicalDeviceLimits(gnInstanceHandle instance, gnPhysicalDeviceHandle device, gryphnInstanceFunctionLayers* next); // old ahh functions (currently working on removing) -gnBool checkCanDevicePresent(gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface); +gnBool checkCanDevicePresent(gnInstance instance, gnPhysicalDevice device, gnWindowSurfaceHandle windowSurface); gnReturnCode checkCreateOutputDevice(gnInstanceHandle instance, gnOutputDeviceHandle device, gnOutputDeviceInfo deviceInfo); void checkDestroyOutputDevice(gnOutputDeviceHandle device);