blob: a68cdd9dae14bb85ea1ea9c7c80c5cd50d445c5f [file] [log] [blame]
Jesse Hall04f4f472015-08-16 19:51:04 -07001#include <hardware/hwvulkan.h>
2
3#include <string.h>
4#include <algorithm>
5
6#include <utils/Errors.h>
7
8#include "null_driver.h"
9
10using namespace null_driver;
11
12struct VkPhysicalDevice_T {
13 hwvulkan_dispatch_t dispatch;
14};
15
16struct VkInstance_T {
17 hwvulkan_dispatch_t dispatch;
18 const VkAllocCallbacks* alloc;
19 VkPhysicalDevice_T physical_device;
20};
21
22struct VkQueue_T {
23 hwvulkan_dispatch_t dispatch;
24};
25
26struct VkCmdBuffer_T {
27 hwvulkan_dispatch_t dispatch;
28};
29
30struct VkDevice_T {
31 hwvulkan_dispatch_t dispatch;
32 VkInstance_T* instance;
33 VkQueue_T queue;
34};
35
36// -----------------------------------------------------------------------------
37// Declare HAL_MODULE_INFO_SYM early so it can be referenced by nulldrv_device
38// later.
39
40namespace {
41int OpenDevice(const hw_module_t* module, const char* id, hw_device_t** device);
42hw_module_methods_t nulldrv_module_methods = {.open = OpenDevice};
43} // namespace
44
45#pragma clang diagnostic push
46#pragma clang diagnostic ignored "-Wmissing-variable-declarations"
47__attribute__((visibility("default"))) hwvulkan_module_t HAL_MODULE_INFO_SYM = {
48 .common =
49 {
50 .tag = HARDWARE_MODULE_TAG,
51 .module_api_version = HWVULKAN_MODULE_API_VERSION_0_1,
52 .hal_api_version = HARDWARE_HAL_API_VERSION,
53 .id = HWVULKAN_HARDWARE_MODULE_ID,
54 .name = "Null Vulkan Driver",
55 .author = "The Android Open Source Project",
56 .methods = &nulldrv_module_methods,
57 },
58};
59#pragma clang diagnostic pop
60
61// -----------------------------------------------------------------------------
62
63namespace {
64
65VkResult CreateInstance(const VkInstanceCreateInfo* create_info,
66 VkInstance* out_instance) {
67 VkInstance_T* instance =
68 static_cast<VkInstance_T*>(create_info->pAllocCb->pfnAlloc(
69 create_info->pAllocCb->pUserData, sizeof(VkInstance_T),
70 alignof(VkInstance_T), VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
71 if (!instance)
72 return VK_ERROR_OUT_OF_HOST_MEMORY;
73
74 instance->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
75 instance->alloc = create_info->pAllocCb;
76 instance->physical_device.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
77
78 *out_instance = instance;
79 return VK_SUCCESS;
80}
81
82int CloseDevice(struct hw_device_t* /*device*/) {
83 // nothing to do - opening a device doesn't allocate any resources
84 return 0;
85}
86
87hwvulkan_device_t nulldrv_device = {
88 .common =
89 {
90 .tag = HARDWARE_DEVICE_TAG,
91 .version = HWVULKAN_DEVICE_API_VERSION_0_1,
92 .module = &HAL_MODULE_INFO_SYM.common,
93 .close = CloseDevice,
94 },
95 .GetGlobalExtensionProperties = GetGlobalExtensionProperties,
96 .CreateInstance = CreateInstance,
97 .GetInstanceProcAddr = GetInstanceProcAddr};
98
99int OpenDevice(const hw_module_t* /*module*/,
100 const char* id,
101 hw_device_t** device) {
102 if (strcmp(id, HWVULKAN_DEVICE_0) == 0) {
103 *device = &nulldrv_device.common;
104 return 0;
105 }
106 return -ENOENT;
107}
108
109VkInstance_T* GetInstanceFromPhysicalDevice(
110 VkPhysicalDevice_T* physical_device) {
111 return reinterpret_cast<VkInstance_T*>(
112 reinterpret_cast<uintptr_t>(physical_device) -
113 offsetof(VkInstance_T, physical_device));
114}
115
116} // namespace
117
118namespace null_driver {
119
120PFN_vkVoidFunction GetInstanceProcAddr(VkInstance, const char* name) {
121 PFN_vkVoidFunction proc = LookupInstanceProcAddr(name);
122 if (!proc && strcmp(name, "vkGetDeviceProcAddr") == 0)
123 proc = reinterpret_cast<PFN_vkVoidFunction>(GetDeviceProcAddr);
124 return proc;
125}
126
127PFN_vkVoidFunction GetDeviceProcAddr(VkDevice, const char* name) {
128 return LookupDeviceProcAddr(name);
129}
130
131VkResult DestroyInstance(VkInstance instance) {
132 instance->alloc->pfnFree(instance->alloc->pUserData, instance);
133 return VK_SUCCESS;
134}
135
136VkResult EnumeratePhysicalDevices(VkInstance instance,
137 uint32_t* physical_device_count,
138 VkPhysicalDevice* physical_devices) {
139 if (physical_devices && *physical_device_count >= 1)
140 physical_devices[0] = &instance->physical_device;
141 *physical_device_count = 1;
142 return VK_SUCCESS;
143}
144
145VkResult GetPhysicalDeviceProperties(VkPhysicalDevice,
146 VkPhysicalDeviceProperties* properties) {
147 properties->apiVersion = VK_API_VERSION;
148 properties->driverVersion = VK_MAKE_VERSION(0, 0, 1);
149 properties->vendorId = 0xC0DE;
150 properties->deviceId = 0xCAFE;
151 properties->deviceType = VK_PHYSICAL_DEVICE_TYPE_OTHER;
152 strcpy(properties->deviceName, "Android Vulkan Null Driver");
153 memset(properties->pipelineCacheUUID, 0,
154 sizeof(properties->pipelineCacheUUID));
155 return VK_SUCCESS;
156}
157
158VkResult GetGlobalExtensionProperties(const char*,
159 uint32_t* count,
160 VkExtensionProperties*) {
161 *count = 0;
162 return VK_SUCCESS;
163}
164
165VkResult CreateDevice(VkPhysicalDevice physical_device,
166 const VkDeviceCreateInfo*,
167 VkDevice* out_device) {
168 VkInstance_T* instance = GetInstanceFromPhysicalDevice(physical_device);
169 VkDevice_T* device = static_cast<VkDevice_T*>(instance->alloc->pfnAlloc(
170 instance->alloc->pUserData, sizeof(VkDevice_T), alignof(VkDevice_T),
171 VK_SYSTEM_ALLOC_TYPE_API_OBJECT));
172 if (!device)
173 return VK_ERROR_OUT_OF_HOST_MEMORY;
174
175 device->dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
176 device->instance = instance;
177 device->queue.dispatch.magic = HWVULKAN_DISPATCH_MAGIC;
178
179 *out_device = device;
180 return VK_SUCCESS;
181}
182
183VkResult DestroyDevice(VkDevice device) {
184 if (!device)
185 return VK_SUCCESS;
186 const VkAllocCallbacks* alloc = device->instance->alloc;
187 alloc->pfnFree(alloc->pUserData, device);
188 return VK_SUCCESS;
189}
190
191VkResult GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) {
192 *queue = &device->queue;
193 return VK_SUCCESS;
194}
195
196// -----------------------------------------------------------------------------
197// No-op entrypoints
198
199// clang-format off
200#pragma clang diagnostic push
201#pragma clang diagnostic ignored "-Wunused-parameter"
202
203VkResult GetPhysicalDeviceQueueCount(VkPhysicalDevice physicalDevice, uint32_t* pCount) {
204 return VK_SUCCESS;
205}
206
207VkResult GetPhysicalDeviceQueueProperties(VkPhysicalDevice physicalDevice, uint32_t count, VkPhysicalDeviceQueueProperties* pQueueProperties) {
208 return VK_SUCCESS;
209}
210
211VkResult GetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
212 return VK_SUCCESS;
213}
214
215VkResult GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) {
216 return VK_SUCCESS;
217}
218
219VkResult GetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) {
220 return VK_SUCCESS;
221}
222
223VkResult GetPhysicalDeviceImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties) {
224 return VK_SUCCESS;
225}
226
227VkResult GetPhysicalDeviceLimits(VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits) {
228 return VK_SUCCESS;
229}
230
231VkResult GetGlobalLayerProperties(uint32_t* pCount, VkLayerProperties* pProperties) {
232 return VK_SUCCESS;
233}
234
235VkResult GetPhysicalDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) {
236 return VK_SUCCESS;
237}
238
239VkResult GetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
240 return VK_SUCCESS;
241}
242
243VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) {
244 return VK_SUCCESS;
245}
246
247VkResult QueueWaitIdle(VkQueue queue) {
248 return VK_SUCCESS;
249}
250
251VkResult DeviceWaitIdle(VkDevice device) {
252 return VK_SUCCESS;
253}
254
255VkResult AllocMemory(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem) {
256 return VK_SUCCESS;
257}
258
259VkResult FreeMemory(VkDevice device, VkDeviceMemory mem) {
260 return VK_SUCCESS;
261}
262
263VkResult MapMemory(VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) {
264 return VK_SUCCESS;
265}
266
267VkResult UnmapMemory(VkDevice device, VkDeviceMemory mem) {
268 return VK_SUCCESS;
269}
270
271VkResult FlushMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
272 return VK_SUCCESS;
273}
274
275VkResult InvalidateMappedMemoryRanges(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
276 return VK_SUCCESS;
277}
278
279VkResult GetDeviceMemoryCommitment(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) {
280 return VK_SUCCESS;
281}
282
283VkResult GetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) {
284 return VK_SUCCESS;
285}
286
287VkResult BindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) {
288 return VK_SUCCESS;
289}
290
291VkResult GetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) {
292 return VK_SUCCESS;
293}
294
295VkResult BindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) {
296 return VK_SUCCESS;
297}
298
299VkResult GetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
300 return VK_SUCCESS;
301}
302
303VkResult GetPhysicalDeviceSparseImageFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties) {
304 return VK_SUCCESS;
305}
306
307VkResult QueueBindSparseBufferMemory(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
308 return VK_SUCCESS;
309}
310
311VkResult QueueBindSparseImageOpaqueMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo) {
312 return VK_SUCCESS;
313}
314
315VkResult QueueBindSparseImageMemory(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) {
316 return VK_SUCCESS;
317}
318
319VkResult CreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) {
320 return VK_SUCCESS;
321}
322
323VkResult DestroyFence(VkDevice device, VkFence fence) {
324 return VK_SUCCESS;
325}
326
327VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) {
328 return VK_SUCCESS;
329}
330
331VkResult GetFenceStatus(VkDevice device, VkFence fence) {
332 return VK_SUCCESS;
333}
334
335VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) {
336 return VK_SUCCESS;
337}
338
339VkResult CreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore) {
340 return VK_SUCCESS;
341}
342
343VkResult DestroySemaphore(VkDevice device, VkSemaphore semaphore) {
344 return VK_SUCCESS;
345}
346
347VkResult QueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore) {
348 return VK_SUCCESS;
349}
350
351VkResult QueueWaitSemaphore(VkQueue queue, VkSemaphore semaphore) {
352 return VK_SUCCESS;
353}
354
355VkResult CreateEvent(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) {
356 return VK_SUCCESS;
357}
358
359VkResult DestroyEvent(VkDevice device, VkEvent event) {
360 return VK_SUCCESS;
361}
362
363VkResult GetEventStatus(VkDevice device, VkEvent event) {
364 return VK_SUCCESS;
365}
366
367VkResult SetEvent(VkDevice device, VkEvent event) {
368 return VK_SUCCESS;
369}
370
371VkResult ResetEvent(VkDevice device, VkEvent event) {
372 return VK_SUCCESS;
373}
374
375VkResult CreateQueryPool(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool) {
376 return VK_SUCCESS;
377}
378
379VkResult DestroyQueryPool(VkDevice device, VkQueryPool queryPool) {
380 return VK_SUCCESS;
381}
382
383VkResult GetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags) {
384 return VK_SUCCESS;
385}
386
387VkResult CreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) {
388 return VK_SUCCESS;
389}
390
391VkResult DestroyBuffer(VkDevice device, VkBuffer buffer) {
392 return VK_SUCCESS;
393}
394
395VkResult CreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) {
396 return VK_SUCCESS;
397}
398
399VkResult DestroyBufferView(VkDevice device, VkBufferView bufferView) {
400 return VK_SUCCESS;
401}
402
403VkResult CreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) {
404 return VK_SUCCESS;
405}
406
407VkResult DestroyImage(VkDevice device, VkImage image) {
408 return VK_SUCCESS;
409}
410
411VkResult GetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) {
412 return VK_SUCCESS;
413}
414
415VkResult CreateImageView(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) {
416 return VK_SUCCESS;
417}
418
419VkResult DestroyImageView(VkDevice device, VkImageView imageView) {
420 return VK_SUCCESS;
421}
422
423VkResult CreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) {
424 return VK_SUCCESS;
425}
426
427VkResult DestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView) {
428 return VK_SUCCESS;
429}
430
431VkResult CreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule) {
432 return VK_SUCCESS;
433}
434
435VkResult DestroyShaderModule(VkDevice device, VkShaderModule shaderModule) {
436 return VK_SUCCESS;
437}
438
439VkResult CreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) {
440 return VK_SUCCESS;
441}
442
443VkResult DestroyShader(VkDevice device, VkShader shader) {
444 return VK_SUCCESS;
445}
446
447VkResult CreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache) {
448 return VK_SUCCESS;
449}
450
451VkResult DestroyPipelineCache(VkDevice device, VkPipelineCache pipelineCache) {
452 return VK_SUCCESS;
453}
454
455size_t GetPipelineCacheSize(VkDevice device, VkPipelineCache pipelineCache) {
456 return VK_SUCCESS;
457}
458
459VkResult GetPipelineCacheData(VkDevice device, VkPipelineCache pipelineCache, void* pData) {
460 return VK_SUCCESS;
461}
462
463VkResult MergePipelineCaches(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) {
464 return VK_SUCCESS;
465}
466
467VkResult CreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) {
468 return VK_SUCCESS;
469}
470
471VkResult CreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) {
472 return VK_SUCCESS;
473}
474
475VkResult DestroyPipeline(VkDevice device, VkPipeline pipeline) {
476 return VK_SUCCESS;
477}
478
479VkResult CreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) {
480 return VK_SUCCESS;
481}
482
483VkResult DestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) {
484 return VK_SUCCESS;
485}
486
487VkResult CreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) {
488 return VK_SUCCESS;
489}
490
491VkResult DestroySampler(VkDevice device, VkSampler sampler) {
492 return VK_SUCCESS;
493}
494
495VkResult CreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) {
496 return VK_SUCCESS;
497}
498
499VkResult DestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) {
500 return VK_SUCCESS;
501}
502
503VkResult CreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) {
504 return VK_SUCCESS;
505}
506
507VkResult DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
508 return VK_SUCCESS;
509}
510
511VkResult ResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) {
512 return VK_SUCCESS;
513}
514
515VkResult AllocDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount) {
516 return VK_SUCCESS;
517}
518
519VkResult UpdateDescriptorSets(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies) {
520 return VK_SUCCESS;
521}
522
523VkResult FreeDescriptorSets(VkDevice device, VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets) {
524 return VK_SUCCESS;
525}
526
527VkResult CreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState) {
528 return VK_SUCCESS;
529}
530
531VkResult DestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState) {
532 return VK_SUCCESS;
533}
534
535VkResult CreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState) {
536 return VK_SUCCESS;
537}
538
539VkResult DestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState) {
540 return VK_SUCCESS;
541}
542
543VkResult CreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState) {
544 return VK_SUCCESS;
545}
546
547VkResult DestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) {
548 return VK_SUCCESS;
549}
550
551VkResult CreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState) {
552 return VK_SUCCESS;
553}
554
555VkResult DestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) {
556 return VK_SUCCESS;
557}
558
559VkResult CreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) {
560 return VK_SUCCESS;
561}
562
563VkResult DestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) {
564 return VK_SUCCESS;
565}
566
567VkResult CreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) {
568 return VK_SUCCESS;
569}
570
571VkResult DestroyRenderPass(VkDevice device, VkRenderPass renderPass) {
572 return VK_SUCCESS;
573}
574
575VkResult GetRenderAreaGranularity(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) {
576 return VK_SUCCESS;
577}
578
579VkResult CreateCommandPool(VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool) {
580 return VK_SUCCESS;
581}
582
583VkResult DestroyCommandPool(VkDevice device, VkCmdPool cmdPool) {
584 return VK_SUCCESS;
585}
586
587VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) {
588 return VK_SUCCESS;
589}
590
591VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) {
592 return VK_SUCCESS;
593}
594
595VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) {
596 return VK_SUCCESS;
597}
598
599VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) {
600 return VK_SUCCESS;
601}
602
603VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer) {
604 return VK_SUCCESS;
605}
606
607VkResult ResetCommandBuffer(VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) {
608 return VK_SUCCESS;
609}
610
611void CmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) {
612}
613
614void CmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) {
615}
616
617void CmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) {
618}
619
620void CmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) {
621}
622
623void CmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) {
624}
625
626void CmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) {
627}
628
629void CmdBindIndexBuffer(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) {
630}
631
632void CmdBindVertexBuffers(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) {
633}
634
635void CmdDraw(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount) {
636}
637
638void CmdDrawIndexed(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount) {
639}
640
641void CmdDrawIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
642}
643
644void CmdDrawIndexedIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t count, uint32_t stride) {
645}
646
647void CmdDispatch(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z) {
648}
649
650void CmdDispatchIndirect(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) {
651}
652
653void CmdCopyBuffer(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) {
654}
655
656void CmdCopyImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) {
657}
658
659void CmdBlitImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkTexFilter filter) {
660}
661
662void CmdCopyBufferToImage(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
663}
664
665void CmdCopyImageToBuffer(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) {
666}
667
668void CmdUpdateBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData) {
669}
670
671void CmdFillBuffer(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data) {
672}
673
674void CmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
675}
676
677void CmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) {
678}
679
680void CmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects) {
681}
682
683void CmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects) {
684}
685
686void CmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) {
687}
688
689void CmdSetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
690}
691
692void CmdResetEvent(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) {
693}
694
695void CmdWaitEvents(VkCmdBuffer cmdBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
696}
697
698void CmdPipelineBarrier(VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, uint32_t memBarrierCount, const void* const* ppMemBarriers) {
699}
700
701void CmdBeginQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags) {
702}
703
704void CmdEndQuery(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot) {
705}
706
707void CmdResetQueryPool(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount) {
708}
709
710void CmdWriteTimestamp(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) {
711}
712
713void CmdCopyQueryPoolResults(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) {
714}
715
716void CmdPushConstants(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values) {
717}
718
719void CmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) {
720}
721
722void CmdNextSubpass(VkCmdBuffer cmdBuffer, VkRenderPassContents contents) {
723}
724
725void CmdEndRenderPass(VkCmdBuffer cmdBuffer) {
726}
727
728void CmdExecuteCommands(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) {
729}
730
731#pragma clang diagnostic pop
732// clang-format on
733
734} // namespace null_driver