blob: 9a75697e2a39197575c8bea0765922cf171a7266 [file] [log] [blame]
Jesse Halld02edcb2015-09-08 07:44:48 -07001/*
2 * Copyright 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Jesse Hall04f4f472015-08-16 19:51:04 -070017#include <hardware/hwvulkan.h>
18
Jesse Hallbde8ee32015-09-01 16:24:29 -070019#include <inttypes.h>
20#include <string.h>
Jesse Hall1f91d392015-12-11 16:28:44 -080021#include <algorithm>
22#include <array>
Jesse Hall04f4f472015-08-16 19:51:04 -070023
Jesse Hall73ab0ac2015-08-25 15:09:15 +010024// #define LOG_NDEBUG 0
25#include <log/log.h>
Jesse Hall04f4f472015-08-16 19:51:04 -070026#include <utils/Errors.h>
27
Jesse Hall1f91d392015-12-11 16:28:44 -080028#include "null_driver_gen.h"
Jesse Hall04f4f472015-08-16 19:51:04 -070029
30using namespace null_driver;
31
32struct VkPhysicalDevice_T {
33 hwvulkan_dispatch_t dispatch;
34};
35
36struct VkInstance_T {
37 hwvulkan_dispatch_t dispatch;
Jesse Hall3fbc8562015-11-29 22:10:52 -080038 VkAllocationCallbacks allocator;
Jesse Hall04f4f472015-08-16 19:51:04 -070039 VkPhysicalDevice_T physical_device;
40};
41
42struct VkQueue_T {
43 hwvulkan_dispatch_t dispatch;
44};
45
Jesse Hall3fbc8562015-11-29 22:10:52 -080046struct VkCommandBuffer_T {
Jesse Hall04f4f472015-08-16 19:51:04 -070047 hwvulkan_dispatch_t dispatch;
48};
49
Jesse Hallf8faf0c2015-08-31 11:34:32 -070050namespace {
51// Handles for non-dispatchable objects are either pointers, or arbitrary
52// 64-bit non-zero values. We only use pointers when we need to keep state for
53// the object even in a null driver. For the rest, we form a handle as:
54// [63:63] = 1 to distinguish from pointer handles*
55// [62:56] = non-zero handle type enum value
56// [55: 0] = per-handle-type incrementing counter
57// * This works because virtual addresses with the high bit set are reserved
58// for kernel data in all ABIs we run on.
59//
60// We never reclaim handles on vkDestroy*. It's not even necessary for us to
61// have distinct handles for live objects, and practically speaking we won't
62// ever create 2^56 objects of the same type from a single VkDevice in a null
63// driver.
64//
65// Using a namespace here instead of 'enum class' since we want scoped
66// constants but also want implicit conversions to integral types.
67namespace HandleType {
Jesse Hallc7a6eb52015-08-31 12:52:03 -070068enum Enum {
Jesse Hallc7a6eb52015-08-31 12:52:03 -070069 kBufferView,
Jesse Hallc7a6eb52015-08-31 12:52:03 -070070 kDescriptorPool,
71 kDescriptorSet,
72 kDescriptorSetLayout,
Jesse Hallc7a6eb52015-08-31 12:52:03 -070073 kEvent,
74 kFence,
75 kFramebuffer,
76 kImageView,
77 kPipeline,
78 kPipelineCache,
79 kPipelineLayout,
80 kQueryPool,
81 kRenderPass,
82 kSampler,
83 kSemaphore,
Jesse Hallc7a6eb52015-08-31 12:52:03 -070084 kShaderModule,
Jesse Hallf8faf0c2015-08-31 11:34:32 -070085
Jesse Hallc7a6eb52015-08-31 12:52:03 -070086 kNumTypes
87};
88} // namespace HandleType
Jesse Hallf8faf0c2015-08-31 11:34:32 -070089uint64_t AllocHandle(VkDevice device, HandleType::Enum type);
Jesse Hallbde8ee32015-09-01 16:24:29 -070090
91const VkDeviceSize kMaxDeviceMemory = VkDeviceSize(INTPTR_MAX) + 1;
92
Jesse Hallc7a6eb52015-08-31 12:52:03 -070093} // anonymous namespace
Jesse Hallf8faf0c2015-08-31 11:34:32 -070094
Jesse Hall04f4f472015-08-16 19:51:04 -070095struct VkDevice_T {
96 hwvulkan_dispatch_t dispatch;
Jesse Hall3fbc8562015-11-29 22:10:52 -080097 VkAllocationCallbacks allocator;
Jesse Hall04f4f472015-08-16 19:51:04 -070098 VkInstance_T* instance;
99 VkQueue_T queue;
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700100 std::array<uint64_t, HandleType::kNumTypes> next_handle;
Jesse Hall04f4f472015-08-16 19:51:04 -0700101};
102
103// -----------------------------------------------------------------------------
104// Declare HAL_MODULE_INFO_SYM early so it can be referenced by nulldrv_device
105// later.
106
107namespace {
108int OpenDevice(const hw_module_t* module, const char* id, hw_device_t** device);
109hw_module_methods_t nulldrv_module_methods = {.open = OpenDevice};
110} // namespace
111
112#pragma clang diagnostic push
113#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
114__attribute__((visibility("default"))) hwvulkan_module_t HAL_MODULE_INFO_SYM = {
115 .common =
116 {
Michael Lentine03c64b02015-08-26 18:27:26 -0500117 .tag = HARDWARE_MODULE_TAG,
118 .module_api_version = HWVULKAN_MODULE_API_VERSION_0_1,
119 .hal_api_version = HARDWARE_HAL_API_VERSION,
120 .id = HWVULKAN_HARDWARE_MODULE_ID,
121 .name = "Null Vulkan Driver",
122 .author = "The Android Open Source Project",
123 .methods = &nulldrv_module_methods,
Jesse Hall04f4f472015-08-16 19:51:04 -0700124 },
125};
126#pragma clang diagnostic pop
127
128// -----------------------------------------------------------------------------
129
130namespace {
131
Jesse Hall04f4f472015-08-16 19:51:04 -0700132int CloseDevice(struct hw_device_t* /*device*/) {
133 // nothing to do - opening a device doesn't allocate any resources
134 return 0;
135}
136
137hwvulkan_device_t nulldrv_device = {
138 .common =
139 {
Michael Lentine03c64b02015-08-26 18:27:26 -0500140 .tag = HARDWARE_DEVICE_TAG,
141 .version = HWVULKAN_DEVICE_API_VERSION_0_1,
142 .module = &HAL_MODULE_INFO_SYM.common,
143 .close = CloseDevice,
Jesse Hall04f4f472015-08-16 19:51:04 -0700144 },
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700145 .EnumerateInstanceExtensionProperties =
146 EnumerateInstanceExtensionProperties,
Jesse Hall04f4f472015-08-16 19:51:04 -0700147 .CreateInstance = CreateInstance,
148 .GetInstanceProcAddr = GetInstanceProcAddr};
149
150int OpenDevice(const hw_module_t* /*module*/,
151 const char* id,
152 hw_device_t** device) {
153 if (strcmp(id, HWVULKAN_DEVICE_0) == 0) {
154 *device = &nulldrv_device.common;
155 return 0;
156 }
157 return -ENOENT;
158}
159
160VkInstance_T* GetInstanceFromPhysicalDevice(
161 VkPhysicalDevice_T* physical_device) {
162 return reinterpret_cast<VkInstance_T*>(
163 reinterpret_cast<uintptr_t>(physical_device) -
164 offsetof(VkInstance_T, physical_device));
165}
166
Michael Lentine3fec89e2015-12-04 16:25:11 -0800167template <class Handle>
168Handle AllocHandle(VkDevice device, HandleType::Enum type) {
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700169 const uint64_t kHandleMask = (UINT64_C(1) << 56) - 1;
170 ALOGE_IF(device->next_handle[type] == kHandleMask,
Jesse Hallbde8ee32015-09-01 16:24:29 -0700171 "non-dispatchable handles of type=%u are about to overflow", type);
Michael Lentine3fec89e2015-12-04 16:25:11 -0800172 return reinterpret_cast<Handle>(
173 (UINT64_C(1) << 63) | ((uint64_t(type) & 0x7) << 56) |
174 (device->next_handle[type]++ & kHandleMask));
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700175}
176
Jesse Hall04f4f472015-08-16 19:51:04 -0700177} // namespace
178
179namespace null_driver {
180
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800181#define DEFINE_OBJECT_HANDLE_CONVERSION(T) \
182 T* Get##T##FromHandle(Vk##T h); \
183 T* Get##T##FromHandle(Vk##T h) { \
184 return reinterpret_cast<T*>(uintptr_t(h)); \
185 } \
186 Vk##T GetHandleTo##T(const T* obj); \
187 Vk##T GetHandleTo##T(const T* obj) { \
188 return Vk##T(reinterpret_cast<uintptr_t>(obj)); \
189 }
Jesse Hallf6578742015-08-29 17:06:12 +0100190
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100191// -----------------------------------------------------------------------------
192// Global
193
Jesse Halle1b12782015-11-30 11:27:32 -0800194VKAPI_ATTR
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700195VkResult EnumerateInstanceExtensionProperties(const char*,
196 uint32_t* count,
197 VkExtensionProperties*) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100198 *count = 0;
199 return VK_SUCCESS;
200}
201
Jesse Halle1b12782015-11-30 11:27:32 -0800202VKAPI_ATTR
Jesse Hall1f91d392015-12-11 16:28:44 -0800203VkResult CreateInstance(const VkInstanceCreateInfo* /*create_info*/,
204 const VkAllocationCallbacks* allocator,
205 VkInstance* out_instance) {
206 // Assume the loader provided alloc callbacks even if the app didn't.
207 ALOG_ASSERT(
208 allocator,
209 "Missing alloc callbacks, loader or app should have provided them");
210
211 VkInstance_T* instance =
212 static_cast<VkInstance_T*>(allocator->pfnAllocation(
213 allocator->pUserData, sizeof(VkInstance_T), alignof(VkInstance_T),
214 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE));
215 if (!instance)
216 return VK_ERROR_OUT_OF_HOST_MEMORY;
217
218 instance->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
219 instance->allocator = *allocator;
220 instance->physical_device.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
221
222 *out_instance = instance;
223 return VK_SUCCESS;
224}
225
226VKAPI_ATTR
227PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* name) {
228 return instance ? GetInstanceProcAddr(name) : GetGlobalProcAddr(name);
Jesse Hall04f4f472015-08-16 19:51:04 -0700229}
230
Jesse Halle1b12782015-11-30 11:27:32 -0800231VKAPI_ATTR
Jesse Hall04f4f472015-08-16 19:51:04 -0700232PFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) {
Jesse Hall1f91d392015-12-11 16:28:44 -0800233 return GetInstanceProcAddr(name);
Jesse Hall04f4f472015-08-16 19:51:04 -0700234}
235
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100236// -----------------------------------------------------------------------------
237// Instance
238
Jesse Hall03b6fe12015-11-24 12:44:21 -0800239void DestroyInstance(VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800240 const VkAllocationCallbacks* /*allocator*/) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800241 instance->allocator.pfnFree(instance->allocator.pUserData, instance);
Jesse Hall04f4f472015-08-16 19:51:04 -0700242}
243
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100244// -----------------------------------------------------------------------------
245// PhysicalDevice
246
Jesse Hall04f4f472015-08-16 19:51:04 -0700247VkResult EnumeratePhysicalDevices(VkInstance instance,
248 uint32_t* physical_device_count,
249 VkPhysicalDevice* physical_devices) {
250 if (physical_devices && *physical_device_count >= 1)
251 physical_devices[0] = &instance->physical_device;
252 *physical_device_count = 1;
253 return VK_SUCCESS;
254}
255
Jesse Hall606a54e2015-11-19 22:17:28 -0800256void GetPhysicalDeviceProperties(VkPhysicalDevice,
257 VkPhysicalDeviceProperties* properties) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700258 properties->apiVersion = VK_API_VERSION;
259 properties->driverVersion = VK_MAKE_VERSION(0, 0, 1);
Jesse Hall65ab5522015-11-30 00:07:16 -0800260 properties->vendorID = 0;
261 properties->deviceID = 0;
Jesse Hall04f4f472015-08-16 19:51:04 -0700262 properties->deviceType = VK_PHYSICAL_DEVICE_TYPE_OTHER;
263 strcpy(properties->deviceName, "Android Vulkan Null Driver");
264 memset(properties->pipelineCacheUUID, 0,
265 sizeof(properties->pipelineCacheUUID));
Jesse Hall04f4f472015-08-16 19:51:04 -0700266}
267
Jesse Hall606a54e2015-11-19 22:17:28 -0800268void GetPhysicalDeviceQueueFamilyProperties(
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700269 VkPhysicalDevice,
270 uint32_t* count,
271 VkQueueFamilyProperties* properties) {
272 if (properties) {
Jesse Hall65ab5522015-11-30 00:07:16 -0800273 properties->queueFlags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT |
274 VK_QUEUE_TRANSFER_BIT;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700275 properties->queueCount = 1;
Jesse Hallacfa5342015-11-19 21:51:33 -0800276 properties->timestampValidBits = 64;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700277 }
278 *count = 1;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700279}
280
Jesse Hall606a54e2015-11-19 22:17:28 -0800281void GetPhysicalDeviceMemoryProperties(
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100282 VkPhysicalDevice,
283 VkPhysicalDeviceMemoryProperties* properties) {
284 properties->memoryTypeCount = 1;
285 properties->memoryTypes[0].propertyFlags =
Jesse Halld1af8122015-11-29 23:50:38 -0800286 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |
287 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
288 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT |
289 VK_MEMORY_PROPERTY_HOST_CACHED_BIT;
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100290 properties->memoryTypes[0].heapIndex = 0;
291 properties->memoryHeapCount = 1;
Jesse Hallbde8ee32015-09-01 16:24:29 -0700292 properties->memoryHeaps[0].size = kMaxDeviceMemory;
Jesse Halld1af8122015-11-29 23:50:38 -0800293 properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT;
Jesse Hall04f4f472015-08-16 19:51:04 -0700294}
295
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100296// -----------------------------------------------------------------------------
297// Device
298
Jesse Hall04f4f472015-08-16 19:51:04 -0700299VkResult CreateDevice(VkPhysicalDevice physical_device,
300 const VkDeviceCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800301 const VkAllocationCallbacks* allocator,
Jesse Hall04f4f472015-08-16 19:51:04 -0700302 VkDevice* out_device) {
303 VkInstance_T* instance = GetInstanceFromPhysicalDevice(physical_device);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800304 if (!allocator)
305 allocator = &instance->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800306 VkDevice_T* device = static_cast<VkDevice_T*>(allocator->pfnAllocation(
307 allocator->pUserData, sizeof(VkDevice_T), alignof(VkDevice_T),
308 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE));
Jesse Hall04f4f472015-08-16 19:51:04 -0700309 if (!device)
310 return VK_ERROR_OUT_OF_HOST_MEMORY;
311
312 device->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800313 device->allocator = *allocator;
Jesse Hall04f4f472015-08-16 19:51:04 -0700314 device->instance = instance;
315 device->queue.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700316 std::fill(device->next_handle.begin(), device->next_handle.end(),
317 UINT64_C(0));
Jesse Hall04f4f472015-08-16 19:51:04 -0700318
319 *out_device = device;
320 return VK_SUCCESS;
321}
322
Jesse Hall3fbc8562015-11-29 22:10:52 -0800323void DestroyDevice(VkDevice device,
324 const VkAllocationCallbacks* /*allocator*/) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700325 if (!device)
Jesse Hallcf25c412015-10-29 17:14:50 -0700326 return;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800327 device->allocator.pfnFree(device->allocator.pUserData, device);
Jesse Hall04f4f472015-08-16 19:51:04 -0700328}
329
Jesse Hall606a54e2015-11-19 22:17:28 -0800330void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700331 *queue = &device->queue;
Jesse Hall04f4f472015-08-16 19:51:04 -0700332}
333
334// -----------------------------------------------------------------------------
Jesse Hall3fbc8562015-11-29 22:10:52 -0800335// CommandPool
Jesse Hall03b6fe12015-11-24 12:44:21 -0800336
Jesse Hall3fbc8562015-11-29 22:10:52 -0800337struct CommandPool {
338 typedef VkCommandPool HandleType;
339 VkAllocationCallbacks allocator;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800340};
Jesse Hall3fbc8562015-11-29 22:10:52 -0800341DEFINE_OBJECT_HANDLE_CONVERSION(CommandPool)
Jesse Hall03b6fe12015-11-24 12:44:21 -0800342
343VkResult CreateCommandPool(VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800344 const VkCommandPoolCreateInfo* /*create_info*/,
345 const VkAllocationCallbacks* allocator,
346 VkCommandPool* cmd_pool) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800347 if (!allocator)
348 allocator = &device->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800349 CommandPool* pool = static_cast<CommandPool*>(allocator->pfnAllocation(
350 allocator->pUserData, sizeof(CommandPool), alignof(CommandPool),
351 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hall03b6fe12015-11-24 12:44:21 -0800352 if (!pool)
353 return VK_ERROR_OUT_OF_HOST_MEMORY;
354 pool->allocator = *allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800355 *cmd_pool = GetHandleToCommandPool(pool);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800356 return VK_SUCCESS;
357}
358
359void DestroyCommandPool(VkDevice /*device*/,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800360 VkCommandPool cmd_pool,
361 const VkAllocationCallbacks* /*allocator*/) {
362 CommandPool* pool = GetCommandPoolFromHandle(cmd_pool);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800363 pool->allocator.pfnFree(pool->allocator.pUserData, pool);
364}
365
366// -----------------------------------------------------------------------------
Jesse Hallc7a6eb52015-08-31 12:52:03 -0700367// CmdBuffer
368
Jesse Hall3fbc8562015-11-29 22:10:52 -0800369VkResult AllocateCommandBuffers(VkDevice /*device*/,
370 const VkCommandBufferAllocateInfo* alloc_info,
371 VkCommandBuffer* cmdbufs) {
Jesse Hallfbf97b02015-11-20 14:17:03 -0800372 VkResult result = VK_SUCCESS;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800373 CommandPool& pool = *GetCommandPoolFromHandle(alloc_info->commandPool);
Jesse Hall3dd678a2016-01-08 21:52:01 -0800374 std::fill(cmdbufs, cmdbufs + alloc_info->commandBufferCount, nullptr);
375 for (uint32_t i = 0; i < alloc_info->commandBufferCount; i++) {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800376 cmdbufs[i] =
377 static_cast<VkCommandBuffer_T*>(pool.allocator.pfnAllocation(
378 pool.allocator.pUserData, sizeof(VkCommandBuffer_T),
379 alignof(VkCommandBuffer_T), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hallfbf97b02015-11-20 14:17:03 -0800380 if (!cmdbufs[i]) {
381 result = VK_ERROR_OUT_OF_HOST_MEMORY;
382 break;
383 }
384 cmdbufs[i]->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
385 }
386 if (result != VK_SUCCESS) {
Jesse Hall3dd678a2016-01-08 21:52:01 -0800387 for (uint32_t i = 0; i < alloc_info->commandBufferCount; i++) {
Jesse Hallfbf97b02015-11-20 14:17:03 -0800388 if (!cmdbufs[i])
389 break;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800390 pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
Jesse Hallfbf97b02015-11-20 14:17:03 -0800391 }
392 }
Jesse Hallfbf97b02015-11-20 14:17:03 -0800393 return result;
Jesse Hallc7a6eb52015-08-31 12:52:03 -0700394}
395
Jesse Hall03b6fe12015-11-24 12:44:21 -0800396void FreeCommandBuffers(VkDevice /*device*/,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800397 VkCommandPool cmd_pool,
Jesse Hallfbf97b02015-11-20 14:17:03 -0800398 uint32_t count,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800399 const VkCommandBuffer* cmdbufs) {
400 CommandPool& pool = *GetCommandPoolFromHandle(cmd_pool);
Jesse Hallfbf97b02015-11-20 14:17:03 -0800401 for (uint32_t i = 0; i < count; i++)
Jesse Hall03b6fe12015-11-24 12:44:21 -0800402 pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
Jesse Hallc7a6eb52015-08-31 12:52:03 -0700403}
404
405// -----------------------------------------------------------------------------
Jesse Hall2077ce02015-08-29 18:10:59 +0100406// DeviceMemory
407
408struct DeviceMemory {
409 typedef VkDeviceMemory HandleType;
410 VkDeviceSize size;
411 alignas(16) uint8_t data[0];
412};
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800413DEFINE_OBJECT_HANDLE_CONVERSION(DeviceMemory)
Jesse Hall2077ce02015-08-29 18:10:59 +0100414
Jesse Hall3fbc8562015-11-29 22:10:52 -0800415VkResult AllocateMemory(VkDevice device,
416 const VkMemoryAllocateInfo* alloc_info,
417 const VkAllocationCallbacks* allocator,
418 VkDeviceMemory* mem_handle) {
Jesse Hall2077ce02015-08-29 18:10:59 +0100419 if (SIZE_MAX - sizeof(DeviceMemory) <= alloc_info->allocationSize)
420 return VK_ERROR_OUT_OF_HOST_MEMORY;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800421 if (!allocator)
422 allocator = &device->allocator;
Jesse Hall2077ce02015-08-29 18:10:59 +0100423
Jesse Hall2077ce02015-08-29 18:10:59 +0100424 size_t size = sizeof(DeviceMemory) + size_t(alloc_info->allocationSize);
Jesse Hall3fbc8562015-11-29 22:10:52 -0800425 DeviceMemory* mem = static_cast<DeviceMemory*>(allocator->pfnAllocation(
426 allocator->pUserData, size, alignof(DeviceMemory),
427 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hall2077ce02015-08-29 18:10:59 +0100428 if (!mem)
429 return VK_ERROR_OUT_OF_HOST_MEMORY;
430 mem->size = size;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800431 *mem_handle = GetHandleToDeviceMemory(mem);
Jesse Hall2077ce02015-08-29 18:10:59 +0100432 return VK_SUCCESS;
433}
434
Jesse Hall03b6fe12015-11-24 12:44:21 -0800435void FreeMemory(VkDevice device,
436 VkDeviceMemory mem_handle,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800437 const VkAllocationCallbacks* allocator) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800438 if (!allocator)
439 allocator = &device->allocator;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800440 DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800441 allocator->pfnFree(allocator->pUserData, mem);
Jesse Hall2077ce02015-08-29 18:10:59 +0100442}
443
444VkResult MapMemory(VkDevice,
445 VkDeviceMemory mem_handle,
446 VkDeviceSize offset,
447 VkDeviceSize,
448 VkMemoryMapFlags,
449 void** out_ptr) {
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800450 DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
Jesse Hall2077ce02015-08-29 18:10:59 +0100451 *out_ptr = &mem->data[0] + offset;
452 return VK_SUCCESS;
453}
454
455// -----------------------------------------------------------------------------
Jesse Hallf6578742015-08-29 17:06:12 +0100456// Buffer
457
458struct Buffer {
459 typedef VkBuffer HandleType;
460 VkDeviceSize size;
461};
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800462DEFINE_OBJECT_HANDLE_CONVERSION(Buffer)
Jesse Hallf6578742015-08-29 17:06:12 +0100463
464VkResult CreateBuffer(VkDevice device,
465 const VkBufferCreateInfo* create_info,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800466 const VkAllocationCallbacks* allocator,
Jesse Hallf6578742015-08-29 17:06:12 +0100467 VkBuffer* buffer_handle) {
Jesse Hallbde8ee32015-09-01 16:24:29 -0700468 ALOGW_IF(create_info->size > kMaxDeviceMemory,
469 "CreateBuffer: requested size 0x%" PRIx64
470 " exceeds max device memory size 0x%" PRIx64,
471 create_info->size, kMaxDeviceMemory);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800472 if (!allocator)
473 allocator = &device->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800474 Buffer* buffer = static_cast<Buffer*>(allocator->pfnAllocation(
475 allocator->pUserData, sizeof(Buffer), alignof(Buffer),
476 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hallf6578742015-08-29 17:06:12 +0100477 if (!buffer)
478 return VK_ERROR_OUT_OF_HOST_MEMORY;
479 buffer->size = create_info->size;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800480 *buffer_handle = GetHandleToBuffer(buffer);
Jesse Hallf6578742015-08-29 17:06:12 +0100481 return VK_SUCCESS;
482}
483
Jesse Hall606a54e2015-11-19 22:17:28 -0800484void GetBufferMemoryRequirements(VkDevice,
485 VkBuffer buffer_handle,
486 VkMemoryRequirements* requirements) {
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800487 Buffer* buffer = GetBufferFromHandle(buffer_handle);
Jesse Hallf6578742015-08-29 17:06:12 +0100488 requirements->size = buffer->size;
489 requirements->alignment = 16; // allow fast Neon/SSE memcpy
490 requirements->memoryTypeBits = 0x1;
Jesse Hallf6578742015-08-29 17:06:12 +0100491}
492
Jesse Hall03b6fe12015-11-24 12:44:21 -0800493void DestroyBuffer(VkDevice device,
494 VkBuffer buffer_handle,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800495 const VkAllocationCallbacks* allocator) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800496 if (!allocator)
497 allocator = &device->allocator;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800498 Buffer* buffer = GetBufferFromHandle(buffer_handle);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800499 allocator->pfnFree(allocator->pUserData, buffer);
Jesse Hallf6578742015-08-29 17:06:12 +0100500}
501
502// -----------------------------------------------------------------------------
Jesse Hall85c05b62015-09-01 18:07:41 -0700503// Image
504
505struct Image {
506 typedef VkImage HandleType;
507 VkDeviceSize size;
508};
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800509DEFINE_OBJECT_HANDLE_CONVERSION(Image)
Jesse Hall85c05b62015-09-01 18:07:41 -0700510
511VkResult CreateImage(VkDevice device,
512 const VkImageCreateInfo* create_info,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800513 const VkAllocationCallbacks* allocator,
Jesse Hall85c05b62015-09-01 18:07:41 -0700514 VkImage* image_handle) {
515 if (create_info->imageType != VK_IMAGE_TYPE_2D ||
516 create_info->format != VK_FORMAT_R8G8B8A8_UNORM ||
517 create_info->mipLevels != 1) {
518 ALOGE("CreateImage: not yet implemented: type=%d format=%d mips=%u",
519 create_info->imageType, create_info->format,
520 create_info->mipLevels);
Jesse Halla15a4bf2015-11-19 22:48:02 -0800521 return VK_ERROR_OUT_OF_HOST_MEMORY;
Jesse Hall85c05b62015-09-01 18:07:41 -0700522 }
523
524 VkDeviceSize size =
525 VkDeviceSize(create_info->extent.width * create_info->extent.height) *
Jesse Halla15a4bf2015-11-19 22:48:02 -0800526 create_info->arrayLayers * create_info->samples * 4u;
Jesse Hall85c05b62015-09-01 18:07:41 -0700527 ALOGW_IF(size > kMaxDeviceMemory,
528 "CreateImage: image size 0x%" PRIx64
529 " exceeds max device memory size 0x%" PRIx64,
530 size, kMaxDeviceMemory);
531
Jesse Hall03b6fe12015-11-24 12:44:21 -0800532 if (!allocator)
533 allocator = &device->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800534 Image* image = static_cast<Image*>(allocator->pfnAllocation(
535 allocator->pUserData, sizeof(Image), alignof(Image),
536 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hall85c05b62015-09-01 18:07:41 -0700537 if (!image)
538 return VK_ERROR_OUT_OF_HOST_MEMORY;
539 image->size = size;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800540 *image_handle = GetHandleToImage(image);
Jesse Hall85c05b62015-09-01 18:07:41 -0700541 return VK_SUCCESS;
542}
543
Jesse Hall606a54e2015-11-19 22:17:28 -0800544void GetImageMemoryRequirements(VkDevice,
545 VkImage image_handle,
546 VkMemoryRequirements* requirements) {
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800547 Image* image = GetImageFromHandle(image_handle);
Jesse Hall85c05b62015-09-01 18:07:41 -0700548 requirements->size = image->size;
549 requirements->alignment = 16; // allow fast Neon/SSE memcpy
550 requirements->memoryTypeBits = 0x1;
Jesse Hall85c05b62015-09-01 18:07:41 -0700551}
552
Jesse Hall03b6fe12015-11-24 12:44:21 -0800553void DestroyImage(VkDevice device,
554 VkImage image_handle,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800555 const VkAllocationCallbacks* allocator) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800556 if (!allocator)
557 allocator = &device->allocator;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800558 Image* image = GetImageFromHandle(image_handle);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800559 allocator->pfnFree(allocator->pUserData, image);
Jesse Hall85c05b62015-09-01 18:07:41 -0700560}
561
562// -----------------------------------------------------------------------------
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700563// No-op types
564
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700565VkResult CreateBufferView(VkDevice device,
566 const VkBufferViewCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800567 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700568 VkBufferView* view) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800569 *view = AllocHandle<VkBufferView>(device, HandleType::kBufferView);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700570 return VK_SUCCESS;
571}
572
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700573VkResult CreateDescriptorPool(VkDevice device,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700574 const VkDescriptorPoolCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800575 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700576 VkDescriptorPool* pool) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800577 *pool = AllocHandle<VkDescriptorPool>(device, HandleType::kDescriptorPool);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700578 return VK_SUCCESS;
579}
580
Jesse Hall3fbc8562015-11-29 22:10:52 -0800581VkResult AllocateDescriptorSets(VkDevice device,
582 const VkDescriptorSetAllocateInfo* alloc_info,
583 VkDescriptorSet* descriptor_sets) {
Jesse Hall3dd678a2016-01-08 21:52:01 -0800584 for (uint32_t i = 0; i < alloc_info->descriptorSetCount; i++)
Michael Lentine3fec89e2015-12-04 16:25:11 -0800585 descriptor_sets[i] =
586 AllocHandle<VkDescriptorSet>(device, HandleType::kDescriptorSet);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700587 return VK_SUCCESS;
588}
589
590VkResult CreateDescriptorSetLayout(VkDevice device,
591 const VkDescriptorSetLayoutCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800592 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700593 VkDescriptorSetLayout* layout) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800594 *layout = AllocHandle<VkDescriptorSetLayout>(
595 device, HandleType::kDescriptorSetLayout);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700596 return VK_SUCCESS;
597}
598
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700599VkResult CreateEvent(VkDevice device,
600 const VkEventCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800601 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700602 VkEvent* event) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800603 *event = AllocHandle<VkEvent>(device, HandleType::kEvent);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700604 return VK_SUCCESS;
605}
606
607VkResult CreateFence(VkDevice device,
608 const VkFenceCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800609 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700610 VkFence* fence) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800611 *fence = AllocHandle<VkFence>(device, HandleType::kFence);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700612 return VK_SUCCESS;
613}
614
615VkResult CreateFramebuffer(VkDevice device,
616 const VkFramebufferCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800617 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700618 VkFramebuffer* framebuffer) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800619 *framebuffer = AllocHandle<VkFramebuffer>(device, HandleType::kFramebuffer);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700620 return VK_SUCCESS;
621}
622
623VkResult CreateImageView(VkDevice device,
624 const VkImageViewCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800625 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700626 VkImageView* view) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800627 *view = AllocHandle<VkImageView>(device, HandleType::kImageView);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700628 return VK_SUCCESS;
629}
630
631VkResult CreateGraphicsPipelines(VkDevice device,
632 VkPipelineCache,
633 uint32_t count,
634 const VkGraphicsPipelineCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800635 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700636 VkPipeline* pipelines) {
637 for (uint32_t i = 0; i < count; i++)
Michael Lentine3fec89e2015-12-04 16:25:11 -0800638 pipelines[i] = AllocHandle<VkPipeline>(device, HandleType::kPipeline);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700639 return VK_SUCCESS;
640}
641
642VkResult CreateComputePipelines(VkDevice device,
643 VkPipelineCache,
644 uint32_t count,
645 const VkComputePipelineCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800646 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700647 VkPipeline* pipelines) {
648 for (uint32_t i = 0; i < count; i++)
Michael Lentine3fec89e2015-12-04 16:25:11 -0800649 pipelines[i] = AllocHandle<VkPipeline>(device, HandleType::kPipeline);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700650 return VK_SUCCESS;
651}
652
653VkResult CreatePipelineCache(VkDevice device,
654 const VkPipelineCacheCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800655 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700656 VkPipelineCache* cache) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800657 *cache = AllocHandle<VkPipelineCache>(device, HandleType::kPipelineCache);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700658 return VK_SUCCESS;
659}
660
661VkResult CreatePipelineLayout(VkDevice device,
662 const VkPipelineLayoutCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800663 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700664 VkPipelineLayout* layout) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800665 *layout =
666 AllocHandle<VkPipelineLayout>(device, HandleType::kPipelineLayout);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700667 return VK_SUCCESS;
668}
669
670VkResult CreateQueryPool(VkDevice device,
671 const VkQueryPoolCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800672 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700673 VkQueryPool* pool) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800674 *pool = AllocHandle<VkQueryPool>(device, HandleType::kQueryPool);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700675 return VK_SUCCESS;
676}
677
678VkResult CreateRenderPass(VkDevice device,
679 const VkRenderPassCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800680 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700681 VkRenderPass* renderpass) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800682 *renderpass = AllocHandle<VkRenderPass>(device, HandleType::kRenderPass);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700683 return VK_SUCCESS;
684}
685
686VkResult CreateSampler(VkDevice device,
687 const VkSamplerCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800688 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700689 VkSampler* sampler) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800690 *sampler = AllocHandle<VkSampler>(device, HandleType::kSampler);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700691 return VK_SUCCESS;
692}
693
694VkResult CreateSemaphore(VkDevice device,
695 const VkSemaphoreCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800696 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700697 VkSemaphore* semaphore) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800698 *semaphore = AllocHandle<VkSemaphore>(device, HandleType::kSemaphore);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700699 return VK_SUCCESS;
700}
701
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700702VkResult CreateShaderModule(VkDevice device,
703 const VkShaderModuleCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800704 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700705 VkShaderModule* module) {
Michael Lentine3fec89e2015-12-04 16:25:11 -0800706 *module = AllocHandle<VkShaderModule>(device, HandleType::kShaderModule);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700707 return VK_SUCCESS;
708}
709
Jesse Hall70f93352015-11-04 09:41:31 -0800710VkResult GetSwapchainGrallocUsageANDROID(VkDevice,
711 VkFormat,
712 VkImageUsageFlags,
713 int* grallocUsage) {
714 // The null driver never reads or writes the gralloc buffer
715 *grallocUsage = 0;
716 return VK_SUCCESS;
717}
718
Jesse Hall1f91d392015-12-11 16:28:44 -0800719VkResult AcquireImageANDROID(VkDevice,
720 VkImage,
721 int fence,
722 VkSemaphore,
723 VkFence) {
Jesse Halld7b994a2015-09-07 14:17:37 -0700724 close(fence);
725 return VK_SUCCESS;
726}
727
Jesse Hallab9aeef2015-11-04 10:56:20 -0800728VkResult QueueSignalReleaseImageANDROID(VkQueue, VkImage, int* fence) {
Jesse Halld7b994a2015-09-07 14:17:37 -0700729 *fence = -1;
730 return VK_SUCCESS;
731}
732
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700733// -----------------------------------------------------------------------------
Jesse Hall04f4f472015-08-16 19:51:04 -0700734// No-op entrypoints
735
736// clang-format off
737#pragma clang diagnostic push
738#pragma clang diagnostic ignored "-Wunused-parameter"
739
Jesse Hall606a54e2015-11-19 22:17:28 -0800740void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100741 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700742}
743
Jesse Hall606a54e2015-11-19 22:17:28 -0800744void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100745 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700746}
747
Jesse Halla9e57032015-11-30 01:03:10 -0800748VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100749 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Halla9e57032015-11-30 01:03:10 -0800750 return VK_SUCCESS;
Jesse Hall04f4f472015-08-16 19:51:04 -0700751}
752
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700753VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100754 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700755 return VK_SUCCESS;
756}
757
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700758VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100759 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700760 return VK_SUCCESS;
761}
762
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700763VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100764 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700765 return VK_SUCCESS;
766}
767
Jesse Halla366a512015-11-19 22:30:07 -0800768VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700769 return VK_SUCCESS;
770}
771
772VkResult QueueWaitIdle(VkQueue queue) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100773 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700774 return VK_SUCCESS;
775}
776
777VkResult DeviceWaitIdle(VkDevice device) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100778 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700779 return VK_SUCCESS;
780}
781
Jesse Hallcf25c412015-10-29 17:14:50 -0700782void UnmapMemory(VkDevice device, VkDeviceMemory mem) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700783}
784
785VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100786 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700787 return VK_SUCCESS;
788}
789
790VkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100791 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700792 return VK_SUCCESS;
793}
794
Jesse Hall606a54e2015-11-19 22:17:28 -0800795void GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100796 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700797}
798
Jesse Hall04f4f472015-08-16 19:51:04 -0700799VkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) {
800 return VK_SUCCESS;
801}
802
Jesse Hall04f4f472015-08-16 19:51:04 -0700803VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) {
804 return VK_SUCCESS;
805}
806
Jesse Hall606a54e2015-11-19 22:17:28 -0800807void GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100808 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700809}
810
Jesse Hall091ed9e2015-11-30 00:55:29 -0800811void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100812 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700813}
814
Jesse Halla6429252015-11-29 18:59:42 -0800815VkResult QueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100816 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700817 return VK_SUCCESS;
818}
819
Jesse Hall3fbc8562015-11-29 22:10:52 -0800820void DestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700821}
822
823VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
824 return VK_SUCCESS;
825}
826
827VkResult GetFenceStatus(VkDevice device, VkFence fence) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100828 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700829 return VK_SUCCESS;
830}
831
832VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) {
833 return VK_SUCCESS;
834}
835
Jesse Hall3fbc8562015-11-29 22:10:52 -0800836void DestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700837}
838
Jesse Hall3fbc8562015-11-29 22:10:52 -0800839void DestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700840}
841
842VkResult GetEventStatus(VkDevice device, VkEvent event) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100843 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700844 return VK_SUCCESS;
845}
846
847VkResult SetEvent(VkDevice device, VkEvent event) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100848 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700849 return VK_SUCCESS;
850}
851
852VkResult ResetEvent(VkDevice device, VkEvent event) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100853 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700854 return VK_SUCCESS;
855}
856
Jesse Hall3fbc8562015-11-29 22:10:52 -0800857void DestroyQueryPool(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700858}
859
Jesse Halla9bb62b2015-11-21 19:31:56 -0800860VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100861 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700862 return VK_SUCCESS;
863}
864
Jesse Hall3fbc8562015-11-29 22:10:52 -0800865void DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700866}
867
Jesse Hall606a54e2015-11-19 22:17:28 -0800868void GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100869 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700870}
871
Jesse Hall3fbc8562015-11-29 22:10:52 -0800872void DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700873}
874
Jesse Hall3fbc8562015-11-29 22:10:52 -0800875void DestroyShaderModule(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700876}
877
Jesse Hall3fbc8562015-11-29 22:10:52 -0800878void DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700879}
880
Jesse Halla9bb62b2015-11-21 19:31:56 -0800881VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100882 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700883 return VK_SUCCESS;
884}
885
886VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100887 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700888 return VK_SUCCESS;
889}
890
Jesse Hall3fbc8562015-11-29 22:10:52 -0800891void DestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700892}
893
Jesse Hall3fbc8562015-11-29 22:10:52 -0800894void DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700895}
896
Jesse Hall3fbc8562015-11-29 22:10:52 -0800897void DestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700898}
899
Jesse Hall3fbc8562015-11-29 22:10:52 -0800900void DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700901}
902
Jesse Hall3fbc8562015-11-29 22:10:52 -0800903void DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700904}
905
Jesse Hallfbf97b02015-11-20 14:17:03 -0800906VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100907 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700908 return VK_SUCCESS;
909}
910
Jesse Hallcf25c412015-10-29 17:14:50 -0700911void UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100912 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700913}
914
915VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100916 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700917 return VK_SUCCESS;
918}
919
Jesse Hall3fbc8562015-11-29 22:10:52 -0800920void DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700921}
922
Jesse Hall3fbc8562015-11-29 22:10:52 -0800923void DestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* allocator) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700924}
925
Jesse Hall606a54e2015-11-19 22:17:28 -0800926void GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100927 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700928}
929
Jesse Hall3fbc8562015-11-29 22:10:52 -0800930VkResult ResetCommandPool(VkDevice device, VkCommandPool cmdPool, VkCommandPoolResetFlags flags) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100931 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700932 return VK_SUCCESS;
933}
934
Jesse Hall3fbc8562015-11-29 22:10:52 -0800935VkResult BeginCommandBuffer(VkCommandBuffer cmdBuffer, const VkCommandBufferBeginInfo* pBeginInfo) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700936 return VK_SUCCESS;
937}
938
Jesse Hall3fbc8562015-11-29 22:10:52 -0800939VkResult EndCommandBuffer(VkCommandBuffer cmdBuffer) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700940 return VK_SUCCESS;
941}
942
Jesse Hall3fbc8562015-11-29 22:10:52 -0800943VkResult ResetCommandBuffer(VkCommandBuffer cmdBuffer, VkCommandBufferResetFlags flags) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100944 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700945 return VK_SUCCESS;
946}
947
Jesse Hall3fbc8562015-11-29 22:10:52 -0800948void CmdBindPipeline(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700949}
950
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800951void CmdSetViewport(VkCommandBuffer cmdBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700952}
953
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800954void CmdSetScissor(VkCommandBuffer cmdBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700955}
956
Jesse Hall3fbc8562015-11-29 22:10:52 -0800957void CmdSetLineWidth(VkCommandBuffer cmdBuffer, float lineWidth) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700958}
959
Jesse Hall3fbc8562015-11-29 22:10:52 -0800960void CmdSetDepthBias(VkCommandBuffer cmdBuffer, float depthBias, float depthBiasClamp, float slopeScaledDepthBias) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700961}
962
Jesse Hall3fbc8562015-11-29 22:10:52 -0800963void CmdSetBlendConstants(VkCommandBuffer cmdBuffer, const float blendConst[4]) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700964}
965
Jesse Hall3fbc8562015-11-29 22:10:52 -0800966void CmdSetDepthBounds(VkCommandBuffer cmdBuffer, float minDepthBounds, float maxDepthBounds) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700967}
968
Jesse Hall3fbc8562015-11-29 22:10:52 -0800969void CmdSetStencilCompareMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilCompareMask) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700970}
971
Jesse Hall3fbc8562015-11-29 22:10:52 -0800972void CmdSetStencilWriteMask(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilWriteMask) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700973}
974
Jesse Hall3fbc8562015-11-29 22:10:52 -0800975void CmdSetStencilReference(VkCommandBuffer cmdBuffer, VkStencilFaceFlags faceMask, uint32_t stencilReference) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700976}
977
Jesse Hall3fbc8562015-11-29 22:10:52 -0800978void CmdBindDescriptorSets(VkCommandBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700979}
980
Jesse Hall3fbc8562015-11-29 22:10:52 -0800981void CmdBindIndexBuffer(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700982}
983
Jesse Hall3fbc8562015-11-29 22:10:52 -0800984void CmdBindVertexBuffers(VkCommandBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700985}
986
Jesse Hall3fbc8562015-11-29 22:10:52 -0800987void CmdDraw(VkCommandBuffer cmdBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700988}
989
Jesse Hall3fbc8562015-11-29 22:10:52 -0800990void CmdDrawIndexed(VkCommandBuffer cmdBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700991}
992
Jesse Hall3fbc8562015-11-29 22:10:52 -0800993void CmdDrawIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700994}
995
Jesse Hall3fbc8562015-11-29 22:10:52 -0800996void CmdDrawIndexedIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700997}
998
Jesse Hall3fbc8562015-11-29 22:10:52 -0800999void CmdDispatch(VkCommandBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001000}
1001
Jesse Hall3fbc8562015-11-29 22:10:52 -08001002void CmdDispatchIndirect(VkCommandBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001003}
1004
Jesse Hall3fbc8562015-11-29 22:10:52 -08001005void CmdCopyBuffer(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001006}
1007
Jesse Hall3fbc8562015-11-29 22:10:52 -08001008void CmdCopyImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001009}
1010
Jesse Hall3fbc8562015-11-29 22:10:52 -08001011void CmdBlitImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001012}
1013
Jesse Hall3fbc8562015-11-29 22:10:52 -08001014void CmdCopyBufferToImage(VkCommandBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001015}
1016
Jesse Hall3fbc8562015-11-29 22:10:52 -08001017void CmdCopyImageToBuffer(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001018}
1019
Jesse Hall3fbc8562015-11-29 22:10:52 -08001020void CmdUpdateBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001021}
1022
Jesse Hall3fbc8562015-11-29 22:10:52 -08001023void CmdFillBuffer(VkCommandBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001024}
1025
Jesse Hall3fbc8562015-11-29 22:10:52 -08001026void CmdClearColorImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001027}
1028
Jesse Hall3fbc8562015-11-29 22:10:52 -08001029void CmdClearDepthStencilImage(VkCommandBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001030}
1031
Jesse Hall3fbc8562015-11-29 22:10:52 -08001032void CmdClearAttachments(VkCommandBuffer cmdBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001033}
1034
Jesse Hall3fbc8562015-11-29 22:10:52 -08001035void CmdResolveImage(VkCommandBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001036}
1037
Jesse Hall3fbc8562015-11-29 22:10:52 -08001038void CmdSetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001039}
1040
Jesse Hall3fbc8562015-11-29 22:10:52 -08001041void CmdResetEvent(VkCommandBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001042}
1043
Jesse Hall3dd678a2016-01-08 21:52:01 -08001044void CmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001045}
1046
Jesse Hall3dd678a2016-01-08 21:52:01 -08001047void CmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001048}
1049
Jesse Hall3fbc8562015-11-29 22:10:52 -08001050void CmdBeginQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001051}
1052
Jesse Hall3fbc8562015-11-29 22:10:52 -08001053void CmdEndQuery(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001054}
1055
Jesse Hall3fbc8562015-11-29 22:10:52 -08001056void CmdResetQueryPool(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001057}
1058
Jesse Hall3fbc8562015-11-29 22:10:52 -08001059void CmdWriteTimestamp(VkCommandBuffer cmdBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t slot) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001060}
1061
Jesse Hall3fbc8562015-11-29 22:10:52 -08001062void CmdCopyQueryPoolResults(VkCommandBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001063}
1064
Jesse Hall3fbc8562015-11-29 22:10:52 -08001065void CmdPushConstants(VkCommandBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001066}
1067
Jesse Hall65ab5522015-11-30 00:07:16 -08001068void CmdBeginRenderPass(VkCommandBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001069}
1070
Jesse Hall65ab5522015-11-30 00:07:16 -08001071void CmdNextSubpass(VkCommandBuffer cmdBuffer, VkSubpassContents contents) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001072}
1073
Jesse Hall3fbc8562015-11-29 22:10:52 -08001074void CmdEndRenderPass(VkCommandBuffer cmdBuffer) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001075}
1076
Jesse Hall3fbc8562015-11-29 22:10:52 -08001077void CmdExecuteCommands(VkCommandBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCommandBuffer* pCmdBuffers) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001078}
1079
Jesse Hall04f4f472015-08-16 19:51:04 -07001080#pragma clang diagnostic pop
1081// clang-format on
1082
1083} // namespace null_driver