From 42c44ab5b501ca2e8617cb4171d43cdc73e32878 Mon Sep 17 00:00:00 2001 From: Taekyun Kim Date: Tue, 12 Apr 2016 15:27:14 +0900 Subject: [PATCH] null-driver: Function for creating presentable images ICD is responsible for creating VkImage which is used for presentation in the swapchain. WSI will dlsym the function and call it to create swapchain images. Change-Id: Ieacb603ec69b509e3651a46068333001d503ec12 --- src/null-driver/null-driver.c | 18 +++++++++++++++++- src/null-driver/null-driver.h | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/null-driver/null-driver.c b/src/null-driver/null-driver.c index 3c9f2e7..6f9fa84 100644 --- a/src/null-driver/null-driver.c +++ b/src/null-driver/null-driver.c @@ -106,6 +106,7 @@ struct nulldrv_img { VkFlags usage; VkSampleCountFlagBits samples; size_t total_size; + tbm_surface_h tbm_surface; }; struct nulldrv_mem { @@ -472,6 +473,7 @@ img_get_memory_requirements(struct nulldrv_base *base, static VkResult nulldrv_img_create(struct nulldrv_dev *dev, + tbm_surface_h tbm_surface, const VkImageCreateInfo *info, bool scanout, struct nulldrv_img **img_ret) @@ -484,6 +486,7 @@ nulldrv_img_create(struct nulldrv_dev *dev, if (!img) return VK_ERROR_OUT_OF_HOST_MEMORY; + img->tbm_surface = tbm_surface; img->type = info->imageType; img->depth = info->extent.depth; img->mip_levels = info->mipLevels; @@ -1587,7 +1590,7 @@ create_image(VkDevice device, NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); - return nulldrv_img_create(dev, info, false, + return nulldrv_img_create(dev, NULL, info, false, (struct nulldrv_img **) image); } @@ -2506,3 +2509,16 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *name) return NULL; } + +VK_EXPORT VkImage +vk_create_presentable_image(VkDevice device, const VkImageCreateInfo *info, tbm_surface_h surface) +{ + NULLDRV_LOG_FUNC; + struct nulldrv_dev *dev = nulldrv_dev(device); + struct nulldrv_img *img; + + if (nulldrv_img_create(dev, surface, info, false, &img) == VK_SUCCESS) + return (VkImage)img; + + return NULL; +} diff --git a/src/null-driver/null-driver.h b/src/null-driver/null-driver.h index 80523c0..460897b 100644 --- a/src/null-driver/null-driver.h +++ b/src/null-driver/null-driver.h @@ -31,8 +31,12 @@ #include #include +#include VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char *name); +VkImage +vk_create_presentable_image(VkDevice device, const VkImageCreateInfo *info, tbm_surface_h surface); + #endif /* NULL_DRIVER_H */ -- 2.7.4