zink: Move the workaround before the EDS setting.
authorMrRobbin <mr_robbin@163.com>
Tue, 16 May 2023 05:54:49 +0000 (13:54 +0800)
committerMarge Bot <emma+marge@anholt.net>
Tue, 16 May 2023 14:04:54 +0000 (14:04 +0000)
 Then we can guarantee the settings correct, otherwise the  'screen->info.have_EXT_extended_dynamic_state3 = false' and 'screen->info.have_EXT_vertex_input_dynamic_state = false'
 will be enable, but actually we should disable it when 'have_EXT_extended_dynamic_state2 = false'.

Fixes: d5cf6f7d2f9 ("zink: disable dynamic state exts if the previous ones aren't present")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23046>

src/gallium/drivers/zink/zink_screen.c

index 6da0fa6..c2ea90a 100644 (file)
@@ -2415,6 +2415,9 @@ init_driver_workarounds(struct zink_screen *screen)
    /* EDS2 is only used with EDS1 */
    if (!screen->info.have_EXT_extended_dynamic_state)
       screen->info.have_EXT_extended_dynamic_state2 = false;
+   if (screen->info.driver_props.driverID == VK_DRIVER_ID_AMD_PROPRIETARY)
+      /* this completely breaks xfb somehow */
+      screen->info.have_EXT_extended_dynamic_state2 = false;
    /* EDS3 is only used with EDS2 */
    if (!screen->info.have_EXT_extended_dynamic_state2)
       screen->info.have_EXT_extended_dynamic_state3 = false;
@@ -2455,9 +2458,6 @@ init_driver_workarounds(struct zink_screen *screen)
                                                          screen->info.gpl_props.graphicsPipelineLibraryFastLinking ||
                                                          screen->is_cpu);
    screen->driver_workarounds.broken_l4a4 = screen->info.driver_props.driverID == VK_DRIVER_ID_NVIDIA_PROPRIETARY;
-   if (screen->info.driver_props.driverID == VK_DRIVER_ID_AMD_PROPRIETARY)
-      /* this completely breaks xfb somehow */
-      screen->info.have_EXT_extended_dynamic_state2 = false;
    if (screen->info.driver_props.driverID == VK_DRIVER_ID_MESA_TURNIP) {
       /* performance */
       screen->info.border_color_feats.customBorderColorWithoutFormat = VK_FALSE;