hk: gate custom border colour emulation on feature
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35181>
diff --git a/src/asahi/vulkan/hk_sampler.c b/src/asahi/vulkan/hk_sampler.c
index cbc57a7..4a30d4d 100644
--- a/src/asahi/vulkan/hk_sampler.c
+++ b/src/asahi/vulkan/hk_sampler.c
@@ -178,7 +178,6 @@
{
VK_FROM_HANDLE(hk_device, dev, device);
struct hk_physical_device *pdev = hk_device_physical(dev);
- struct hk_instance *instance = (struct hk_instance *)pdev->vk.instance;
struct hk_sampler *sampler;
VkResult result;
@@ -186,7 +185,7 @@
if (!sampler)
return vk_error(dev, VK_ERROR_OUT_OF_HOST_MEMORY);
- bool workaround_rgba4 = instance->workaround_rgba4;
+ bool workaround_rgba4 = dev->vk.enabled_features.customBorderColors;
bool custom_border =
uses_border(info) &&
is_border_color_custom(info->borderColor, workaround_rgba4);
diff --git a/src/asahi/vulkan/hk_shader.c b/src/asahi/vulkan/hk_shader.c
index 9726121..f306d61 100644
--- a/src/asahi/vulkan/hk_shader.c
+++ b/src/asahi/vulkan/hk_shader.c
@@ -224,6 +224,7 @@
enum hk_feature_key {
HK_FEAT_MIN_LOD = BITFIELD_BIT(0),
+ HK_FEAT_CUSTOM_BORDER = BITFIELD_BIT(1),
};
static enum hk_feature_key
@@ -232,7 +233,8 @@
if (!features)
return ~0U;
- return (features->minLod ? HK_FEAT_MIN_LOD : 0);
+ return (features->minLod ? HK_FEAT_MIN_LOD : 0) |
+ (features->customBorderColors ? HK_FEAT_CUSTOM_BORDER : 0);
}
static void
@@ -716,7 +718,7 @@
NIR_PASS(_, nir, agx_nir_lower_image_view_min_lod);
}
- if (!HK_PERF(dev, NOBORDER)) {
+ if ((features & HK_FEAT_CUSTOM_BORDER) && !HK_PERF(dev, NOBORDER)) {
NIR_PASS(_, nir, agx_nir_lower_custom_border);
}