[vulkan] Query custom border color properties based on device report

This commit is contained in:
CamilleLaVey 2026-02-16 00:52:00 -04:00 committed by crueter
parent b4ea751a2c
commit 090f0318ce
2 changed files with 28 additions and 0 deletions

View File

@ -1103,6 +1103,20 @@ bool Device::GetSuitability(bool requires_swapchain) {
// Unload extensions if feature support is insufficient.
RemoveUnsuitableExtensions();
// Query VK_EXT_custom_border_color properties if the extension is enabled.
if (extensions.custom_border_color) {
const auto fp = reinterpret_cast<PFN_vkGetPhysicalDeviceCustomBorderColorPropertiesEXT>(
dld.vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceCustomBorderColorPropertiesEXT"));
if (fp != nullptr) {
custom_border_color_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;
custom_border_color_properties.pNext = nullptr;
fp(physical, &custom_border_color_properties);
has_custom_border_color_properties = true;
} else {
has_custom_border_color_properties = false;
}
}
// Check limits.
struct Limit {
u32 minimum;

View File

@ -595,6 +595,16 @@ public:
return features.custom_border_color.customBorderColorWithoutFormat;
}
/// Returns true if physical device custom border color properties were queried.
bool HasCustomBorderColorProperties() const {
return has_custom_border_color_properties;
}
/// Returns the queried VkPhysicalDeviceCustomBorderColorPropertiesEXT.
const VkPhysicalDeviceCustomBorderColorPropertiesEXT& GetCustomBorderColorProperties() const {
return custom_border_color_properties;
}
/// Returns true if the device supports VK_EXT_extended_dynamic_state.
bool IsExtExtendedDynamicStateSupported() const {
return extensions.extended_dynamic_state;
@ -619,6 +629,10 @@ public:
return extensions.filter_cubic;
}
/// Custom border color properties retrieved from the physical device (if available).
VkPhysicalDeviceCustomBorderColorPropertiesEXT custom_border_color_properties{};
bool has_custom_border_color_properties = false;
/// Returns true if the device supports VK_QCOM_filter_cubic_weights.
bool IsQcomFilterCubicWeightsSupported() const {
return extensions.filter_cubic_weights;