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;
}
}