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