blob: e75eb3ac777feda54621ee3584d706cb104515a4 [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 Hallf8faf0c2015-08-31 11:34:32 -070019#include <array>
Jesse Hall04f4f472015-08-16 19:51:04 -070020#include <algorithm>
Jesse Hallbde8ee32015-09-01 16:24:29 -070021#include <inttypes.h>
22#include <string.h>
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
28#include "null_driver.h"
29
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 Hall03b6fe12015-11-24 12:44:21 -0800132VkResult CreateInstance(const VkInstanceCreateInfo* /*create_info*/,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800133 const VkAllocationCallbacks* allocator,
Jesse Hall04f4f472015-08-16 19:51:04 -0700134 VkInstance* out_instance) {
Jesse Hallb1352bc2015-09-04 16:12:33 -0700135 // Assume the loader provided alloc callbacks even if the app didn't.
136 ALOG_ASSERT(
Jesse Hall03b6fe12015-11-24 12:44:21 -0800137 allocator,
Jesse Hallb1352bc2015-09-04 16:12:33 -0700138 "Missing alloc callbacks, loader or app should have provided them");
139
Jesse Hall3fbc8562015-11-29 22:10:52 -0800140 VkInstance_T* instance =
141 static_cast<VkInstance_T*>(allocator->pfnAllocation(
142 allocator->pUserData, sizeof(VkInstance_T), alignof(VkInstance_T),
143 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE));
Jesse Hall04f4f472015-08-16 19:51:04 -0700144 if (!instance)
145 return VK_ERROR_OUT_OF_HOST_MEMORY;
146
147 instance->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800148 instance->allocator = *allocator;
Jesse Hall04f4f472015-08-16 19:51:04 -0700149 instance->physical_device.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
150
151 *out_instance = instance;
152 return VK_SUCCESS;
153}
154
155int CloseDevice(struct hw_device_t* /*device*/) {
156 // nothing to do - opening a device doesn't allocate any resources
157 return 0;
158}
159
160hwvulkan_device_t nulldrv_device = {
161 .common =
162 {
Michael Lentine03c64b02015-08-26 18:27:26 -0500163 .tag = HARDWARE_DEVICE_TAG,
164 .version = HWVULKAN_DEVICE_API_VERSION_0_1,
165 .module = &HAL_MODULE_INFO_SYM.common,
166 .close = CloseDevice,
Jesse Hall04f4f472015-08-16 19:51:04 -0700167 },
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700168 .EnumerateInstanceExtensionProperties =
169 EnumerateInstanceExtensionProperties,
Jesse Hall04f4f472015-08-16 19:51:04 -0700170 .CreateInstance = CreateInstance,
171 .GetInstanceProcAddr = GetInstanceProcAddr};
172
173int OpenDevice(const hw_module_t* /*module*/,
174 const char* id,
175 hw_device_t** device) {
176 if (strcmp(id, HWVULKAN_DEVICE_0) == 0) {
177 *device = &nulldrv_device.common;
178 return 0;
179 }
180 return -ENOENT;
181}
182
183VkInstance_T* GetInstanceFromPhysicalDevice(
184 VkPhysicalDevice_T* physical_device) {
185 return reinterpret_cast<VkInstance_T*>(
186 reinterpret_cast<uintptr_t>(physical_device) -
187 offsetof(VkInstance_T, physical_device));
188}
189
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700190uint64_t AllocHandle(VkDevice device, HandleType::Enum type) {
191 const uint64_t kHandleMask = (UINT64_C(1) << 56) - 1;
192 ALOGE_IF(device->next_handle[type] == kHandleMask,
Jesse Hallbde8ee32015-09-01 16:24:29 -0700193 "non-dispatchable handles of type=%u are about to overflow", type);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700194 return (UINT64_C(1) << 63) | ((uint64_t(type) & 0x7) << 56) |
195 (device->next_handle[type]++ & kHandleMask);
196}
197
Jesse Hall04f4f472015-08-16 19:51:04 -0700198} // namespace
199
200namespace null_driver {
201
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800202#define DEFINE_OBJECT_HANDLE_CONVERSION(T) \
203 T* Get##T##FromHandle(Vk##T h); \
204 T* Get##T##FromHandle(Vk##T h) { \
205 return reinterpret_cast<T*>(uintptr_t(h)); \
206 } \
207 Vk##T GetHandleTo##T(const T* obj); \
208 Vk##T GetHandleTo##T(const T* obj) { \
209 return Vk##T(reinterpret_cast<uintptr_t>(obj)); \
210 }
Jesse Hallf6578742015-08-29 17:06:12 +0100211
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100212// -----------------------------------------------------------------------------
213// Global
214
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700215VkResult EnumerateInstanceExtensionProperties(const char*,
216 uint32_t* count,
217 VkExtensionProperties*) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100218 *count = 0;
219 return VK_SUCCESS;
220}
221
Jesse Hall04f4f472015-08-16 19:51:04 -0700222PFN_vkVoidFunction GetInstanceProcAddr(VkInstance, const char* name) {
223 PFN_vkVoidFunction proc = LookupInstanceProcAddr(name);
224 if (!proc && strcmp(name, "vkGetDeviceProcAddr") == 0)
225 proc = reinterpret_cast<PFN_vkVoidFunction>(GetDeviceProcAddr);
226 return proc;
227}
228
229PFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) {
Jesse Hallb1352bc2015-09-04 16:12:33 -0700230 PFN_vkVoidFunction proc = LookupDeviceProcAddr(name);
231 if (proc)
232 return proc;
Jesse Hall70f93352015-11-04 09:41:31 -0800233 if (strcmp(name, "vkGetSwapchainGrallocUsageANDROID") == 0)
234 return reinterpret_cast<PFN_vkVoidFunction>(
235 GetSwapchainGrallocUsageANDROID);
Jesse Hallab9aeef2015-11-04 10:56:20 -0800236 if (strcmp(name, "vkAcquireImageANDROID") == 0)
237 return reinterpret_cast<PFN_vkVoidFunction>(AcquireImageANDROID);
238 if (strcmp(name, "vkQueueSignalReleaseImageANDROID") == 0)
Jesse Hallb1352bc2015-09-04 16:12:33 -0700239 return reinterpret_cast<PFN_vkVoidFunction>(
Jesse Hallab9aeef2015-11-04 10:56:20 -0800240 QueueSignalReleaseImageANDROID);
Jesse Hallb1352bc2015-09-04 16:12:33 -0700241 return nullptr;
Jesse Hall04f4f472015-08-16 19:51:04 -0700242}
243
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100244// -----------------------------------------------------------------------------
245// Instance
246
Jesse Hall03b6fe12015-11-24 12:44:21 -0800247void DestroyInstance(VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800248 const VkAllocationCallbacks* /*allocator*/) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800249 instance->allocator.pfnFree(instance->allocator.pUserData, instance);
Jesse Hall04f4f472015-08-16 19:51:04 -0700250}
251
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100252// -----------------------------------------------------------------------------
253// PhysicalDevice
254
Jesse Hall04f4f472015-08-16 19:51:04 -0700255VkResult EnumeratePhysicalDevices(VkInstance instance,
256 uint32_t* physical_device_count,
257 VkPhysicalDevice* physical_devices) {
258 if (physical_devices && *physical_device_count >= 1)
259 physical_devices[0] = &instance->physical_device;
260 *physical_device_count = 1;
261 return VK_SUCCESS;
262}
263
Jesse Hall606a54e2015-11-19 22:17:28 -0800264void GetPhysicalDeviceProperties(VkPhysicalDevice,
265 VkPhysicalDeviceProperties* properties) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700266 properties->apiVersion = VK_API_VERSION;
267 properties->driverVersion = VK_MAKE_VERSION(0, 0, 1);
Jesse Hall65ab5522015-11-30 00:07:16 -0800268 properties->vendorID = 0;
269 properties->deviceID = 0;
Jesse Hall04f4f472015-08-16 19:51:04 -0700270 properties->deviceType = VK_PHYSICAL_DEVICE_TYPE_OTHER;
271 strcpy(properties->deviceName, "Android Vulkan Null Driver");
272 memset(properties->pipelineCacheUUID, 0,
273 sizeof(properties->pipelineCacheUUID));
Jesse Hall04f4f472015-08-16 19:51:04 -0700274}
275
Jesse Hall606a54e2015-11-19 22:17:28 -0800276void GetPhysicalDeviceQueueFamilyProperties(
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700277 VkPhysicalDevice,
278 uint32_t* count,
279 VkQueueFamilyProperties* properties) {
280 if (properties) {
Jesse Hall65ab5522015-11-30 00:07:16 -0800281 properties->queueFlags = VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT |
282 VK_QUEUE_TRANSFER_BIT;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700283 properties->queueCount = 1;
Jesse Hallacfa5342015-11-19 21:51:33 -0800284 properties->timestampValidBits = 64;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700285 }
286 *count = 1;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700287}
288
Jesse Hall606a54e2015-11-19 22:17:28 -0800289void GetPhysicalDeviceMemoryProperties(
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100290 VkPhysicalDevice,
291 VkPhysicalDeviceMemoryProperties* properties) {
292 properties->memoryTypeCount = 1;
293 properties->memoryTypes[0].propertyFlags =
Jesse Halld1af8122015-11-29 23:50:38 -0800294 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT |
295 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
296 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT |
297 VK_MEMORY_PROPERTY_HOST_CACHED_BIT;
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100298 properties->memoryTypes[0].heapIndex = 0;
299 properties->memoryHeapCount = 1;
Jesse Hallbde8ee32015-09-01 16:24:29 -0700300 properties->memoryHeaps[0].size = kMaxDeviceMemory;
Jesse Halld1af8122015-11-29 23:50:38 -0800301 properties->memoryHeaps[0].flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT;
Jesse Hall04f4f472015-08-16 19:51:04 -0700302}
303
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100304// -----------------------------------------------------------------------------
305// Device
306
Jesse Hall04f4f472015-08-16 19:51:04 -0700307VkResult CreateDevice(VkPhysicalDevice physical_device,
308 const VkDeviceCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800309 const VkAllocationCallbacks* allocator,
Jesse Hall04f4f472015-08-16 19:51:04 -0700310 VkDevice* out_device) {
311 VkInstance_T* instance = GetInstanceFromPhysicalDevice(physical_device);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800312 if (!allocator)
313 allocator = &instance->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800314 VkDevice_T* device = static_cast<VkDevice_T*>(allocator->pfnAllocation(
315 allocator->pUserData, sizeof(VkDevice_T), alignof(VkDevice_T),
316 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE));
Jesse Hall04f4f472015-08-16 19:51:04 -0700317 if (!device)
318 return VK_ERROR_OUT_OF_HOST_MEMORY;
319
320 device->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800321 device->allocator = *allocator;
Jesse Hall04f4f472015-08-16 19:51:04 -0700322 device->instance = instance;
323 device->queue.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700324 std::fill(device->next_handle.begin(), device->next_handle.end(),
325 UINT64_C(0));
Jesse Hall04f4f472015-08-16 19:51:04 -0700326
327 *out_device = device;
328 return VK_SUCCESS;
329}
330
Jesse Hall3fbc8562015-11-29 22:10:52 -0800331void DestroyDevice(VkDevice device,
332 const VkAllocationCallbacks* /*allocator*/) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700333 if (!device)
Jesse Hallcf25c412015-10-29 17:14:50 -0700334 return;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800335 device->allocator.pfnFree(device->allocator.pUserData, device);
Jesse Hall04f4f472015-08-16 19:51:04 -0700336}
337
Jesse Hall606a54e2015-11-19 22:17:28 -0800338void GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700339 *queue = &device->queue;
Jesse Hall04f4f472015-08-16 19:51:04 -0700340}
341
342// -----------------------------------------------------------------------------
Jesse Hall3fbc8562015-11-29 22:10:52 -0800343// CommandPool
Jesse Hall03b6fe12015-11-24 12:44:21 -0800344
Jesse Hall3fbc8562015-11-29 22:10:52 -0800345struct CommandPool {
346 typedef VkCommandPool HandleType;
347 VkAllocationCallbacks allocator;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800348};
Jesse Hall3fbc8562015-11-29 22:10:52 -0800349DEFINE_OBJECT_HANDLE_CONVERSION(CommandPool)
Jesse Hall03b6fe12015-11-24 12:44:21 -0800350
351VkResult CreateCommandPool(VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800352 const VkCommandPoolCreateInfo* /*create_info*/,
353 const VkAllocationCallbacks* allocator,
354 VkCommandPool* cmd_pool) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800355 if (!allocator)
356 allocator = &device->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800357 CommandPool* pool = static_cast<CommandPool*>(allocator->pfnAllocation(
358 allocator->pUserData, sizeof(CommandPool), alignof(CommandPool),
359 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hall03b6fe12015-11-24 12:44:21 -0800360 if (!pool)
361 return VK_ERROR_OUT_OF_HOST_MEMORY;
362 pool->allocator = *allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800363 *cmd_pool = GetHandleToCommandPool(pool);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800364 return VK_SUCCESS;
365}
366
367void DestroyCommandPool(VkDevice /*device*/,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800368 VkCommandPool cmd_pool,
369 const VkAllocationCallbacks* /*allocator*/) {
370 CommandPool* pool = GetCommandPoolFromHandle(cmd_pool);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800371 pool->allocator.pfnFree(pool->allocator.pUserData, pool);
372}
373
374// -----------------------------------------------------------------------------
Jesse Hallc7a6eb52015-08-31 12:52:03 -0700375// CmdBuffer
376
Jesse Hall3fbc8562015-11-29 22:10:52 -0800377VkResult AllocateCommandBuffers(VkDevice /*device*/,
378 const VkCommandBufferAllocateInfo* alloc_info,
379 VkCommandBuffer* cmdbufs) {
Jesse Hallfbf97b02015-11-20 14:17:03 -0800380 VkResult result = VK_SUCCESS;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800381 CommandPool& pool = *GetCommandPoolFromHandle(alloc_info->commandPool);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800382 std::fill(cmdbufs, cmdbufs + alloc_info->bufferCount, nullptr);
383 for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800384 cmdbufs[i] =
385 static_cast<VkCommandBuffer_T*>(pool.allocator.pfnAllocation(
386 pool.allocator.pUserData, sizeof(VkCommandBuffer_T),
387 alignof(VkCommandBuffer_T), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hallfbf97b02015-11-20 14:17:03 -0800388 if (!cmdbufs[i]) {
389 result = VK_ERROR_OUT_OF_HOST_MEMORY;
390 break;
391 }
392 cmdbufs[i]->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
393 }
394 if (result != VK_SUCCESS) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800395 for (uint32_t i = 0; i < alloc_info->bufferCount; i++) {
Jesse Hallfbf97b02015-11-20 14:17:03 -0800396 if (!cmdbufs[i])
397 break;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800398 pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
Jesse Hallfbf97b02015-11-20 14:17:03 -0800399 }
400 }
Jesse Hallfbf97b02015-11-20 14:17:03 -0800401 return result;
Jesse Hallc7a6eb52015-08-31 12:52:03 -0700402}
403
Jesse Hall03b6fe12015-11-24 12:44:21 -0800404void FreeCommandBuffers(VkDevice /*device*/,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800405 VkCommandPool cmd_pool,
Jesse Hallfbf97b02015-11-20 14:17:03 -0800406 uint32_t count,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800407 const VkCommandBuffer* cmdbufs) {
408 CommandPool& pool = *GetCommandPoolFromHandle(cmd_pool);
Jesse Hallfbf97b02015-11-20 14:17:03 -0800409 for (uint32_t i = 0; i < count; i++)
Jesse Hall03b6fe12015-11-24 12:44:21 -0800410 pool.allocator.pfnFree(pool.allocator.pUserData, cmdbufs[i]);
Jesse Hallc7a6eb52015-08-31 12:52:03 -0700411}
412
413// -----------------------------------------------------------------------------
Jesse Hall2077ce02015-08-29 18:10:59 +0100414// DeviceMemory
415
416struct DeviceMemory {
417 typedef VkDeviceMemory HandleType;
418 VkDeviceSize size;
419 alignas(16) uint8_t data[0];
420};
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800421DEFINE_OBJECT_HANDLE_CONVERSION(DeviceMemory)
Jesse Hall2077ce02015-08-29 18:10:59 +0100422
Jesse Hall3fbc8562015-11-29 22:10:52 -0800423VkResult AllocateMemory(VkDevice device,
424 const VkMemoryAllocateInfo* alloc_info,
425 const VkAllocationCallbacks* allocator,
426 VkDeviceMemory* mem_handle) {
Jesse Hall2077ce02015-08-29 18:10:59 +0100427 if (SIZE_MAX - sizeof(DeviceMemory) <= alloc_info->allocationSize)
428 return VK_ERROR_OUT_OF_HOST_MEMORY;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800429 if (!allocator)
430 allocator = &device->allocator;
Jesse Hall2077ce02015-08-29 18:10:59 +0100431
Jesse Hall2077ce02015-08-29 18:10:59 +0100432 size_t size = sizeof(DeviceMemory) + size_t(alloc_info->allocationSize);
Jesse Hall3fbc8562015-11-29 22:10:52 -0800433 DeviceMemory* mem = static_cast<DeviceMemory*>(allocator->pfnAllocation(
434 allocator->pUserData, size, alignof(DeviceMemory),
435 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hall2077ce02015-08-29 18:10:59 +0100436 if (!mem)
437 return VK_ERROR_OUT_OF_HOST_MEMORY;
438 mem->size = size;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800439 *mem_handle = GetHandleToDeviceMemory(mem);
Jesse Hall2077ce02015-08-29 18:10:59 +0100440 return VK_SUCCESS;
441}
442
Jesse Hall03b6fe12015-11-24 12:44:21 -0800443void FreeMemory(VkDevice device,
444 VkDeviceMemory mem_handle,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800445 const VkAllocationCallbacks* allocator) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800446 if (!allocator)
447 allocator = &device->allocator;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800448 DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800449 allocator->pfnFree(allocator->pUserData, mem);
Jesse Hall2077ce02015-08-29 18:10:59 +0100450}
451
452VkResult MapMemory(VkDevice,
453 VkDeviceMemory mem_handle,
454 VkDeviceSize offset,
455 VkDeviceSize,
456 VkMemoryMapFlags,
457 void** out_ptr) {
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800458 DeviceMemory* mem = GetDeviceMemoryFromHandle(mem_handle);
Jesse Hall2077ce02015-08-29 18:10:59 +0100459 *out_ptr = &mem->data[0] + offset;
460 return VK_SUCCESS;
461}
462
463// -----------------------------------------------------------------------------
Jesse Hallf6578742015-08-29 17:06:12 +0100464// Buffer
465
466struct Buffer {
467 typedef VkBuffer HandleType;
468 VkDeviceSize size;
469};
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800470DEFINE_OBJECT_HANDLE_CONVERSION(Buffer)
Jesse Hallf6578742015-08-29 17:06:12 +0100471
472VkResult CreateBuffer(VkDevice device,
473 const VkBufferCreateInfo* create_info,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800474 const VkAllocationCallbacks* allocator,
Jesse Hallf6578742015-08-29 17:06:12 +0100475 VkBuffer* buffer_handle) {
Jesse Hallbde8ee32015-09-01 16:24:29 -0700476 ALOGW_IF(create_info->size > kMaxDeviceMemory,
477 "CreateBuffer: requested size 0x%" PRIx64
478 " exceeds max device memory size 0x%" PRIx64,
479 create_info->size, kMaxDeviceMemory);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800480 if (!allocator)
481 allocator = &device->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800482 Buffer* buffer = static_cast<Buffer*>(allocator->pfnAllocation(
483 allocator->pUserData, sizeof(Buffer), alignof(Buffer),
484 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hallf6578742015-08-29 17:06:12 +0100485 if (!buffer)
486 return VK_ERROR_OUT_OF_HOST_MEMORY;
487 buffer->size = create_info->size;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800488 *buffer_handle = GetHandleToBuffer(buffer);
Jesse Hallf6578742015-08-29 17:06:12 +0100489 return VK_SUCCESS;
490}
491
Jesse Hall606a54e2015-11-19 22:17:28 -0800492void GetBufferMemoryRequirements(VkDevice,
493 VkBuffer buffer_handle,
494 VkMemoryRequirements* requirements) {
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800495 Buffer* buffer = GetBufferFromHandle(buffer_handle);
Jesse Hallf6578742015-08-29 17:06:12 +0100496 requirements->size = buffer->size;
497 requirements->alignment = 16; // allow fast Neon/SSE memcpy
498 requirements->memoryTypeBits = 0x1;
Jesse Hallf6578742015-08-29 17:06:12 +0100499}
500
Jesse Hall03b6fe12015-11-24 12:44:21 -0800501void DestroyBuffer(VkDevice device,
502 VkBuffer buffer_handle,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800503 const VkAllocationCallbacks* allocator) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800504 if (!allocator)
505 allocator = &device->allocator;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800506 Buffer* buffer = GetBufferFromHandle(buffer_handle);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800507 allocator->pfnFree(allocator->pUserData, buffer);
Jesse Hallf6578742015-08-29 17:06:12 +0100508}
509
510// -----------------------------------------------------------------------------
Jesse Hall85c05b62015-09-01 18:07:41 -0700511// Image
512
513struct Image {
514 typedef VkImage HandleType;
515 VkDeviceSize size;
516};
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800517DEFINE_OBJECT_HANDLE_CONVERSION(Image)
Jesse Hall85c05b62015-09-01 18:07:41 -0700518
519VkResult CreateImage(VkDevice device,
520 const VkImageCreateInfo* create_info,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800521 const VkAllocationCallbacks* allocator,
Jesse Hall85c05b62015-09-01 18:07:41 -0700522 VkImage* image_handle) {
523 if (create_info->imageType != VK_IMAGE_TYPE_2D ||
524 create_info->format != VK_FORMAT_R8G8B8A8_UNORM ||
525 create_info->mipLevels != 1) {
526 ALOGE("CreateImage: not yet implemented: type=%d format=%d mips=%u",
527 create_info->imageType, create_info->format,
528 create_info->mipLevels);
Jesse Halla15a4bf2015-11-19 22:48:02 -0800529 return VK_ERROR_OUT_OF_HOST_MEMORY;
Jesse Hall85c05b62015-09-01 18:07:41 -0700530 }
531
532 VkDeviceSize size =
533 VkDeviceSize(create_info->extent.width * create_info->extent.height) *
Jesse Halla15a4bf2015-11-19 22:48:02 -0800534 create_info->arrayLayers * create_info->samples * 4u;
Jesse Hall85c05b62015-09-01 18:07:41 -0700535 ALOGW_IF(size > kMaxDeviceMemory,
536 "CreateImage: image size 0x%" PRIx64
537 " exceeds max device memory size 0x%" PRIx64,
538 size, kMaxDeviceMemory);
539
Jesse Hall03b6fe12015-11-24 12:44:21 -0800540 if (!allocator)
541 allocator = &device->allocator;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800542 Image* image = static_cast<Image*>(allocator->pfnAllocation(
543 allocator->pUserData, sizeof(Image), alignof(Image),
544 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT));
Jesse Hall85c05b62015-09-01 18:07:41 -0700545 if (!image)
546 return VK_ERROR_OUT_OF_HOST_MEMORY;
547 image->size = size;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800548 *image_handle = GetHandleToImage(image);
Jesse Hall85c05b62015-09-01 18:07:41 -0700549 return VK_SUCCESS;
550}
551
Jesse Hall606a54e2015-11-19 22:17:28 -0800552void GetImageMemoryRequirements(VkDevice,
553 VkImage image_handle,
554 VkMemoryRequirements* requirements) {
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800555 Image* image = GetImageFromHandle(image_handle);
Jesse Hall85c05b62015-09-01 18:07:41 -0700556 requirements->size = image->size;
557 requirements->alignment = 16; // allow fast Neon/SSE memcpy
558 requirements->memoryTypeBits = 0x1;
Jesse Hall85c05b62015-09-01 18:07:41 -0700559}
560
Jesse Hall03b6fe12015-11-24 12:44:21 -0800561void DestroyImage(VkDevice device,
562 VkImage image_handle,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800563 const VkAllocationCallbacks* allocator) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800564 if (!allocator)
565 allocator = &device->allocator;
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800566 Image* image = GetImageFromHandle(image_handle);
Jesse Hall03b6fe12015-11-24 12:44:21 -0800567 allocator->pfnFree(allocator->pUserData, image);
Jesse Hall85c05b62015-09-01 18:07:41 -0700568}
569
570// -----------------------------------------------------------------------------
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700571// No-op types
572
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700573VkResult CreateBufferView(VkDevice device,
574 const VkBufferViewCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800575 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700576 VkBufferView* view) {
577 *view = AllocHandle(device, HandleType::kBufferView);
578 return VK_SUCCESS;
579}
580
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700581VkResult CreateDescriptorPool(VkDevice device,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700582 const VkDescriptorPoolCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800583 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700584 VkDescriptorPool* pool) {
585 *pool = AllocHandle(device, HandleType::kDescriptorPool);
586 return VK_SUCCESS;
587}
588
Jesse Hall3fbc8562015-11-29 22:10:52 -0800589VkResult AllocateDescriptorSets(VkDevice device,
590 const VkDescriptorSetAllocateInfo* alloc_info,
591 VkDescriptorSet* descriptor_sets) {
Jesse Hall03b6fe12015-11-24 12:44:21 -0800592 for (uint32_t i = 0; i < alloc_info->setLayoutCount; i++)
Jesse Hallfbf97b02015-11-20 14:17:03 -0800593 descriptor_sets[i] = AllocHandle(device, HandleType::kDescriptorSet);
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700594 return VK_SUCCESS;
595}
596
597VkResult CreateDescriptorSetLayout(VkDevice device,
598 const VkDescriptorSetLayoutCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800599 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700600 VkDescriptorSetLayout* layout) {
601 *layout = AllocHandle(device, HandleType::kDescriptorSetLayout);
602 return VK_SUCCESS;
603}
604
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700605VkResult CreateEvent(VkDevice device,
606 const VkEventCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800607 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700608 VkEvent* event) {
609 *event = AllocHandle(device, HandleType::kEvent);
610 return VK_SUCCESS;
611}
612
613VkResult CreateFence(VkDevice device,
614 const VkFenceCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800615 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700616 VkFence* fence) {
617 *fence = AllocHandle(device, HandleType::kFence);
618 return VK_SUCCESS;
619}
620
621VkResult CreateFramebuffer(VkDevice device,
622 const VkFramebufferCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800623 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700624 VkFramebuffer* framebuffer) {
625 *framebuffer = AllocHandle(device, HandleType::kFramebuffer);
626 return VK_SUCCESS;
627}
628
629VkResult CreateImageView(VkDevice device,
630 const VkImageViewCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800631 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700632 VkImageView* view) {
633 *view = AllocHandle(device, HandleType::kImageView);
634 return VK_SUCCESS;
635}
636
637VkResult CreateGraphicsPipelines(VkDevice device,
638 VkPipelineCache,
639 uint32_t count,
640 const VkGraphicsPipelineCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800641 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700642 VkPipeline* pipelines) {
643 for (uint32_t i = 0; i < count; i++)
644 pipelines[i] = AllocHandle(device, HandleType::kPipeline);
645 return VK_SUCCESS;
646}
647
648VkResult CreateComputePipelines(VkDevice device,
649 VkPipelineCache,
650 uint32_t count,
651 const VkComputePipelineCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800652 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700653 VkPipeline* pipelines) {
654 for (uint32_t i = 0; i < count; i++)
655 pipelines[i] = AllocHandle(device, HandleType::kPipeline);
656 return VK_SUCCESS;
657}
658
659VkResult CreatePipelineCache(VkDevice device,
660 const VkPipelineCacheCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800661 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700662 VkPipelineCache* cache) {
663 *cache = AllocHandle(device, HandleType::kPipelineCache);
664 return VK_SUCCESS;
665}
666
667VkResult CreatePipelineLayout(VkDevice device,
668 const VkPipelineLayoutCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800669 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700670 VkPipelineLayout* layout) {
671 *layout = AllocHandle(device, HandleType::kPipelineLayout);
672 return VK_SUCCESS;
673}
674
675VkResult CreateQueryPool(VkDevice device,
676 const VkQueryPoolCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800677 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700678 VkQueryPool* pool) {
679 *pool = AllocHandle(device, HandleType::kQueryPool);
680 return VK_SUCCESS;
681}
682
683VkResult CreateRenderPass(VkDevice device,
684 const VkRenderPassCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800685 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700686 VkRenderPass* renderpass) {
687 *renderpass = AllocHandle(device, HandleType::kRenderPass);
688 return VK_SUCCESS;
689}
690
691VkResult CreateSampler(VkDevice device,
692 const VkSamplerCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800693 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700694 VkSampler* sampler) {
695 *sampler = AllocHandle(device, HandleType::kSampler);
696 return VK_SUCCESS;
697}
698
699VkResult CreateSemaphore(VkDevice device,
700 const VkSemaphoreCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800701 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700702 VkSemaphore* semaphore) {
703 *semaphore = AllocHandle(device, HandleType::kSemaphore);
704 return VK_SUCCESS;
705}
706
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700707VkResult CreateShaderModule(VkDevice device,
708 const VkShaderModuleCreateInfo*,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800709 const VkAllocationCallbacks* /*allocator*/,
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700710 VkShaderModule* module) {
711 *module = AllocHandle(device, HandleType::kShaderModule);
712 return VK_SUCCESS;
713}
714
Jesse Hall70f93352015-11-04 09:41:31 -0800715VkResult GetSwapchainGrallocUsageANDROID(VkDevice,
716 VkFormat,
717 VkImageUsageFlags,
718 int* grallocUsage) {
719 // The null driver never reads or writes the gralloc buffer
720 *grallocUsage = 0;
721 return VK_SUCCESS;
722}
723
Jesse Hallab9aeef2015-11-04 10:56:20 -0800724VkResult AcquireImageANDROID(VkDevice, VkImage, int fence, VkSemaphore) {
Jesse Halld7b994a2015-09-07 14:17:37 -0700725 close(fence);
726 return VK_SUCCESS;
727}
728
Jesse Hallab9aeef2015-11-04 10:56:20 -0800729VkResult QueueSignalReleaseImageANDROID(VkQueue, VkImage, int* fence) {
Jesse Halld7b994a2015-09-07 14:17:37 -0700730 *fence = -1;
731 return VK_SUCCESS;
732}
733
Jesse Hallf8faf0c2015-08-31 11:34:32 -0700734// -----------------------------------------------------------------------------
Jesse Hall04f4f472015-08-16 19:51:04 -0700735// No-op entrypoints
736
737// clang-format off
738#pragma clang diagnostic push
739#pragma clang diagnostic ignored "-Wunused-parameter"
740
Jesse Hall606a54e2015-11-19 22:17:28 -0800741void GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100742 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700743}
744
Jesse Hall606a54e2015-11-19 22:17:28 -0800745void GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100746 ALOGV("TODO: vk%s", __FUNCTION__);
Jesse Hall04f4f472015-08-16 19:51:04 -0700747}
748
Jesse Hall606a54e2015-11-19 22:17:28 -0800749void GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) {
Jesse Hall73ab0ac2015-08-25 15:09:15 +0100750 ALOGV("TODO: vk%s", __FUNCTION__);
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 Hall606a54e2015-11-19 22:17:28 -0800811void GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t 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 Hall3fbc8562015-11-29 22:10:52 -0800951void CmdSetViewport(VkCommandBuffer cmdBuffer, uint32_t viewportCount, const VkViewport* pViewports) {
Jesse Hall04f4f472015-08-16 19:51:04 -0700952}
953
Jesse Hall3fbc8562015-11-29 22:10:52 -0800954void CmdSetScissor(VkCommandBuffer cmdBuffer, 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 Hall3fbc8562015-11-29 22:10:52 -08001044void CmdWaitEvents(VkCommandBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
Jesse Hall04f4f472015-08-16 19:51:04 -07001045}
1046
Jesse Hall3fbc8562015-11-29 22:10:52 -08001047void CmdPipelineBarrier(VkCommandBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkDependencyFlags dependencyFlags, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
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