null_driver.cpp revision d02edcbb40d476b6d3b5ae279a6ccef786be8848
1d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall/* 2d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * Copyright 2015 The Android Open Source Project 3d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * 4d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * Licensed under the Apache License, Version 2.0 (the "License"); 5d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * you may not use this file except in compliance with the License. 6d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * You may obtain a copy of the License at 7d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * 8d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * http://www.apache.org/licenses/LICENSE-2.0 9d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * 10d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * Unless required by applicable law or agreed to in writing, software 11d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * distributed under the License is distributed on an "AS IS" BASIS, 12d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * See the License for the specific language governing permissions and 14d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall * limitations under the License. 15d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall */ 16d02edcbb40d476b6d3b5ae279a6ccef786be8848Jesse Hall 1704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#include <hardware/hwvulkan.h> 1804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 19f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall#include <array> 2004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#include <algorithm> 21bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall#include <inttypes.h> 22bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall#include <string.h> 2304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 2473ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// #define LOG_NDEBUG 0 2573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall#include <log/log.h> 2604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#include <utils/Errors.h> 2704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 2804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#include "null_driver.h" 2904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 3004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallusing namespace null_driver; 3104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 3204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallstruct VkPhysicalDevice_T { 3304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall hwvulkan_dispatch_t dispatch; 3404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall}; 3504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 3604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallstruct VkInstance_T { 3704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall hwvulkan_dispatch_t dispatch; 3804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall const VkAllocCallbacks* alloc; 3904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkPhysicalDevice_T physical_device; 4004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall}; 4104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 4204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallstruct VkQueue_T { 4304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall hwvulkan_dispatch_t dispatch; 4404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall}; 4504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 4604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallstruct VkCmdBuffer_T { 4704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall hwvulkan_dispatch_t dispatch; 4804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall}; 4904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 50f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hallnamespace { 51f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// Handles for non-dispatchable objects are either pointers, or arbitrary 52f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// 64-bit non-zero values. We only use pointers when we need to keep state for 53f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// the object even in a null driver. For the rest, we form a handle as: 54f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// [63:63] = 1 to distinguish from pointer handles* 55f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// [62:56] = non-zero handle type enum value 56f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// [55: 0] = per-handle-type incrementing counter 57f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// * This works because virtual addresses with the high bit set are reserved 58f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// for kernel data in all ABIs we run on. 59f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// 60f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// We never reclaim handles on vkDestroy*. It's not even necessary for us to 61f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// have distinct handles for live objects, and practically speaking we won't 62f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// ever create 2^56 objects of the same type from a single VkDevice in a null 63f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// driver. 64f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// 65f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// Using a namespace here instead of 'enum class' since we want scoped 66f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// constants but also want implicit conversions to integral types. 67f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hallnamespace HandleType { 68c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hallenum Enum { 69c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kAttachmentView, 70c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kBufferView, 71c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kCmdPool, 72c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDescriptorPool, 73c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDescriptorSet, 74c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDescriptorSetLayout, 75c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDynamicColorBlendState, 76c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDynamicDepthStencilState, 77c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDynamicRasterState, 78c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kDynamicViewportState, 79c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kEvent, 80c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kFence, 81c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kFramebuffer, 82c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kImageView, 83c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kPipeline, 84c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kPipelineCache, 85c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kPipelineLayout, 86c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kQueryPool, 87c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kRenderPass, 88c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kSampler, 89c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kSemaphore, 90c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kShader, 91c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kShaderModule, 92c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall 93c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall kNumTypes 94c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall}; 95c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall} // namespace HandleType 96f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Halluint64_t AllocHandle(VkDevice device, HandleType::Enum type); 97bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall 98bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hallconst VkDeviceSize kMaxDeviceMemory = VkDeviceSize(INTPTR_MAX) + 1; 99bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall 100c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall} // anonymous namespace 101f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall 10204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallstruct VkDevice_T { 10304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall hwvulkan_dispatch_t dispatch; 10404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkInstance_T* instance; 10504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkQueue_T queue; 106f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall std::array<uint64_t, HandleType::kNumTypes> next_handle; 10704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall}; 10804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 10904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall// ----------------------------------------------------------------------------- 11004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall// Declare HAL_MODULE_INFO_SYM early so it can be referenced by nulldrv_device 11104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall// later. 11204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 11304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallnamespace { 11404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallint OpenDevice(const hw_module_t* module, const char* id, hw_device_t** device); 11504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallhw_module_methods_t nulldrv_module_methods = {.open = OpenDevice}; 11604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} // namespace 11704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 11804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#pragma clang diagnostic push 11904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#pragma clang diagnostic ignored "-Wmissing-variable-declarations" 12004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall__attribute__((visibility("default"))) hwvulkan_module_t HAL_MODULE_INFO_SYM = { 12104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .common = 12204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall { 12304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .tag = HARDWARE_MODULE_TAG, 12404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .module_api_version = HWVULKAN_MODULE_API_VERSION_0_1, 12504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .hal_api_version = HARDWARE_HAL_API_VERSION, 12604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .id = HWVULKAN_HARDWARE_MODULE_ID, 12704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .name = "Null Vulkan Driver", 12804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .author = "The Android Open Source Project", 12904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .methods = &nulldrv_module_methods, 13004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall }, 13104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall}; 13204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#pragma clang diagnostic pop 13304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 13404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall// ----------------------------------------------------------------------------- 13504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 13604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallnamespace { 13704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 13804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult CreateInstance(const VkInstanceCreateInfo* create_info, 13904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkInstance* out_instance) { 14004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkInstance_T* instance = 14104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall static_cast<VkInstance_T*>(create_info->pAllocCb->pfnAlloc( 14204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall create_info->pAllocCb->pUserData, sizeof(VkInstance_T), 14304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall alignof(VkInstance_T), VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); 14404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall if (!instance) 14504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 14604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 14704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall instance->dispatch.magic = HWVULKAN_DISPATCH_MAGIC; 14804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall instance->alloc = create_info->pAllocCb; 14904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall instance->physical_device.dispatch.magic = HWVULKAN_DISPATCH_MAGIC; 15004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 15104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall *out_instance = instance; 15204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 15304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 15404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 15504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallint CloseDevice(struct hw_device_t* /*device*/) { 15604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall // nothing to do - opening a device doesn't allocate any resources 15704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return 0; 15804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 15904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 16004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallhwvulkan_device_t nulldrv_device = { 16104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .common = 16204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall { 16304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .tag = HARDWARE_DEVICE_TAG, 16404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .version = HWVULKAN_DEVICE_API_VERSION_0_1, 16504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .module = &HAL_MODULE_INFO_SYM.common, 16604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .close = CloseDevice, 16704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall }, 16804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .GetGlobalExtensionProperties = GetGlobalExtensionProperties, 16904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .CreateInstance = CreateInstance, 17004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall .GetInstanceProcAddr = GetInstanceProcAddr}; 17104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 17204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallint OpenDevice(const hw_module_t* /*module*/, 17304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall const char* id, 17404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall hw_device_t** device) { 17504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall if (strcmp(id, HWVULKAN_DEVICE_0) == 0) { 17604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall *device = &nulldrv_device.common; 17704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return 0; 17804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall } 17904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return -ENOENT; 18004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 18104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 18204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkInstance_T* GetInstanceFromPhysicalDevice( 18304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkPhysicalDevice_T* physical_device) { 18404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return reinterpret_cast<VkInstance_T*>( 18504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall reinterpret_cast<uintptr_t>(physical_device) - 18604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall offsetof(VkInstance_T, physical_device)); 18704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 18804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 189f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Halluint64_t AllocHandle(VkDevice device, HandleType::Enum type) { 190f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const uint64_t kHandleMask = (UINT64_C(1) << 56) - 1; 191f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall ALOGE_IF(device->next_handle[type] == kHandleMask, 192bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall "non-dispatchable handles of type=%u are about to overflow", type); 193f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall return (UINT64_C(1) << 63) | ((uint64_t(type) & 0x7) << 56) | 194f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall (device->next_handle[type]++ & kHandleMask); 195f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall} 196f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall 19704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} // namespace 19804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 19904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallnamespace null_driver { 20004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 201f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Halltemplate <typename HandleT> 202f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hallstruct HandleTraits {}; 203f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 204f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Halltemplate <typename HandleT> 205f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Halltypename HandleTraits<HandleT>::PointerType GetObjectFromHandle( 206f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall const HandleT& h) { 207f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall return reinterpret_cast<typename HandleTraits<HandleT>::PointerType>( 208f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall uintptr_t(h.handle)); 209f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall} 210f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 211f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Halltemplate <typename T> 212f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Halltypename T::HandleType GetHandleToObject(const T* obj) { 213f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall return typename T::HandleType(reinterpret_cast<uintptr_t>(obj)); 214f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall} 215f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 21673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// ----------------------------------------------------------------------------- 21773ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// Global 21873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall 21973ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse HallVkResult GetGlobalExtensionProperties(const char*, 22073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall uint32_t* count, 22173ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall VkExtensionProperties*) { 22273ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall *count = 0; 22373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall return VK_SUCCESS; 22473ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall} 22573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall 22604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallPFN_vkVoidFunction GetInstanceProcAddr(VkInstance, const char* name) { 22704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall PFN_vkVoidFunction proc = LookupInstanceProcAddr(name); 22804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall if (!proc && strcmp(name, "vkGetDeviceProcAddr") == 0) 22904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall proc = reinterpret_cast<PFN_vkVoidFunction>(GetDeviceProcAddr); 23004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return proc; 23104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 23204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 23304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallPFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) { 23404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return LookupDeviceProcAddr(name); 23504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 23604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 23773ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// ----------------------------------------------------------------------------- 23873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// Instance 23973ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall 24004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult DestroyInstance(VkInstance instance) { 24104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall instance->alloc->pfnFree(instance->alloc->pUserData, instance); 24204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 24304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 24404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 24573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// ----------------------------------------------------------------------------- 24673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// PhysicalDevice 24773ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall 24804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult EnumeratePhysicalDevices(VkInstance instance, 24904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall uint32_t* physical_device_count, 25004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkPhysicalDevice* physical_devices) { 25104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall if (physical_devices && *physical_device_count >= 1) 25204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall physical_devices[0] = &instance->physical_device; 25304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall *physical_device_count = 1; 25404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 25504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 25604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 25704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult GetPhysicalDeviceProperties(VkPhysicalDevice, 25804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkPhysicalDeviceProperties* properties) { 25904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall properties->apiVersion = VK_API_VERSION; 26004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall properties->driverVersion = VK_MAKE_VERSION(0, 0, 1); 26104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall properties->vendorId = 0xC0DE; 26204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall properties->deviceId = 0xCAFE; 26304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall properties->deviceType = VK_PHYSICAL_DEVICE_TYPE_OTHER; 26404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall strcpy(properties->deviceName, "Android Vulkan Null Driver"); 26504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall memset(properties->pipelineCacheUUID, 0, 26604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall sizeof(properties->pipelineCacheUUID)); 26704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 26804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 26904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 27073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse HallVkResult GetPhysicalDeviceMemoryProperties( 27173ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall VkPhysicalDevice, 27273ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall VkPhysicalDeviceMemoryProperties* properties) { 27373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall properties->memoryTypeCount = 1; 27473ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall properties->memoryTypes[0].propertyFlags = 27573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; 27673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall properties->memoryTypes[0].heapIndex = 0; 27773ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall properties->memoryHeapCount = 1; 278bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall properties->memoryHeaps[0].size = kMaxDeviceMemory; 27973ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_HOST_LOCAL; 28004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 28104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 28204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 28373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// ----------------------------------------------------------------------------- 28473ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall// Device 28573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall 28604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult CreateDevice(VkPhysicalDevice physical_device, 28704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall const VkDeviceCreateInfo*, 28804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkDevice* out_device) { 28904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkInstance_T* instance = GetInstanceFromPhysicalDevice(physical_device); 29004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VkDevice_T* device = static_cast<VkDevice_T*>(instance->alloc->pfnAlloc( 29104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall instance->alloc->pUserData, sizeof(VkDevice_T), alignof(VkDevice_T), 29204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); 29304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall if (!device) 29404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 29504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 29604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall device->dispatch.magic = HWVULKAN_DISPATCH_MAGIC; 29704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall device->instance = instance; 29804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall device->queue.dispatch.magic = HWVULKAN_DISPATCH_MAGIC; 299f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall std::fill(device->next_handle.begin(), device->next_handle.end(), 300f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall UINT64_C(0)); 30104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 30204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall *out_device = device; 30304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 30404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 30504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 30604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult DestroyDevice(VkDevice device) { 30704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall if (!device) 30804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 30904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 31004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall alloc->pfnFree(alloc->pUserData, device); 31104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 31204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 31304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 31404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) { 31504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall *queue = &device->queue; 31604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 31704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 31804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 31904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall// ----------------------------------------------------------------------------- 320c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall// CmdBuffer 321c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall 322c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse HallVkResult CreateCommandBuffer(VkDevice device, 323c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall const VkCmdBufferCreateInfo*, 324c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall VkCmdBuffer* out_cmdbuf) { 325c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 326c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall VkCmdBuffer_T* cmdbuf = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc( 327c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T), 328c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); 329c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall if (!cmdbuf) 330c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 331c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall cmdbuf->dispatch.magic = HWVULKAN_DISPATCH_MAGIC; 332c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall *out_cmdbuf = cmdbuf; 333c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall return VK_SUCCESS; 334c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall} 335c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall 336c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse HallVkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdbuf) { 337c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 338c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall alloc->pfnFree(alloc->pUserData, cmdbuf); 339c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall return VK_SUCCESS; 340c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall} 341c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall 342c7a6eb56a2c967685f70d30c643f899b0425c0eaJesse Hall// ----------------------------------------------------------------------------- 3432077ce0c0d7ca716c408826449314ac799eda650Jesse Hall// DeviceMemory 3442077ce0c0d7ca716c408826449314ac799eda650Jesse Hall 3452077ce0c0d7ca716c408826449314ac799eda650Jesse Hallstruct DeviceMemory { 3462077ce0c0d7ca716c408826449314ac799eda650Jesse Hall typedef VkDeviceMemory HandleType; 3472077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VkDeviceSize size; 3482077ce0c0d7ca716c408826449314ac799eda650Jesse Hall alignas(16) uint8_t data[0]; 3492077ce0c0d7ca716c408826449314ac799eda650Jesse Hall}; 3502077ce0c0d7ca716c408826449314ac799eda650Jesse Halltemplate <> 3512077ce0c0d7ca716c408826449314ac799eda650Jesse Hallstruct HandleTraits<VkDeviceMemory> { 3522077ce0c0d7ca716c408826449314ac799eda650Jesse Hall typedef DeviceMemory* PointerType; 3532077ce0c0d7ca716c408826449314ac799eda650Jesse Hall}; 3542077ce0c0d7ca716c408826449314ac799eda650Jesse Hall 3552077ce0c0d7ca716c408826449314ac799eda650Jesse HallVkResult AllocMemory(VkDevice device, 3562077ce0c0d7ca716c408826449314ac799eda650Jesse Hall const VkMemoryAllocInfo* alloc_info, 3572077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VkDeviceMemory* mem_handle) { 3582077ce0c0d7ca716c408826449314ac799eda650Jesse Hall if (SIZE_MAX - sizeof(DeviceMemory) <= alloc_info->allocationSize) 3592077ce0c0d7ca716c408826449314ac799eda650Jesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 3602077ce0c0d7ca716c408826449314ac799eda650Jesse Hall 3612077ce0c0d7ca716c408826449314ac799eda650Jesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 3622077ce0c0d7ca716c408826449314ac799eda650Jesse Hall size_t size = sizeof(DeviceMemory) + size_t(alloc_info->allocationSize); 3632077ce0c0d7ca716c408826449314ac799eda650Jesse Hall DeviceMemory* mem = static_cast<DeviceMemory*>( 3642077ce0c0d7ca716c408826449314ac799eda650Jesse Hall alloc->pfnAlloc(alloc->pUserData, size, alignof(DeviceMemory), 3652077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); 3662077ce0c0d7ca716c408826449314ac799eda650Jesse Hall if (!mem) 3672077ce0c0d7ca716c408826449314ac799eda650Jesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 3682077ce0c0d7ca716c408826449314ac799eda650Jesse Hall mem->size = size; 3692077ce0c0d7ca716c408826449314ac799eda650Jesse Hall *mem_handle = GetHandleToObject(mem); 3702077ce0c0d7ca716c408826449314ac799eda650Jesse Hall return VK_SUCCESS; 3712077ce0c0d7ca716c408826449314ac799eda650Jesse Hall} 3722077ce0c0d7ca716c408826449314ac799eda650Jesse Hall 3732077ce0c0d7ca716c408826449314ac799eda650Jesse HallVkResult FreeMemory(VkDevice device, VkDeviceMemory mem_handle) { 3742077ce0c0d7ca716c408826449314ac799eda650Jesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 3752077ce0c0d7ca716c408826449314ac799eda650Jesse Hall DeviceMemory* mem = GetObjectFromHandle(mem_handle); 3762077ce0c0d7ca716c408826449314ac799eda650Jesse Hall alloc->pfnFree(alloc->pUserData, mem); 3772077ce0c0d7ca716c408826449314ac799eda650Jesse Hall return VK_SUCCESS; 3782077ce0c0d7ca716c408826449314ac799eda650Jesse Hall} 3792077ce0c0d7ca716c408826449314ac799eda650Jesse Hall 3802077ce0c0d7ca716c408826449314ac799eda650Jesse HallVkResult MapMemory(VkDevice, 3812077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VkDeviceMemory mem_handle, 3822077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VkDeviceSize offset, 3832077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VkDeviceSize, 3842077ce0c0d7ca716c408826449314ac799eda650Jesse Hall VkMemoryMapFlags, 3852077ce0c0d7ca716c408826449314ac799eda650Jesse Hall void** out_ptr) { 3862077ce0c0d7ca716c408826449314ac799eda650Jesse Hall DeviceMemory* mem = GetObjectFromHandle(mem_handle); 3872077ce0c0d7ca716c408826449314ac799eda650Jesse Hall *out_ptr = &mem->data[0] + offset; 3882077ce0c0d7ca716c408826449314ac799eda650Jesse Hall return VK_SUCCESS; 3892077ce0c0d7ca716c408826449314ac799eda650Jesse Hall} 3902077ce0c0d7ca716c408826449314ac799eda650Jesse Hall 3912077ce0c0d7ca716c408826449314ac799eda650Jesse Hall// ----------------------------------------------------------------------------- 392f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall// Buffer 393f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 394f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hallstruct Buffer { 395f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall typedef VkBuffer HandleType; 396f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall VkDeviceSize size; 397f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall}; 398f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Halltemplate <> 399f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hallstruct HandleTraits<VkBuffer> { 400f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall typedef Buffer* PointerType; 401f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall}; 402f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 403f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse HallVkResult CreateBuffer(VkDevice device, 404f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall const VkBufferCreateInfo* create_info, 405f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall VkBuffer* buffer_handle) { 406bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall ALOGW_IF(create_info->size > kMaxDeviceMemory, 407bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall "CreateBuffer: requested size 0x%" PRIx64 408bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall " exceeds max device memory size 0x%" PRIx64, 409bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall create_info->size, kMaxDeviceMemory); 410bde8ee3037ed1e26d4e603332137c88e6c6d55cbJesse Hall 411f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 412f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall Buffer* buffer = static_cast<Buffer*>( 413f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall alloc->pfnAlloc(alloc->pUserData, sizeof(Buffer), alignof(Buffer), 414f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); 415f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall if (!buffer) 416f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 417f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall buffer->size = create_info->size; 418f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall *buffer_handle = GetHandleToObject(buffer); 419f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall return VK_SUCCESS; 420f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall} 421f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 422f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse HallVkResult GetBufferMemoryRequirements(VkDevice, 423f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall VkBuffer buffer_handle, 424f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall VkMemoryRequirements* requirements) { 425f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall Buffer* buffer = GetObjectFromHandle(buffer_handle); 426f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall requirements->size = buffer->size; 427f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall requirements->alignment = 16; // allow fast Neon/SSE memcpy 428f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall requirements->memoryTypeBits = 0x1; 429f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall return VK_SUCCESS; 430f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall} 431f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 432f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse HallVkResult DestroyBuffer(VkDevice device, VkBuffer buffer_handle) { 433f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 434f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall Buffer* buffer = GetObjectFromHandle(buffer_handle); 435f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall alloc->pfnFree(alloc->pUserData, buffer); 436f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall return VK_SUCCESS; 437f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall} 438f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall 439f6578743278da9b55d96a4984f4fcaa9d73eda8dJesse Hall// ----------------------------------------------------------------------------- 44085c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall// Image 44185c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 44285c05b60435ef61e833bcedced9ff0699e829f7cJesse Hallstruct Image { 44385c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall typedef VkImage HandleType; 44485c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VkDeviceSize size; 44585c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall}; 44685c05b60435ef61e833bcedced9ff0699e829f7cJesse Halltemplate <> 44785c05b60435ef61e833bcedced9ff0699e829f7cJesse Hallstruct HandleTraits<VkImage> { 44885c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall typedef Image* PointerType; 44985c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall}; 45085c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 45185c05b60435ef61e833bcedced9ff0699e829f7cJesse HallVkResult CreateImage(VkDevice device, 45285c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall const VkImageCreateInfo* create_info, 45385c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VkImage* image_handle) { 45485c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall if (create_info->imageType != VK_IMAGE_TYPE_2D || 45585c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall create_info->format != VK_FORMAT_R8G8B8A8_UNORM || 45685c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall create_info->mipLevels != 1) { 45785c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall ALOGE("CreateImage: not yet implemented: type=%d format=%d mips=%u", 45885c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall create_info->imageType, create_info->format, 45985c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall create_info->mipLevels); 46085c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall return VK_ERROR_UNAVAILABLE; 46185c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall } 46285c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 46385c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VkDeviceSize size = 46485c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VkDeviceSize(create_info->extent.width * create_info->extent.height) * 46585c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall create_info->arraySize * create_info->samples * 4u; 46685c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall ALOGW_IF(size > kMaxDeviceMemory, 46785c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall "CreateImage: image size 0x%" PRIx64 46885c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall " exceeds max device memory size 0x%" PRIx64, 46985c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall size, kMaxDeviceMemory); 47085c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 47185c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 47285c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall Image* image = static_cast<Image*>( 47385c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall alloc->pfnAlloc(alloc->pUserData, sizeof(Image), alignof(Image), 47485c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); 47585c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall if (!image) 47685c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall return VK_ERROR_OUT_OF_HOST_MEMORY; 47785c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall image->size = size; 47885c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall *image_handle = GetHandleToObject(image); 47985c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall return VK_SUCCESS; 48085c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall} 48185c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 48285c05b60435ef61e833bcedced9ff0699e829f7cJesse HallVkResult GetImageMemoryRequirements(VkDevice, 48385c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VkImage image_handle, 48485c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall VkMemoryRequirements* requirements) { 48585c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall Image* image = GetObjectFromHandle(image_handle); 48685c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall requirements->size = image->size; 48785c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall requirements->alignment = 16; // allow fast Neon/SSE memcpy 48885c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall requirements->memoryTypeBits = 0x1; 48985c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall return VK_SUCCESS; 49085c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall} 49185c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 49285c05b60435ef61e833bcedced9ff0699e829f7cJesse HallVkResult DestroyImage(VkDevice device, VkImage image_handle) { 49385c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall const VkAllocCallbacks* alloc = device->instance->alloc; 49485c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall Image* image = GetObjectFromHandle(image_handle); 49585c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall alloc->pfnFree(alloc->pUserData, image); 49685c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall return VK_SUCCESS; 49785c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall} 49885c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall 49985c05b60435ef61e833bcedced9ff0699e829f7cJesse Hall// ----------------------------------------------------------------------------- 500f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// No-op types 50104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 502f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateAttachmentView(VkDevice device, 503f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkAttachmentViewCreateInfo*, 504f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkAttachmentView* view) { 505f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *view = AllocHandle(device, HandleType::kAttachmentView); 50604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 50704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 50804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 509f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateBufferView(VkDevice device, 510f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkBufferViewCreateInfo*, 511f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkBufferView* view) { 512f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *view = AllocHandle(device, HandleType::kBufferView); 51304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 51404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 51504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 516f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateCommandPool(VkDevice device, 517f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkCmdPoolCreateInfo*, 518f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkCmdPool* pool) { 519f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *pool = AllocHandle(device, HandleType::kCmdPool); 52004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 52104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 52204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 523f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateDescriptorPool(VkDevice device, 524f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDescriptorPoolUsage, 525f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall uint32_t, 526f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDescriptorPoolCreateInfo*, 527f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDescriptorPool* pool) { 528f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *pool = AllocHandle(device, HandleType::kDescriptorPool); 52904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 53004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 53104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 532f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult AllocDescriptorSets(VkDevice device, 533f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDescriptorPool, 534f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDescriptorSetUsage, 535f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall uint32_t count, 536f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDescriptorSetLayout*, 537f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDescriptorSet* sets, 538f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall uint32_t* out_count) { 539f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall for (uint32_t i = 0; i < count; i++) 540f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall sets[i] = AllocHandle(device, HandleType::kDescriptorSet); 541f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *out_count = count; 54204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 54304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 54404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 545f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateDescriptorSetLayout(VkDevice device, 546f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDescriptorSetLayoutCreateInfo*, 547f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDescriptorSetLayout* layout) { 548f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *layout = AllocHandle(device, HandleType::kDescriptorSetLayout); 54904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 55004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 55104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 552f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateDynamicColorBlendState(VkDevice device, 553f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDynamicColorBlendStateCreateInfo*, 554f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDynamicColorBlendState* state) { 555f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *state = AllocHandle(device, HandleType::kDynamicColorBlendState); 55604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 55704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 55804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 559f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateDynamicDepthStencilState( 560f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDevice device, 561f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDynamicDepthStencilStateCreateInfo*, 562f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDynamicDepthStencilState* state) { 563f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *state = AllocHandle(device, HandleType::kDynamicDepthStencilState); 56404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 56504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 56604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 567f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateDynamicRasterState(VkDevice device, 568f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDynamicRasterStateCreateInfo*, 569f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDynamicRasterState* state) { 570f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *state = AllocHandle(device, HandleType::kDynamicRasterState); 57104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 57204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 57304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 574f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateDynamicViewportState(VkDevice device, 575f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkDynamicViewportStateCreateInfo*, 576f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkDynamicViewportState* state) { 577f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *state = AllocHandle(device, HandleType::kDynamicViewportState); 57804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 57904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 58004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 581f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateEvent(VkDevice device, 582f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkEventCreateInfo*, 583f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkEvent* event) { 584f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *event = AllocHandle(device, HandleType::kEvent); 58504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 58604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 58704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 588f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateFence(VkDevice device, 589f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkFenceCreateInfo*, 590f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkFence* fence) { 591f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *fence = AllocHandle(device, HandleType::kFence); 59204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 59304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 59404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 595f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateFramebuffer(VkDevice device, 596f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkFramebufferCreateInfo*, 597f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkFramebuffer* framebuffer) { 598f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *framebuffer = AllocHandle(device, HandleType::kFramebuffer); 59904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 60004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 60104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 602f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateImageView(VkDevice device, 603f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkImageViewCreateInfo*, 604f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkImageView* view) { 605f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *view = AllocHandle(device, HandleType::kImageView); 60604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 60704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 60804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 609f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateGraphicsPipelines(VkDevice device, 610f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkPipelineCache, 611f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall uint32_t count, 612f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkGraphicsPipelineCreateInfo*, 613f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkPipeline* pipelines) { 614f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall for (uint32_t i = 0; i < count; i++) 615f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall pipelines[i] = AllocHandle(device, HandleType::kPipeline); 61604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 61704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 61804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 619f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateComputePipelines(VkDevice device, 620f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkPipelineCache, 621f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall uint32_t count, 622f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkComputePipelineCreateInfo*, 623f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkPipeline* pipelines) { 624f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall for (uint32_t i = 0; i < count; i++) 625f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall pipelines[i] = AllocHandle(device, HandleType::kPipeline); 62604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 62704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 62804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 629f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreatePipelineCache(VkDevice device, 630f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkPipelineCacheCreateInfo*, 631f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkPipelineCache* cache) { 632f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *cache = AllocHandle(device, HandleType::kPipelineCache); 63304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 63404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 63504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 636f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreatePipelineLayout(VkDevice device, 637f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkPipelineLayoutCreateInfo*, 638f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkPipelineLayout* layout) { 639f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *layout = AllocHandle(device, HandleType::kPipelineLayout); 64004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 64104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 64204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 643f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateQueryPool(VkDevice device, 644f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkQueryPoolCreateInfo*, 645f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkQueryPool* pool) { 646f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *pool = AllocHandle(device, HandleType::kQueryPool); 64704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 64804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 64904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 650f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateRenderPass(VkDevice device, 651f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkRenderPassCreateInfo*, 652f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkRenderPass* renderpass) { 653f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *renderpass = AllocHandle(device, HandleType::kRenderPass); 65404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 65504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 65604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 657f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateSampler(VkDevice device, 658f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkSamplerCreateInfo*, 659f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkSampler* sampler) { 660f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *sampler = AllocHandle(device, HandleType::kSampler); 66104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 66204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 66304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 664f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateSemaphore(VkDevice device, 665f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkSemaphoreCreateInfo*, 666f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkSemaphore* semaphore) { 667f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *semaphore = AllocHandle(device, HandleType::kSemaphore); 66804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 66904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 67004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 671f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateShader(VkDevice device, 672f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkShaderCreateInfo*, 673f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkShader* shader) { 674f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *shader = AllocHandle(device, HandleType::kShader); 67504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 67604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 67704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 678f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult CreateShaderModule(VkDevice device, 679f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall const VkShaderModuleCreateInfo*, 680f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall VkShaderModule* module) { 681f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall *module = AllocHandle(device, HandleType::kShaderModule); 68204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 68304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 68404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 685f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// ----------------------------------------------------------------------------- 686f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// No-op entrypoints 687f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall 688f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall// clang-format off 689f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall#pragma clang diagnostic push 690f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall#pragma clang diagnostic ignored "-Wunused-parameter" 691f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hall 692f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceQueueCount(VkPhysicalDevice physicalDevice, uint32_t* pCount) { 69373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 69404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 69504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 69604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 697f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceQueueProperties(VkPhysicalDevice physicalDevice, uint32_t count, VkPhysicalDeviceQueueProperties* pQueueProperties) { 69873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 69904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 70004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 70104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 702f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) { 70373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 70404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 70504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 70604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 707f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) { 70873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 70904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 71004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 71104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 712f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties) { 71373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 71404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 71504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 71604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 717f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceLimits(VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits) { 71873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 71904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 72004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 72104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 722f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetGlobalLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) { 72373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 72404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 72504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 72604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 727f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) { 72873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 72904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 73004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 73104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 732f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) { 73373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 73404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 73504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 73604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 737f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) { 73804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 73904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 74004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 741f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueWaitIdle(VkQueue queue) { 74273ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 74304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 74404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 74504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 746f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DeviceWaitIdle(VkDevice device) { 74773ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 74804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 74904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 75004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 751f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult UnmapMemory(VkDevice device, VkDeviceMemory mem) { 75204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 75304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 75404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 755f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) { 75673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 75704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 75804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 75904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 760f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) { 76173ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 76204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 76304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 76404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 765f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) { 76673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 76704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 76804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 76904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 770f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) { 77104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 77204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 77304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 774f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) { 77573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 77604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 77704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 77804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 779f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { 78073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 78104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 78204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 78304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 784f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) { 78573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 78604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 78704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 78804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 789f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) { 79073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 79104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 79204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 79304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 794f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) { 79573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 79604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 79704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 79804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 799f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) { 80073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 80104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 80204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 80304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 804f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyFence(VkDevice device, VkFence fence) { 80504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 80604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 80704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 808f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) { 80904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 81004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 81104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 812f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetFenceStatus(VkDevice device, VkFence fence) { 81373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 81404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 81504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 81604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 817f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) { 81804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 81904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 82004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 821f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroySemaphore(VkDevice device, VkSemaphore semaphore) { 82204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 82304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 82404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 825f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore) { 82673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 82704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 82804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 82904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 830f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult QueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore) { 83173ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 83204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 83304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 83404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 835f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyEvent(VkDevice device, VkEvent event) { 83604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 83704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 83804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 839f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetEventStatus(VkDevice device, VkEvent event) { 84073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 84104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 84204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 84304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 844f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult SetEvent(VkDevice device, VkEvent event) { 84573ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 84604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 84704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 84804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 849f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult ResetEvent(VkDevice device, VkEvent event) { 85073ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 85104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 85204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 85304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 854f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyQueryPool(VkDevice device, VkQueryPool queryPool) { 85504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 85604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 85704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 858f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags) { 85973ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 86004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 86104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 86204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 863f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyBufferView(VkDevice device, VkBufferView bufferView) { 86404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 86504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 86604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 867f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) { 86873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 86904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 87004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 87104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 872f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyImageView(VkDevice device, VkImageView imageView) { 87304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 87404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 87504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 876f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView) { 87704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 87804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 87904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 880f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyShaderModule(VkDevice device, VkShaderModule shaderModule) { 88104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 88204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 88304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 884f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyShader(VkDevice device, VkShader shader) { 88504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 88604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 88704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 888f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) { 88904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 89004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 89104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 892f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse Hallsize_t GetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache) { 89373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 89404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 89504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 89604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 897f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData) { 89873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 89904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 90004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 90104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 902f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) { 90373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 90404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 90504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 90604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 907f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyPipeline(VkDevice device, VkPipeline pipeline) { 90804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 90904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 91004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 911f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) { 91204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 91304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 91404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 915f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroySampler(VkDevice device, VkSampler sampler) { 91604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 91704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 91804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 919f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) { 92004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 92104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 92204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 923f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) { 92404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 92504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 92604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 927f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) { 92873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 92904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 93004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 93104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 932f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) { 93373ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 93404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 93504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 93604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 937f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets) { 93873ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 93904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 94004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 94104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 942f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState) { 94304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 94404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 94504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 946f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState) { 94704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 94804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 94904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 950f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) { 95104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 95204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 95304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 954f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) { 95504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 95604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 95704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 958f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) { 95904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 96004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 96104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 962f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult DestroyRenderPass(VkDevice device, VkRenderPass renderPass) { 96304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 96404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 96504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 966f8faf0ce17a6435e58c7d2744d9e0e84f3b25bd7Jesse HallVkResult GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) { 96773ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 96804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 96904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 97004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 97104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult DestroyCommandPool(VkDevice device, VkCmdPool cmdPool) { 97204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 97304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 97404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 97504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) { 97673ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 97704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 97804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 97904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 98004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) { 98104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 98204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 98304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 98404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult EndCommandBuffer(VkCmdBuffer cmdBuffer) { 98504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 98604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 98704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 98804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse HallVkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) { 98973ab0acc1990326b4e51b675f4b2b44b6366c0a7Jesse Hall ALOGV("TODO: vk%s", __FUNCTION__); 99004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall return VK_SUCCESS; 99104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 99204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 99304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) { 99404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 99504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 99604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) { 99704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 99804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 99904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) { 100004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 100104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 100204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) { 100304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 100404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 100504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) { 100604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 100704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 100804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) { 100904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 101004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 101104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) { 101204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 101304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 101404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) { 101504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 101604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 101704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount) { 101804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 101904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 102004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount) { 102104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 102204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 102304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) { 102404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 102504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 102604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) { 102704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 102804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 102904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z) { 103004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 103104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 103204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) { 103304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 103404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 103504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) { 103604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 103704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 103804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) { 103904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 104004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 104104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter) { 104204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 104304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 104404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) { 104504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 104604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 104704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) { 104804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 104904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 105004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData) { 105104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 105204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 105304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) { 105404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 105504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 105604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { 105704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 105804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 105904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { 106004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 106104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 106204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects) { 106304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 106404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 106504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects) { 106604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 106704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 106804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) { 106904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 107004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 107104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) { 107204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 107304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 107404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) { 107504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 107604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 107704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) { 107804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 107904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 108004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers) { 108104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 108204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 108304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) { 108404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 108504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 108604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) { 108704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 108804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 108904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) { 109004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 109104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 109204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) { 109304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 109404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 109504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) { 109604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 109704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 109804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) { 109904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 110004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 110104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) { 110204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 110304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 110404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents) { 110504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 110604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 110704f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdEndRenderPass(VkCmdBuffer cmdBuffer) { 110804f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 110904f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 111004f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hallvoid CmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) { 111104f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} 111204f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 111304f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall#pragma clang diagnostic pop 111404f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall// clang-format on 111504f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall 111604f4f4746481571148eaf3aaf768ee5c6dccec9dJesse Hall} // namespace null_driver 1117