anv: Make blorp update the clear color.
[mesa.git] / src / intel / vulkan / anv_extensions.py
index 676efa434295cb75d0f97df27547fb4fc014d0c0..d0b70a04055857b3a429299b148202aee5840738 100644 (file)
@@ -29,18 +29,38 @@ import copy
 import re
 import xml.etree.cElementTree as et
 
-MAX_API_VERSION = '1.0.57'
+def _bool_to_c_expr(b):
+    if b is True:
+        return 'true';
+    elif b is False:
+        return 'false';
+    else:
+        return b;
 
 class Extension:
     def __init__(self, name, ext_version, enable):
         self.name = name
         self.ext_version = int(ext_version)
-        if enable is True:
-            self.enable = 'true';
-        elif enable is False:
-            self.enable = 'false';
-        else:
-            self.enable = enable;
+        self.enable = _bool_to_c_expr(enable)
+
+class ApiVersion:
+    def __init__(self, max_patch_version, enable):
+        self.max_patch_version = max_patch_version
+        self.enable = _bool_to_c_expr(enable)
+
+# Supported API versions.  Each one is the maximum patch version for the given
+# version.  Version come in increasing order and each version is available if
+# it's provided "enable" condition is true and all previous versions are
+# available.
+API_VERSIONS = [
+    ApiVersion('1.0.57',    True),
+
+    # DRM_IOCTL_SYNCOBJ_WAIT is required for VK_KHR_external_fence which is a
+    # required core feature in Vulkan 1.1
+    ApiVersion('1.1.0',     'device->has_syncobj_wait'),
+]
+
+MAX_API_VERSION = None # Computed later
 
 # On Android, we disable all surface and swapchain extensions. Android's Vulkan
 # loader implements VK_KHR_surface and VK_KHR_swapchain, and applications
@@ -53,6 +73,8 @@ EXTENSIONS = [
     Extension('VK_KHR_bind_memory2',                      1, True),
     Extension('VK_KHR_dedicated_allocation',              1, True),
     Extension('VK_KHR_descriptor_update_template',        1, True),
+    Extension('VK_KHR_device_group',                      1, True),
+    Extension('VK_KHR_device_group_creation',             1, True),
     Extension('VK_KHR_external_fence',                    1,
               'device->has_syncobj_wait'),
     Extension('VK_KHR_external_fence_capabilities',       1, True),
@@ -71,6 +93,7 @@ EXTENSIONS = [
     Extension('VK_KHR_incremental_present',               1, 'ANV_HAS_SURFACE'),
     Extension('VK_KHR_maintenance1',                      1, True),
     Extension('VK_KHR_maintenance2',                      1, True),
+    Extension('VK_KHR_maintenance3',                      1, True),
     Extension('VK_KHR_push_descriptor',                   1, True),
     Extension('VK_KHR_relaxed_block_layout',              1, True),
     Extension('VK_KHR_sampler_mirror_clamp_to_edge',      1, True),
@@ -83,7 +106,7 @@ EXTENSIONS = [
     Extension('VK_KHR_wayland_surface',                   6, 'VK_USE_PLATFORM_WAYLAND_KHR'),
     Extension('VK_KHR_xcb_surface',                       6, 'VK_USE_PLATFORM_XCB_KHR'),
     Extension('VK_KHR_xlib_surface',                      6, 'VK_USE_PLATFORM_XLIB_KHR'),
-    Extension('VK_KHX_multiview',                         1, '!ANDROID'),
+    Extension('VK_KHR_multiview',                         1, True),
     Extension('VK_EXT_debug_report',                      8, True),
     Extension('VK_EXT_external_memory_dma_buf',           1, True),
     Extension('VK_EXT_global_priority',                   1,
@@ -132,4 +155,9 @@ class VkVersion:
 
         return self.__int_ver().__cmp__(other.__int_ver())
 
-MAX_API_VERSION = VkVersion(MAX_API_VERSION)
+
+MAX_API_VERSION = VkVersion('0.0.0')
+for version in API_VERSIONS:
+    version.max_patch_version = VkVersion(version.max_patch_version)
+    assert version.max_patch_version > MAX_API_VERSION
+    MAX_API_VERSION = version.max_patch_version