Loading vulkan/libvulkan/loader.cpp +15 −5 Original line number Diff line number Diff line Loading @@ -687,12 +687,22 @@ void GetPhysicalDeviceSparseImageFormatProperties_Bottom( VKAPI_ATTR VkResult EnumerateDeviceExtensionProperties_Bottom( VkPhysicalDevice /*pdev*/, const char* /*layer_name*/, const char* layer_name, uint32_t* properties_count, VkExtensionProperties* /*properties*/) { // TODO(jessehall): Implement me... *properties_count = 0; return VK_SUCCESS; VkExtensionProperties* properties) { const VkExtensionProperties* extensions = nullptr; uint32_t num_extensions = 0; if (layer_name) { GetDeviceLayerExtensions(layer_name, &extensions, &num_extensions); } else { // TODO(jessehall) } if (!properties || *properties_count > num_extensions) *properties_count = num_extensions; if (properties) std::copy(extensions, extensions + *properties_count, properties); return *properties_count < num_extensions ? VK_INCOMPLETE : VK_SUCCESS; } VKAPI_ATTR Loading vulkan/nulldrv/null_driver.cpp +61 −37 Original line number Diff line number Diff line Loading @@ -295,6 +295,40 @@ VkResult EnumeratePhysicalDevices(VkInstance instance, return VK_SUCCESS; } VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice /*gpu*/, uint32_t* count, VkLayerProperties* /*properties*/) { ALOGW("Driver vkEnumerateDeviceLayerProperties shouldn't be called"); *count = 0; return VK_SUCCESS; } VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice /*gpu*/, const char* layer_name, uint32_t* count, VkExtensionProperties* properties) { if (layer_name) { ALOGW( "Driver vkEnumerateDeviceExtensionProperties shouldn't be called " "with a layer name ('%s')", layer_name); *count = 0; return VK_SUCCESS; } const VkExtensionProperties kExtensions[] = { {VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME, VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION}}; const uint32_t kExtensionsCount = sizeof(kExtensions) / sizeof(kExtensions[0]); if (!properties || *count > kExtensionsCount) *count = kExtensionsCount; if (properties) std::copy(kExtensions, kExtensions + *count, properties); return *count < kExtensionsCount ? VK_INCOMPLETE : VK_SUCCESS; } void GetPhysicalDeviceProperties(VkPhysicalDevice, VkPhysicalDeviceProperties* properties) { properties->apiVersion = VK_API_VERSION; Loading Loading @@ -603,6 +637,33 @@ void DestroyImage(VkDevice device, allocator->pfnFree(allocator->pUserData, image); } VkResult GetSwapchainGrallocUsageANDROID(VkDevice, VkFormat, VkImageUsageFlags, int* grallocUsage) { // The null driver never reads or writes the gralloc buffer *grallocUsage = 0; return VK_SUCCESS; } VkResult AcquireImageANDROID(VkDevice, VkImage, int fence, VkSemaphore, VkFence) { close(fence); return VK_SUCCESS; } VkResult QueueSignalReleaseImageANDROID(VkQueue, uint32_t, const VkSemaphore*, VkImage, int* fence) { *fence = -1; return VK_SUCCESS; } // ----------------------------------------------------------------------------- // No-op types Loading Loading @@ -760,33 +821,6 @@ VkResult CreateDebugReportCallbackEXT(VkInstance instance, return VK_SUCCESS; } VkResult GetSwapchainGrallocUsageANDROID(VkDevice, VkFormat, VkImageUsageFlags, int* grallocUsage) { // The null driver never reads or writes the gralloc buffer *grallocUsage = 0; return VK_SUCCESS; } VkResult AcquireImageANDROID(VkDevice, VkImage, int fence, VkSemaphore, VkFence) { close(fence); return VK_SUCCESS; } VkResult QueueSignalReleaseImageANDROID(VkQueue, uint32_t, const VkSemaphore*, VkImage, int* fence) { *fence = -1; return VK_SUCCESS; } // ----------------------------------------------------------------------------- // No-op entrypoints Loading @@ -812,16 +846,6 @@ VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* p return VK_SUCCESS; } VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) { return VK_SUCCESS; } Loading Loading
vulkan/libvulkan/loader.cpp +15 −5 Original line number Diff line number Diff line Loading @@ -687,12 +687,22 @@ void GetPhysicalDeviceSparseImageFormatProperties_Bottom( VKAPI_ATTR VkResult EnumerateDeviceExtensionProperties_Bottom( VkPhysicalDevice /*pdev*/, const char* /*layer_name*/, const char* layer_name, uint32_t* properties_count, VkExtensionProperties* /*properties*/) { // TODO(jessehall): Implement me... *properties_count = 0; return VK_SUCCESS; VkExtensionProperties* properties) { const VkExtensionProperties* extensions = nullptr; uint32_t num_extensions = 0; if (layer_name) { GetDeviceLayerExtensions(layer_name, &extensions, &num_extensions); } else { // TODO(jessehall) } if (!properties || *properties_count > num_extensions) *properties_count = num_extensions; if (properties) std::copy(extensions, extensions + *properties_count, properties); return *properties_count < num_extensions ? VK_INCOMPLETE : VK_SUCCESS; } VKAPI_ATTR Loading
vulkan/nulldrv/null_driver.cpp +61 −37 Original line number Diff line number Diff line Loading @@ -295,6 +295,40 @@ VkResult EnumeratePhysicalDevices(VkInstance instance, return VK_SUCCESS; } VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice /*gpu*/, uint32_t* count, VkLayerProperties* /*properties*/) { ALOGW("Driver vkEnumerateDeviceLayerProperties shouldn't be called"); *count = 0; return VK_SUCCESS; } VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice /*gpu*/, const char* layer_name, uint32_t* count, VkExtensionProperties* properties) { if (layer_name) { ALOGW( "Driver vkEnumerateDeviceExtensionProperties shouldn't be called " "with a layer name ('%s')", layer_name); *count = 0; return VK_SUCCESS; } const VkExtensionProperties kExtensions[] = { {VK_ANDROID_NATIVE_BUFFER_EXTENSION_NAME, VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION}}; const uint32_t kExtensionsCount = sizeof(kExtensions) / sizeof(kExtensions[0]); if (!properties || *count > kExtensionsCount) *count = kExtensionsCount; if (properties) std::copy(kExtensions, kExtensions + *count, properties); return *count < kExtensionsCount ? VK_INCOMPLETE : VK_SUCCESS; } void GetPhysicalDeviceProperties(VkPhysicalDevice, VkPhysicalDeviceProperties* properties) { properties->apiVersion = VK_API_VERSION; Loading Loading @@ -603,6 +637,33 @@ void DestroyImage(VkDevice device, allocator->pfnFree(allocator->pUserData, image); } VkResult GetSwapchainGrallocUsageANDROID(VkDevice, VkFormat, VkImageUsageFlags, int* grallocUsage) { // The null driver never reads or writes the gralloc buffer *grallocUsage = 0; return VK_SUCCESS; } VkResult AcquireImageANDROID(VkDevice, VkImage, int fence, VkSemaphore, VkFence) { close(fence); return VK_SUCCESS; } VkResult QueueSignalReleaseImageANDROID(VkQueue, uint32_t, const VkSemaphore*, VkImage, int* fence) { *fence = -1; return VK_SUCCESS; } // ----------------------------------------------------------------------------- // No-op types Loading Loading @@ -760,33 +821,6 @@ VkResult CreateDebugReportCallbackEXT(VkInstance instance, return VK_SUCCESS; } VkResult GetSwapchainGrallocUsageANDROID(VkDevice, VkFormat, VkImageUsageFlags, int* grallocUsage) { // The null driver never reads or writes the gralloc buffer *grallocUsage = 0; return VK_SUCCESS; } VkResult AcquireImageANDROID(VkDevice, VkImage, int fence, VkSemaphore, VkFence) { close(fence); return VK_SUCCESS; } VkResult QueueSignalReleaseImageANDROID(VkQueue, uint32_t, const VkSemaphore*, VkImage, int* fence) { *fence = -1; return VK_SUCCESS; } // ----------------------------------------------------------------------------- // No-op entrypoints Loading @@ -812,16 +846,6 @@ VkResult EnumerateInstanceLayerProperties(uint32_t* pCount, VkLayerProperties* p return VK_SUCCESS; } VkResult EnumerateDeviceLayerProperties(VkPhysicalDevice physicalDevice, uint32_t* pCount, VkLayerProperties* pProperties) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult EnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) { ALOGV("TODO: vk%s", __FUNCTION__); return VK_SUCCESS; } VkResult QueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmitInfo, VkFence fence) { return VK_SUCCESS; } Loading