summaryrefslogtreecommitdiff
path: root/registry/vulkan/scripts/cereal/wrapperdefs.py
blob: 9b96987559dc4722933547d23cc760d12e74254b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Copyright (c) 2018 The Android Open Source Project
# Copyright (c) 2018 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from .common.codegen import VulkanWrapperGenerator
from .common.vulkantypes import makeVulkanTypeSimple

# Contains definitions for various Vulkan API wrappers. This information is
# shared to make it easier for one kind of wrapper to know how to call
# another one.

API_PREFIX_MARSHAL = "marshal_"
API_PREFIX_UNMARSHAL = "unmarshal_"
API_PREFIX_RESERVEDMARSHAL = "reservedmarshal_"
API_PREFIX_RESERVEDUNMARSHAL = "reservedunmarshal_"

MARSHAL_INPUT_VAR_NAME = "forMarshaling"
UNMARSHAL_INPUT_VAR_NAME = "forUnmarshaling"

API_PREFIX_VALIDATE = "validate_"
API_PREFIX_FRONTEND = "goldfish_frontend_"

VULKAN_STREAM_TYPE = "VulkanStream"
VULKAN_STREAM_TYPE_GUEST = "VulkanStreamGuest"
VULKAN_STREAM_VAR_NAME = "vkStream"

VALIDATE_RESULT_TYPE = "VkResult"
VALIDATE_VAR_NAME = "validateResult"
VALIDATE_GOOD_RESULT = "VK_SUCCESS"

ROOT_TYPE_VAR_NAME = "rootType"
ROOT_TYPE_DEFAULT_VALUE = "VK_STRUCTURE_TYPE_MAX_ENUM"
ROOT_TYPE_TYPE = "VkStructureType"
ROOT_TYPE_PARAM = makeVulkanTypeSimple(
    False, ROOT_TYPE_TYPE, 0, ROOT_TYPE_VAR_NAME)

PARAMETERS_MARSHALING = [
    makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE, 1, VULKAN_STREAM_VAR_NAME),
    ROOT_TYPE_PARAM,
]
PARAMETERS_MARSHALING_GUEST = [
    makeVulkanTypeSimple(False, VULKAN_STREAM_TYPE_GUEST,
                         1, VULKAN_STREAM_VAR_NAME),
    ROOT_TYPE_PARAM,
]
PARAMETERS_VALIDATE = [
    makeVulkanTypeSimple(False, VALIDATE_RESULT_TYPE, 1, VALIDATE_VAR_NAME)
]
PARAMETERS_COUNTING = [
    makeVulkanTypeSimple(False, "size_t", 1, VULKAN_STREAM_VAR_NAME)
]

STRUCT_EXTENSION_PARAM = \
    makeVulkanTypeSimple(True, "void", 1, "structExtension")

STRUCT_EXTENSION_PARAM2 = \
    makeVulkanTypeSimple(True, "void", 1, "structExtension2")

STRUCT_EXTENSION_PARAM_FOR_WRITE = \
    makeVulkanTypeSimple(False, "void", 1, "structExtension_out")

STRUCT_TYPE_API_NAME = "goldfish_vk_struct_type"
EXTENSION_SIZE_API_NAME = "goldfish_vk_extension_struct_size"
EXTENSION_SIZE_WITH_STREAM_FEATURES_API_NAME = "goldfish_vk_extension_struct_size_with_stream_features"

VOID_TYPE = makeVulkanTypeSimple(False, "void", 0)
STREAM_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)

API_PREFIX_EQUALITY = "checkEqual_"
EQUALITY_VAR_NAMES = ["a", "b"]
EQUALITY_ON_FAIL_VAR = "onFail"
EQUALITY_ON_FAIL_VAR_TYPE = makeVulkanTypeSimple(False, "OnFailCompareFunc", 0,
                                                 EQUALITY_ON_FAIL_VAR)
EQUALITY_RET_TYPE = makeVulkanTypeSimple(False, "void", 0)

RELAXED_APIS = [
    "vkWaitForFences",
    "vkWaitSemaphores",
    "vkWaitSemaphoresKHR",
    "vkQueueWaitIdle",
    "vkDeviceWaitIdle",
    "vkQueueFlushCommandsGOOGLE",
]

STYPE_OVERRIDE = {
    "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT",
    "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT",
    "VkRenderPassFragmentDensityMapCreateInfoEXT": "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT",
    "VkImportColorBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_COLOR_BUFFER_GOOGLE",
    "VkImportBufferGOOGLE": "VK_STRUCTURE_TYPE_IMPORT_BUFFER_GOOGLE",
    "VkCreateBlobGOOGLE": "VK_STRUCTURE_TYPE_CREATE_BLOB_GOOGLE",
}

MAX_PACKET_LENGTH = "(400 * 1024 * 1024) // 400MB"