zink: support VK_EXT_extended_dynamic_state
just the screen parts
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7099>
diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py
index fe40617..bb9f1f8 100644
--- a/src/gallium/drivers/zink/zink_device_info.py
+++ b/src/gallium/drivers/zink/zink_device_info.py
@@ -62,6 +62,7 @@
Extension("VK_EXT_calibrated_timestamps"),
Extension("VK_EXT_custom_border_color", alias="border_color", properties=True, feature="customBorderColors"),
Extension("VK_EXT_blend_operation_advanced", alias="blend", properties=True),
+ Extension("VK_EXT_extended_dynamic_state", alias="dynamic_state", feature="extendedDynamicState"),
]
# There exists some inconsistencies regarding the enum constants, fix them.
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 5fa2a4b..f63b890 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -784,6 +784,10 @@
assert(have_device_time);
free(domains);
}
+ if (screen->info.have_EXT_extended_dynamic_state) {
+ GET_PROC_ADDR(CmdSetViewportWithCountEXT);
+ GET_PROC_ADDR(CmdSetScissorWithCountEXT);
+ }
#undef GET_PROC_ADDR
diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h
index 2439bf0..135b324 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -69,6 +69,9 @@
PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vk_GetPhysicalDeviceCalibrateableTimeDomainsEXT;
PFN_vkGetCalibratedTimestampsEXT vk_GetCalibratedTimestampsEXT;
+
+ PFN_vkCmdSetViewportWithCountEXT vk_CmdSetViewportWithCountEXT;
+ PFN_vkCmdSetScissorWithCountEXT vk_CmdSetScissorWithCountEXT;
};
static inline struct zink_screen *