From 91e0c9ea8e1d6c94efb5981fe5b15d466d0cd9f5 Mon Sep 17 00:00:00 2001 From: "xuelian.bai" Date: Mon, 11 Sep 2017 21:03:25 +0800 Subject: [PATCH] [HOTFIX] Avoid duplication of surface_formats in querying Currently, tbm formats and vulkan formats are not mapped perfectly. By this, in querying supported formats with tpl_get_surface_formats(), duplication occurs in supported formats. Therefore, apply hotfix to avoid duplicated results. Change-Id: I28474c462276d1549142ae2300695b1680e59832 Signed-off-by: Xuelian Bai Signed-off-by: Hoyub Lee --- src/wsi/surface.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/wsi/surface.c b/src/wsi/surface.c index 2bfcfad..e8d35ae 100644 --- a/src/wsi/surface.c +++ b/src/wsi/surface.c @@ -204,15 +204,21 @@ tpl_get_surface_formats(VkIcdSurfaceBase *sfc, uint32_t surface_format_count = 0; VkSurfaceFormatKHR surface_formats[ARRAY_LENGTH(supported_formats)]; uint32_t i, j; + uint8_t vk_format_map[VK_FORMAT_RANGE_SIZE]; + VkFormat vk_format; if (tbm_surface_query_formats(&tbm_formats, &tbm_format_count) != TBM_SURFACE_ERROR_NONE) return VK_ERROR_DEVICE_LOST; + memset(vk_format_map, 0, sizeof(vk_format_map)); for (i = 0; i < ARRAY_LENGTH(supported_formats); i++) { + vk_format = supported_formats[i].surface_format.format; for (j = 0; j < tbm_format_count; j++) { - if (tbm_formats[j] == supported_formats[i].tbm_format) { + /* FIXME Currently, hotfix is applied to avoid duplication of supported VkFormat */ + if (tbm_formats[j] == supported_formats[i].tbm_format && vk_format_map[vk_format] == 0) { /* TODO Check if ICD support the format. */ surface_formats[surface_format_count++] = supported_formats[i].surface_format; + vk_format_map[vk_format] = 1; break; } } -- 2.7.4