Loading vulkan/libvulkan/entry.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -578,7 +578,7 @@ VkResult vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFl __attribute__((visibility("default"))) VkResult vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) { return GetVtbl(device).CreateCommandBuffer(device, pCreateInfo, pCmdBuffer); return vulkan::CreateCommandBuffer(device, pCreateInfo, pCmdBuffer); } __attribute__((visibility("default"))) Loading vulkan/libvulkan/entry.cpp.tmpl +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ namespace { */}} {{define "IsSpecialEntry"}} {{/* TODO: figure out how to do this in a cleaner or at least multi-line way */}} {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (eq $ "vkDestroyDevice")))}} {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (or (eq $ "vkCreateCommandBuffer") (eq $ "vkDestroyDevice"))))}} true {{end}} {{end}} Loading vulkan/libvulkan/loader.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -494,6 +494,7 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name) { return GetGlobalDeviceProcAddr(name); // For special-case functions we always return the loader entry if (strcmp(name, "vkGetDeviceQueue") == 0 || strcmp(name, "vkCreateCommandBuffer") == 0 || strcmp(name, "vkDestroyDevice") == 0) { return GetGlobalDeviceProcAddr(name); } Loading Loading @@ -521,6 +522,27 @@ VkResult GetDeviceQueue(VkDevice drv_device, return VK_SUCCESS; } VkResult CreateCommandBuffer(VkDevice drv_device, const VkCmdBufferCreateInfo* create_info, VkCmdBuffer* out_cmdbuf) { const DeviceVtbl* vtbl = GetVtbl(drv_device); VkCmdBuffer cmdbuf; VkResult result = vtbl->CreateCommandBuffer(drv_device, create_info, &cmdbuf); if (result != VK_SUCCESS) return result; hwvulkan_dispatch_t* dispatch = reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuf); if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC) { ALOGE("invalid VkCmdBuffer dispatch magic: 0x%" PRIxPTR, dispatch->magic); return VK_ERROR_INITIALIZATION_FAILED; } dispatch->vtbl = vtbl; *out_cmdbuf = cmdbuf; return VK_SUCCESS; } VkResult DestroyDevice(VkDevice drv_device) { const DeviceVtbl* vtbl = GetVtbl(drv_device); Device* device = static_cast<Device*>(vtbl->device); Loading vulkan/libvulkan/loader.h +3 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,9 @@ VkResult GetDeviceQueue(VkDevice drv_device, uint32_t family, uint32_t index, VkQueue* out_queue); VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* create_info, VkCmdBuffer* out_cmdbuf); VkResult DestroyDevice(VkDevice drv_device); // ----------------------------------------------------------------------------- Loading vulkan/nulldrv/null_driver.cpp +52 −44 Original line number Diff line number Diff line Loading @@ -298,6 +298,29 @@ VkResult GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) { return VK_SUCCESS; } // ----------------------------------------------------------------------------- // CmdBuffer VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo*, VkCmdBuffer* out_cmdbuf) { const VkAllocCallbacks* alloc = device->instance->alloc; VkCmdBuffer_T* cmdbuf = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc( alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T), VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); if (!cmdbuf) return VK_ERROR_OUT_OF_HOST_MEMORY; cmdbuf->dispatch.magic = HWVULKAN_DISPATCH_MAGIC; *out_cmdbuf = cmdbuf; return VK_SUCCESS; } VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdbuf) { const VkAllocCallbacks* alloc = device->instance->alloc; alloc->pfnFree(alloc->pUserData, cmdbuf); return VK_SUCCESS; } // ----------------------------------------------------------------------------- // DeviceMemory Loading Loading @@ -629,7 +652,6 @@ VkResult GetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, c } VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading Loading @@ -706,7 +728,6 @@ VkResult DestroyFence(VkDevice device, VkFence fence) { } VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading @@ -716,7 +737,6 @@ VkResult GetFenceStatus(VkDevice device, VkFence fence) { } VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading Loading @@ -889,23 +909,11 @@ VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlag return VK_SUCCESS; } VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading Loading
vulkan/libvulkan/entry.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -578,7 +578,7 @@ VkResult vkResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFl __attribute__((visibility("default"))) VkResult vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) { return GetVtbl(device).CreateCommandBuffer(device, pCreateInfo, pCmdBuffer); return vulkan::CreateCommandBuffer(device, pCreateInfo, pCmdBuffer); } __attribute__((visibility("default"))) Loading
vulkan/libvulkan/entry.cpp.tmpl +1 −1 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ namespace { */}} {{define "IsSpecialEntry"}} {{/* TODO: figure out how to do this in a cleaner or at least multi-line way */}} {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (eq $ "vkDestroyDevice")))}} {{if or (eq $ "vkGetInstanceProcAddr") (or (eq $ "vkGetDeviceProcAddr") (or (eq $ "vkGetDeviceQueue") (or (eq $ "vkCreateCommandBuffer") (eq $ "vkDestroyDevice"))))}} true {{end}} {{end}} Loading
vulkan/libvulkan/loader.cpp +22 −0 Original line number Diff line number Diff line Loading @@ -494,6 +494,7 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* name) { return GetGlobalDeviceProcAddr(name); // For special-case functions we always return the loader entry if (strcmp(name, "vkGetDeviceQueue") == 0 || strcmp(name, "vkCreateCommandBuffer") == 0 || strcmp(name, "vkDestroyDevice") == 0) { return GetGlobalDeviceProcAddr(name); } Loading Loading @@ -521,6 +522,27 @@ VkResult GetDeviceQueue(VkDevice drv_device, return VK_SUCCESS; } VkResult CreateCommandBuffer(VkDevice drv_device, const VkCmdBufferCreateInfo* create_info, VkCmdBuffer* out_cmdbuf) { const DeviceVtbl* vtbl = GetVtbl(drv_device); VkCmdBuffer cmdbuf; VkResult result = vtbl->CreateCommandBuffer(drv_device, create_info, &cmdbuf); if (result != VK_SUCCESS) return result; hwvulkan_dispatch_t* dispatch = reinterpret_cast<hwvulkan_dispatch_t*>(cmdbuf); if (dispatch->magic != HWVULKAN_DISPATCH_MAGIC) { ALOGE("invalid VkCmdBuffer dispatch magic: 0x%" PRIxPTR, dispatch->magic); return VK_ERROR_INITIALIZATION_FAILED; } dispatch->vtbl = vtbl; *out_cmdbuf = cmdbuf; return VK_SUCCESS; } VkResult DestroyDevice(VkDevice drv_device) { const DeviceVtbl* vtbl = GetVtbl(drv_device); Device* device = static_cast<Device*>(vtbl->device); Loading
vulkan/libvulkan/loader.h +3 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,9 @@ VkResult GetDeviceQueue(VkDevice drv_device, uint32_t family, uint32_t index, VkQueue* out_queue); VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* create_info, VkCmdBuffer* out_cmdbuf); VkResult DestroyDevice(VkDevice drv_device); // ----------------------------------------------------------------------------- Loading
vulkan/nulldrv/null_driver.cpp +52 −44 Original line number Diff line number Diff line Loading @@ -298,6 +298,29 @@ VkResult GetDeviceQueue(VkDevice device, uint32_t, uint32_t, VkQueue* queue) { return VK_SUCCESS; } // ----------------------------------------------------------------------------- // CmdBuffer VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo*, VkCmdBuffer* out_cmdbuf) { const VkAllocCallbacks* alloc = device->instance->alloc; VkCmdBuffer_T* cmdbuf = static_cast<VkCmdBuffer_T*>(alloc->pfnAlloc( alloc->pUserData, sizeof(VkCmdBuffer_T), alignof(VkCmdBuffer_T), VK_SYSTEM_ALLOC_TYPE_API_OBJECT)); if (!cmdbuf) return VK_ERROR_OUT_OF_HOST_MEMORY; cmdbuf->dispatch.magic = HWVULKAN_DISPATCH_MAGIC; *out_cmdbuf = cmdbuf; return VK_SUCCESS; } VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdbuf) { const VkAllocCallbacks* alloc = device->instance->alloc; alloc->pfnFree(alloc->pUserData, cmdbuf); return VK_SUCCESS; } // ----------------------------------------------------------------------------- // DeviceMemory Loading Loading @@ -629,7 +652,6 @@ VkResult GetPhysicalDeviceExtensionProperties(VkPhysicalDevice physicalDevice, c } VkResult QueueSubmit(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading Loading @@ -706,7 +728,6 @@ VkResult DestroyFence(VkDevice device, VkFence fence) { } VkResult ResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading @@ -716,7 +737,6 @@ VkResult GetFenceStatus(VkDevice device, VkFence fence) { } VkResult WaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading Loading @@ -889,23 +909,11 @@ VkResult ResetCommandPool(VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlag return VK_SUCCESS; } VkResult CreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult DestroyCommandBuffer(VkDevice device, VkCmdBuffer commandBuffer) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult BeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult EndCommandBuffer(VkCmdBuffer cmdBuffer) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } Loading