xref: /aosp_15_r20/external/mesa3d/src/gfxstream/codegen/scripts/cereal/wrapperdefs.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1# Copyright 2018 Google LLC
2# SPDX-License-Identifier: MIT
3
4from .common.codegen import VulkanWrapperGenerator
5from .common.vulkantypes import makeVulkanTypeSimple
6
7# Contains definitions for various Vulkan API wrappers. This information is
8# shared to make it easier for one kind of wrapper to know how to call
9# another one.
10
11API_PREFIX_MARSHAL = "marshal_"
12API_PREFIX_UNMARSHAL = "unmarshal_"
13API_PREFIX_RESERVEDMARSHAL = "reservedmarshal_"
14API_PREFIX_RESERVEDUNMARSHAL = "reservedunmarshal_"
15
16MARSHAL_INPUT_VAR_NAME = "forMarshaling"
17UNMARSHAL_INPUT_VAR_NAME = "forUnmarshaling"
18
19API_PREFIX_VALIDATE = "validate_"
20API_PREFIX_FRONTEND = "goldfish_frontend_"
21
22VULKAN_STREAM_TYPE = "VulkanStream"
23VULKAN_STREAM_TYPE_GUEST = "VulkanStreamGuest"
24VULKAN_STREAM_VAR_NAME = "vkStream"
25
26VALIDATE_RESULT_TYPE = "VkResult"
27VALIDATE_VAR_NAME = "validateResult"
28VALIDATE_GOOD_RESULT = "VK_SUCCESS"
29
30ROOT_TYPE_VAR_NAME = "rootType"
31ROOT_TYPE_DEFAULT_VALUE = "VK_STRUCTURE_TYPE_MAX_ENUM"
32ROOT_TYPE_TYPE = "VkStructureType"
33ROOT_TYPE_PARAM = makeVulkanTypeSimple(
34    False, ROOT_TYPE_TYPE, 0, ROOT_TYPE_VAR_NAME)
35
36PARAMETERS_MARSHALING = [
37    makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE, 1, VULKAN_STREAM_VAR_NAME),
38    ROOT_TYPE_PARAM,
39]
40PARAMETERS_MARSHALING_GUEST = [
41    makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE_GUEST,
42                         1, VULKAN_STREAM_VAR_NAME),
43    ROOT_TYPE_PARAM,
44]
45PARAMETERS_VALIDATE = [
46    makeVulkanTypeSimple(False, VALIDATE_RESULT_TYPE, 1, VALIDATE_VAR_NAME)
47]
48PARAMETERS_COUNTING = [
49    makeVulkanTypeSimple(False, "size_t", 1, VULKAN_STREAM_VAR_NAME)
50]
51
52STRUCT_EXTENSION_PARAM = \
53    makeVulkanTypeSimple(True, "void", 1, "structExtension")
54
55STRUCT_EXTENSION_PARAM2 = \
56    makeVulkanTypeSimple(True, "void", 1, "structExtension2")
57
58STRUCT_EXTENSION_PARAM_FOR_WRITE = \
59    makeVulkanTypeSimple(False, "void", 1, "structExtension_out")
60
61STRUCT_TYPE_API_NAME = "goldfish_vk_struct_type"
62EXTENSION_SIZE_API_NAME = "goldfish_vk_extension_struct_size"
63EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME = "goldfish_vk_extension_struct_size_with_stream_features"
64
65VOID_TYPE = makeVulkanTypeSimple(False, "void", 0)
66STREAM_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
67
68API_PREFIX_EQUALITY = "checkEqual_"
69EQUALITY_VAR_NAMES = ["a", "b"]
70EQUALITY_ON_FAIL_VAR = "onFail"
71EQUALITY_ON_FAIL_VAR_TYPE = makeVulkanTypeSimple(False, "OnFailCompareFunc", 0,
72                                                 EQUALITY_ON_FAIL_VAR)
73EQUALITY_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)
74
75RELAXED_APIS = [
76    "vkWaitForFences",
77    "vkWaitSemaphores",
78    "vkWaitSemaphoresKHR",
79    "vkQueueWaitIdle",
80    "vkDeviceWaitIdle",
81    "vkQueueFlushCommandsGOOGLE",
82]
83
84STYPE_OVERRIDE = {
85    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT",
86    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT",
87    "VkRenderPassFragmentDensityMapCreateInfoEXT": "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT",
88    "VkImportColorBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE",
89    "VkImportBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE",
90    "VkCreateBlobGOOGLE": "VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE",
91}
92
93MAX_PACKET_LENGTH = "(400 * 1024 * 1024) // 400MB"
94
95
96
97