diff --git a/src/core/window_surface/gryphn_surface.c b/src/core/window_surface/gryphn_surface.c index dd9cb77..51016d0 100644 --- a/src/core/window_surface/gryphn_surface.c +++ b/src/core/window_surface/gryphn_surface.c @@ -6,17 +6,17 @@ void gnDestroyWindowSurface(struct gnWindowSurface_t *windowSurface) { } struct gnSurfaceFormat_t* gnGetSupportedSurfaceFormats( - struct gnWindowSurface_t* windowSurface, + struct gnWindowSurface_t windowSurface, struct gnPhysicalDevice_t device, uint32_t* formatCount ) { - struct gnSurfaceDetails_t surfaceDetails = windowSurface->instance->functions->_gnGetSurfaceDetails(windowSurface, device); + struct gnSurfaceDetails_t surfaceDetails = windowSurface.instance->functions->_gnGetSurfaceDetails(&windowSurface, device); *formatCount = surfaceDetails.formatCount; return surfaceDetails.formats; } gnBool gnIsSurfaceFormatSupported( - struct gnWindowSurface_t* windowSurface, + struct gnWindowSurface_t windowSurface, struct gnPhysicalDevice_t device, struct gnSurfaceFormat_t format ) { @@ -31,7 +31,7 @@ gnBool gnIsSurfaceFormatSupported( } struct gnSurfaceFormat_t gnGetPreferredSurfaceFormat( - struct gnWindowSurface_t* windowSurface, + struct gnWindowSurface_t windowSurface, struct gnPhysicalDevice_t device, struct gnSurfaceFormat_t format ) { @@ -53,11 +53,21 @@ struct gnSurfaceFormat_t gnGetPreferredSurfaceFormat( return formats[0]; } -int gnGetMinImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) { +uint32_t gnGetMinImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) { struct gnSurfaceDetails_t surfaceDetails = surface.instance->functions->_gnGetSurfaceDetails(&surface, device); return surfaceDetails.minImageCount; } -int gnGetMaxImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) { +uint32_t gnGetMaxImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) { struct gnSurfaceDetails_t surfaceDetails = surface.instance->functions->_gnGetSurfaceDetails(&surface, device); return surfaceDetails.maxImageCount; } + +uint32_t gnGetPreferredImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) { + struct gnSurfaceDetails_t surfaceDetails = surface.instance->functions->_gnGetSurfaceDetails(&surface, device); + + uint32_t imageCount = surfaceDetails.minImageCount; + if (surfaceDetails.maxImageCount > 0 && imageCount > surfaceDetails.maxImageCount) { + imageCount = surfaceDetails.maxImageCount; + } + return imageCount; +} diff --git a/src/core/window_surface/gryphn_surface.h b/src/core/window_surface/gryphn_surface.h index 695f9df..279a023 100644 --- a/src/core/window_surface/gryphn_surface.h +++ b/src/core/window_surface/gryphn_surface.h @@ -15,7 +15,7 @@ typedef struct gnSurfaceDetails_t { uint32_t formatCount; struct gnSurfaceFormat_t* formats; - int minImageCount, maxImageCount; + uint32_t minImageCount, maxImageCount; } gnSufaceDetails; typedef struct gnWindowSurface_t { @@ -24,12 +24,12 @@ typedef struct gnWindowSurface_t { } gnWindowSurface; void gnDestroyWindowSurface(struct gnWindowSurface_t* windowSurface); struct gnSurfaceFormat_t* gnGetSupportedSurfaceFormats( - struct gnWindowSurface_t* windowSurface, + struct gnWindowSurface_t windowSurface, struct gnPhysicalDevice_t device, uint32_t* formatCount ); gnBool gnIsSurfaceFormatSupported( - struct gnWindowSurface_t* windowSurface, + struct gnWindowSurface_t windowSurface, struct gnPhysicalDevice_t device, struct gnSurfaceFormat_t format ); @@ -37,9 +37,10 @@ gnBool gnIsSurfaceFormatSupported( // unless its not supported then it will give you the first supported surface format // at some point this function will attempt to give you the most simmilar surface format struct gnSurfaceFormat_t gnGetPreferredSurfaceFormat( - struct gnWindowSurface_t* windowSurface, + struct gnWindowSurface_t windowSurface, struct gnPhysicalDevice_t device, struct gnSurfaceFormat_t format ); -int gnGetMinImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device); -int gnGetMaxImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device); +uint32_t gnGetMinImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device); +uint32_t gnGetMaxImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device); +uint32_t gnGetPreferredImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device);