Module: Mesa
Branch: master
Commit: f2573760b478329deb7598a75123762480d1c0ce
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2573760b478329deb7598a75123762480d1c0ce

Author: Adam Jackson <[email protected]>
Date:   Wed Dec 16 17:44:50 2020 -0500

zink: Factor out instance setup a bit more

The VkInstance is really display state not screen state, as is the
loader version. Factor this out a bit further so that
zink_create_instance fills in a zink_instance_info. The latter struct
still lives in the zink_screen for now but that'll move soon.

Reviewed-By: Mike Blumenkrantz <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8968>

---

 src/gallium/drivers/zink/zink_instance.py | 20 +++++++++++---------
 src/gallium/drivers/zink/zink_screen.c    |  5 +++--
 src/gallium/drivers/zink/zink_screen.h    |  2 --
 3 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_instance.py 
b/src/gallium/drivers/zink/zink_instance.py
index a57ee32bcd6..45a90422c27 100644
--- a/src/gallium/drivers/zink/zink_instance.py
+++ b/src/gallium/drivers/zink/zink_instance.py
@@ -32,7 +32,7 @@ import sys
 # constructor: Extension(name, core_since=None, functions=[])
 # The attributes:
 #  - core_since: the Vulkan version where this extension is promoted to core.
-#                When screen->loader_version is greater than or equal to this
+#                When instance_info->loader_version is greater than or equal 
to this
 #                instance_info.have_{name} is set to true unconditionally. This
 #                is done because loading extensions that are promoted to core 
is
 #                considered to be an error.
@@ -80,6 +80,8 @@ header_code = """
 struct zink_screen;
 
 struct zink_instance_info {
+   uint32_t loader_version;
+
 %for ext in extensions:
    bool have_${ext.name_with_vendor()};
 %endfor
@@ -90,7 +92,7 @@ struct zink_instance_info {
 };
 
 VkInstance
-zink_create_instance(struct zink_screen *screen);
+zink_create_instance(struct zink_instance_info *instance_info);
 
 bool
 zink_load_instance_extensions(struct zink_screen *screen);
@@ -103,7 +105,7 @@ impl_code = """
 #include "zink_screen.h"
 
 VkInstance
-zink_create_instance(struct zink_screen *screen)
+zink_create_instance(struct zink_instance_info *instance_info)
 {
    /* reserve one slot for MoltenVK */
    const char *layers[${len(extensions) + 1}] = { 0 };
@@ -138,7 +140,7 @@ zink_create_instance(struct zink_screen *screen)
                     extensions[num_extensions++] = 
${ext.extension_name_literal()};
                 }
             %else:
-                if (screen->loader_version < ${ext.core_since.version()}) {
+                if (instance_info->loader_version < 
${ext.core_since.version()}) {
                    if (!strcmp(extension_props[i].extensionName, 
${ext.extension_name_literal()})) {
                         have_${ext.name_with_vendor()} = true;
                         extensions[num_extensions++] = 
${ext.extension_name_literal()};
@@ -185,7 +187,7 @@ zink_create_instance(struct zink_screen *screen)
     }
 
 %for ext in extensions:
-   screen->instance_info.have_${ext.name_with_vendor()} = 
have_${ext.name_with_vendor()};
+   instance_info->have_${ext.name_with_vendor()} = 
have_${ext.name_with_vendor()};
 %endfor
 
 %for layer in layers:
@@ -198,7 +200,7 @@ zink_create_instance(struct zink_screen *screen)
 %>\
    if (have_layer_${layer.pure_name()} ${conditions}) {
       layers[num_layers++] = ${layer.extension_name_literal()};
-      screen->instance_info.have_layer_${layer.pure_name()} = true;
+      instance_info->have_layer_${layer.pure_name()} = true;
    }
 %endfor
 
@@ -212,7 +214,7 @@ zink_create_instance(struct zink_screen *screen)
       ai.pApplicationName = "unknown";
 
    ai.pEngineName = "mesa zink";
-   ai.apiVersion = screen->loader_version;
+   ai.apiVersion = instance_info->loader_version;
 
    VkInstanceCreateInfo ici = {};
    ici.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
@@ -234,7 +236,7 @@ bool
 zink_load_instance_extensions(struct zink_screen *screen)
 {
    if (zink_debug & ZINK_DEBUG_VALIDATION) {
-      printf("zink: Loader %d.%d.%d \\n", 
VK_VERSION_MAJOR(screen->loader_version), 
VK_VERSION_MINOR(screen->loader_version), 
VK_VERSION_PATCH(screen->loader_version));
+      printf("zink: Loader %d.%d.%d \\n", 
VK_VERSION_MAJOR(screen->instance_info.loader_version), 
VK_VERSION_MINOR(screen->instance_info.loader_version), 
VK_VERSION_PATCH(screen->instance_info.loader_version));
    }
 
 %for ext in extensions:
@@ -247,7 +249,7 @@ zink_load_instance_extensions(struct zink_screen *screen)
    }
 %elif bool(ext.instance_funcs):
    if (screen->instance_info.have_${ext.name_with_vendor()}) {
-      if (screen->loader_version < ${ext.core_since.version()}) {
+      if (screen->instance_info.loader_version < ${ext.core_since.version()}) {
       %for func in ext.instance_funcs:
          GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, 
${func}${ext.vendor()});
          screen->vk_${func} = vk_${func}${ext.vendor()};
diff --git a/src/gallium/drivers/zink/zink_screen.c 
b/src/gallium/drivers/zink/zink_screen.c
index b5b1896f0cb..75f08ff3a04 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -1164,8 +1164,9 @@ zink_internal_create_screen(const struct 
pipe_screen_config *config)
 
    zink_debug = debug_get_option_zink_debug();
 
-   screen->loader_version = zink_get_loader_version();
-   screen->instance = zink_create_instance(screen);
+   screen->instance_info.loader_version = zink_get_loader_version();
+   screen->instance = zink_create_instance(&screen->instance_info);
+
    if (!screen->instance)
       goto fail;
 
diff --git a/src/gallium/drivers/zink/zink_screen.h 
b/src/gallium/drivers/zink/zink_screen.h
index aa16a2ad500..fac576352c1 100644
--- a/src/gallium/drivers/zink/zink_screen.h
+++ b/src/gallium/drivers/zink/zink_screen.h
@@ -73,8 +73,6 @@ struct zink_screen {
 
    uint32_t cur_custom_border_color_samplers;
 
-   uint32_t loader_version;
-
    bool needs_mesa_wsi;
 
    PFN_vkGetPhysicalDeviceFeatures2 vk_GetPhysicalDeviceFeatures2;

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to