Revert "icd: Fix vkGetSwapchainImages behavior"
authorMark Lobodzinski <mark@lunarg.com>
Thu, 9 Apr 2020 22:21:48 +0000 (16:21 -0600)
committerMark Lobodzinski <mark@lunarg.com>
Thu, 9 Apr 2020 22:23:43 +0000 (16:23 -0600)
This reverts commit 00573263e0. This caused the
VkLayerTest.SwapchainAcquireTooManyImages2KHR test to fail,
blocking CI.

Change-Id: Id1464668e02dda50a37eb0fabb275eb897105eb4

icd/generated/mock_icd.cpp
scripts/mock_icd_generator.py

index 36fc644..cad7dd8 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "mock_icd.h"
 #include <stdlib.h>
-#include <algorithm>
 #include <vector>
 #include "vk_typemap_helper.h"
 namespace vkmock {
@@ -2142,19 +2141,13 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR(
     uint32_t*                                   pSwapchainImageCount,
     VkImage*                                    pSwapchainImages)
 {
-    constexpr uint32_t icd_image_count = 2;
-
     if (!pSwapchainImages) {
-        *pSwapchainImageCount = icd_image_count;
-    } else {
-        unique_lock_t lock(global_lock);
-        for (uint32_t img_i = 0; img_i < (std::min)(*pSwapchainImageCount, icd_image_count); ++img_i){
-            // For simplicity always returns new handles, which is wrong
-            pSwapchainImages[img_i] = (VkImage)global_unique_handle++;
+        *pSwapchainImageCount = 1;
+    } else if (*pSwapchainImageCount > 0) {
+        pSwapchainImages[0] = (VkImage)global_unique_handle++;
+        if (*pSwapchainImageCount != 1) {
+            return VK_INCOMPLETE;
         }
-
-        if (*pSwapchainImageCount < icd_image_count) return VK_INCOMPLETE;
-        else if (*pSwapchainImageCount > icd_image_count) *pSwapchainImageCount = icd_image_count;
     }
     return VK_SUCCESS;
 }
index 623b89f..3368d07 100644 (file)
@@ -880,19 +880,13 @@ CUSTOM_C_INTERCEPTS = {
     *pLayout = VkSubresourceLayout(); // Default constructor zero values.
 ''',
 'vkGetSwapchainImagesKHR': '''
-    constexpr uint32_t icd_image_count = 2;
-
     if (!pSwapchainImages) {
-        *pSwapchainImageCount = icd_image_count;
-    } else {
-        unique_lock_t lock(global_lock);
-        for (uint32_t img_i = 0; img_i < (std::min)(*pSwapchainImageCount, icd_image_count); ++img_i){
-            // For simplicity always returns new handles, which is wrong
-            pSwapchainImages[img_i] = (VkImage)global_unique_handle++;
+        *pSwapchainImageCount = 1;
+    } else if (*pSwapchainImageCount > 0) {
+        pSwapchainImages[0] = (VkImage)global_unique_handle++;
+        if (*pSwapchainImageCount != 1) {
+            return VK_INCOMPLETE;
         }
-
-        if (*pSwapchainImageCount < icd_image_count) return VK_INCOMPLETE;
-        else if (*pSwapchainImageCount > icd_image_count) *pSwapchainImageCount = icd_image_count;
     }
     return VK_SUCCESS;
 ''',
@@ -1080,7 +1074,6 @@ class MockICDOutputGenerator(OutputGenerator):
         else:
             write('#include "mock_icd.h"', file=self.outFile)
             write('#include <stdlib.h>', file=self.outFile)
-            write('#include <algorithm>', file=self.outFile)
             write('#include <vector>', file=self.outFile)
             write('#include "vk_typemap_helper.h"', file=self.outFile)