Mesa (master): v3dv: move extensions table to v3dv_device
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Apr 28 09:26:20 UTC 2021
Module: Mesa
Branch: master
Commit: 79e445143054a8001cf28ccb6803148a67f1bb55
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=79e445143054a8001cf28ccb6803148a67f1bb55
Author: Alejandro Piñeiro <apinheiro at igalia.com>
Date: Tue Apr 27 14:01:48 2021 +0200
v3dv: move extensions table to v3dv_device
So one less python generator. Based on anv (MR#8792) and radv
(MR#8900).
With this change v3dv doesn't have any more a custom python code
generator.
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10484>
---
src/broadcom/vulkan/meson.build | 24 +----
src/broadcom/vulkan/v3dv_device.c | 62 +++++++++++-
src/broadcom/vulkan/v3dv_extensions.py | 149 -----------------------------
src/broadcom/vulkan/v3dv_extensions_gen.py | 52 ----------
src/broadcom/vulkan/v3dv_private.h | 2 -
5 files changed, 58 insertions(+), 231 deletions(-)
diff --git a/src/broadcom/vulkan/meson.build b/src/broadcom/vulkan/meson.build
index 33942ab38ef..90813980724 100644
--- a/src/broadcom/vulkan/meson.build
+++ b/src/broadcom/vulkan/meson.build
@@ -29,28 +29,6 @@ v3dv_entrypoints = custom_target(
depend_files : vk_entrypoints_gen_depend_files,
)
-v3dv_extensions_c = custom_target(
- 'v3dv_extensions.c',
- input : ['v3dv_extensions_gen.py', vk_api_xml],
- output : 'v3dv_extensions.c',
- command : [
- prog_python, '@INPUT0@', '--xml', '@INPUT1@',
- '--out-c', '@OUTPUT@',
- ],
- depend_files : [files('v3dv_extensions.py'), vk_extensions_gen],
-)
-
-v3dv_extensions_h = custom_target(
- 'v3dv_extensions.h',
- input : ['v3dv_extensions_gen.py', vk_api_xml],
- output : 'v3dv_extensions.h',
- command : [
- prog_python, '@INPUT0@', '--xml', '@INPUT1@',
- '--out-h', '@OUTPUT@',
- ],
- depend_files : [files('v3dv_extensions.py'), vk_extensions_gen],
-)
-
libv3dv_files = files(
'v3dv_bo.c',
'v3dv_cl.c',
@@ -119,7 +97,7 @@ endif
libvulkan_broadcom = shared_library(
'vulkan_broadcom',
- [libv3dv_files, v3dv_entrypoints, v3dv_extensions_c, v3dv_extensions_h, sha1_h],
+ [libv3dv_files, v3dv_entrypoints, sha1_h],
include_directories : [
inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_broadcom, inc_compiler, inc_util, inc_vulkan_wsi,
],
diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c
index b6c2c99369f..8a7c9f6db2e 100644
--- a/src/broadcom/vulkan/v3dv_device.c
+++ b/src/broadcom/vulkan/v3dv_device.c
@@ -88,6 +88,59 @@ static const VkAllocationCallbacks default_alloc = {
.pfnFree = default_free_func,
};
+#define V3DV_API_VERSION VK_MAKE_VERSION(1, 0, VK_HEADER_VERSION)
+
+VkResult
+v3dv_EnumerateInstanceVersion(uint32_t *pApiVersion)
+{
+ *pApiVersion = V3DV_API_VERSION;
+ return VK_SUCCESS;
+}
+
+#define V3DV_HAS_SURFACE (VK_USE_PLATFORM_WIN32_KHR || \
+ VK_USE_PLATFORM_WAYLAND_KHR || \
+ VK_USE_PLATFORM_XCB_KHR || \
+ VK_USE_PLATFORM_XLIB_KHR || \
+ VK_USE_PLATFORM_DISPLAY_KHR)
+
+static const struct vk_instance_extension_table instance_extensions = {
+#ifdef VK_USE_PLATFORM_DISPLAY_KHR
+ .KHR_display = true,
+#endif
+ .KHR_external_memory_capabilities = true,
+ .KHR_get_physical_device_properties2 = true,
+#ifdef V3DV_HAS_SURFACE
+ .KHR_get_surface_capabilities2 = true,
+ .KHR_surface = true,
+#endif
+#ifdef VK_USE_PLATFORM_WAYLAND_KHR
+ .KHR_wayland_surface = true,
+#endif
+#ifdef VK_USE_PLATFORM_XCB_KHR
+ .KHR_xcb_surface = true,
+#endif
+#ifdef VK_USE_PLATFORM_XLIB_KHR
+ .KHR_xlib_surface = true,
+#endif
+ .EXT_debug_report = true,
+};
+
+static void
+get_device_extensions(const struct v3dv_physical_device *device,
+ struct vk_device_extension_table *ext)
+{
+ *ext = (struct vk_device_extension_table) {
+ .KHR_external_memory = true,
+ .KHR_external_memory_fd = true,
+ .KHR_maintenance1 = true,
+#ifdef V3DV_HAS_SURFACE
+ .KHR_swapchain = true,
+#endif
+ .EXT_external_memory_dma_buf = true,
+ .EXT_private_data = true,
+ };
+}
+
VkResult
v3dv_EnumerateInstanceExtensionProperties(const char *pLayerName,
uint32_t *pPropertyCount,
@@ -98,7 +151,7 @@ v3dv_EnumerateInstanceExtensionProperties(const char *pLayerName,
return vk_error(NULL, VK_ERROR_LAYER_NOT_PRESENT);
return vk_enumerate_instance_extension_properties(
- &v3dv_instance_extensions_supported, pPropertyCount, pProperties);
+ &instance_extensions, pPropertyCount, pProperties);
}
VkResult
@@ -124,7 +177,7 @@ v3dv_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
&dispatch_table, &v3dv_instance_entrypoints, true);
result = vk_instance_init(&instance->vk,
- &v3dv_instance_extensions_supported,
+ &instance_extensions,
&dispatch_table,
pCreateInfo, pAllocator);
@@ -722,8 +775,7 @@ physical_device_init(struct v3dv_physical_device *device,
goto fail;
}
- v3dv_physical_device_get_supported_extensions(device,
- &device->vk.supported_extensions);
+ get_device_extensions(device, &device->vk.supported_extensions);
pthread_mutex_init(&device->mutex, NULL);
@@ -1151,7 +1203,7 @@ v3dv_GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
};
*pProperties = (VkPhysicalDeviceProperties) {
- .apiVersion = v3dv_physical_device_api_version(pdevice),
+ .apiVersion = V3DV_API_VERSION,
.driverVersion = vk_get_driver_version(),
.vendorID = v3dv_physical_device_vendor_id(pdevice),
.deviceID = v3dv_physical_device_device_id(pdevice),
diff --git a/src/broadcom/vulkan/v3dv_extensions.py b/src/broadcom/vulkan/v3dv_extensions.py
deleted file mode 100644
index d59ce466043..00000000000
--- a/src/broadcom/vulkan/v3dv_extensions.py
+++ /dev/null
@@ -1,149 +0,0 @@
-COPYRIGHT = """\
-/*
- * Copyright 2017 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-"""
-
-import copy
-import re
-
-def _bool_to_c_expr(b):
- if b is True:
- return 'true'
- if b is False:
- return 'false'
- return b
-
-class Extension:
- def __init__(self, name, ext_version, enable):
- self.name = name
- self.ext_version = int(ext_version)
- self.enable = _bool_to_c_expr(enable)
-
-class ApiVersion:
- def __init__(self, version, enable):
- self.version = version
- self.enable = _bool_to_c_expr(enable)
-
-API_PATCH_VERSION = 155
-
-# 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', True),
- ApiVersion('1.1', False),
-]
-
-MAX_API_VERSION = None # Computed later
-
-EXTENSIONS = [
- Extension('VK_KHR_display', 23, 'VK_USE_PLATFORM_DISPLAY_KHR'),
- Extension('VK_KHR_external_memory', 1, True),
- Extension('VK_KHR_external_memory_capabilities', 1, True),
- Extension('VK_KHR_external_memory_fd', 1, True),
- Extension('VK_KHR_get_physical_device_properties2', 1, True),
- Extension('VK_KHR_get_surface_capabilities2', 1, 'V3DV_HAS_SURFACE'),
- Extension('VK_KHR_maintenance1', 2, True),
- Extension('VK_KHR_surface', 25, 'V3DV_HAS_SURFACE'),
- Extension('VK_KHR_swapchain', 68, 'V3DV_HAS_SURFACE'),
- 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_EXT_debug_report', 9, True),
- Extension('VK_EXT_external_memory_dma_buf', 1, True),
- Extension('VK_EXT_image_drm_format_modifier', 1, False),
- Extension('VK_EXT_private_data', 1, True),
-]
-
-# Sort the extension list the way we expect: KHR, then EXT, then vendors
-# alphabetically. For digits, read them as a whole number sort that.
-# eg.: VK_KHR_8bit_storage < VK_KHR_16bit_storage < VK_EXT_acquire_xlib_display
-def extension_order(ext):
- order = []
- for substring in re.split('(KHR|EXT|[0-9]+)', ext.name):
- if substring == 'KHR':
- order.append(1)
- if substring == 'EXT':
- order.append(2)
- elif substring.isdigit():
- order.append(int(substring))
- else:
- order.append(substring)
- return order
-for i in range(len(EXTENSIONS) - 1):
- if extension_order(EXTENSIONS[i + 1]) < extension_order(EXTENSIONS[i]):
- print(EXTENSIONS[i + 1].name + ' should come before ' + EXTENSIONS[i].name)
- exit(1)
-
-class VkVersion:
- def __init__(self, string):
- split = string.split('.')
- self.major = int(split[0])
- self.minor = int(split[1])
- if len(split) > 2:
- assert len(split) == 3
- self.patch = int(split[2])
- else:
- self.patch = None
-
- # Sanity check. The range bits are required by the definition of the
- # VK_MAKE_VERSION macro
- assert self.major < 1024 and self.minor < 1024
- assert self.patch is None or self.patch < 4096
- assert str(self) == string
-
- def __str__(self):
- ver_list = [str(self.major), str(self.minor)]
- if self.patch is not None:
- ver_list.append(str(self.patch))
- return '.'.join(ver_list)
-
- def c_vk_version(self):
- patch = self.patch if self.patch is not None else 0
- ver_list = [str(self.major), str(self.minor), str(patch)]
- return 'VK_MAKE_VERSION(' + ', '.join(ver_list) + ')'
-
- def __int_ver(self):
- # This is just an expansion of VK_VERSION
- patch = self.patch if self.patch is not None else 0
- return (self.major << 22) | (self.minor << 12) | patch
-
- def __gt__(self, other):
- # If only one of them has a patch version, "ignore" it by making
- # other's patch version match self.
- if (self.patch is None) != (other.patch is None):
- other = copy.copy(other)
- other.patch = self.patch
-
- return self.__int_ver() > other.__int_ver()
-
-
-
-MAX_API_VERSION = VkVersion('0.0.0')
-for version in API_VERSIONS:
- version.version = VkVersion(version.version)
- version.version.patch = API_PATCH_VERSION
- assert version.version > MAX_API_VERSION
- MAX_API_VERSION = version.version
diff --git a/src/broadcom/vulkan/v3dv_extensions_gen.py b/src/broadcom/vulkan/v3dv_extensions_gen.py
deleted file mode 100644
index f60e564b993..00000000000
--- a/src/broadcom/vulkan/v3dv_extensions_gen.py
+++ /dev/null
@@ -1,52 +0,0 @@
-COPYRIGHT = """\
-/*
- * Copyright 2017 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-"""
-
-import os.path
-import sys
-
-from v3dv_extensions import *
-
-VULKAN_UTIL = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../vulkan/util'))
-sys.path.append(VULKAN_UTIL)
-
-from vk_extensions_gen import *
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--out-c', help='Output C file.')
- parser.add_argument('--out-h', help='Output H file.')
- parser.add_argument('--xml',
- help='Vulkan API XML file.',
- required=True,
- action='append',
- dest='xml_files')
- args = parser.parse_args()
-
- includes = [
- ]
-
- gen_extensions('v3dv', args.xml_files, API_VERSIONS, MAX_API_VERSION,
- EXTENSIONS, args.out_c, args.out_h)
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index 67bde1d774d..4f4e6107c0b 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -69,7 +69,6 @@
#include "u_atomic.h"
#include "v3dv_entrypoints.h"
-#include "v3dv_extensions.h"
#include "v3dv_bo.h"
#include "drm-uapi/v3d_drm.h"
@@ -1878,7 +1877,6 @@ v3dv_get_internal_depth_type(VkFormat format)
}
}
-uint32_t v3dv_physical_device_api_version(struct v3dv_physical_device *dev);
uint32_t v3dv_physical_device_vendor_id(struct v3dv_physical_device *dev);
uint32_t v3dv_physical_device_device_id(struct v3dv_physical_device *dev);
More information about the mesa-commit
mailing list