Enable validation for all custom devices
authorRicardo Garcia <rgarcia@igalia.com>
Fri, 5 Mar 2021 15:31:07 +0000 (16:31 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Mon, 15 Mar 2021 12:54:59 +0000 (12:54 +0000)
This commit changes some tests that use custom devices so they rely on
the custom device helper functions to create these custom devices with
the validation layers enabled if requested from the command line.

In addition, some "createDevice" functions are renamed so a simple
search for "createDevice" only reports uses of the createDevice instance
interface method and RefUtil helper function.

The affected tests should only behave differently with validation
enabled. Running these tests without validation should not result in any
changes.

Affected tests:
dEQP-VK.api.buffer_marker.*
dEQP-VK.api.info.vulkan1p2.feature_bits_influence
dEQP-VK.draw.concurrent.compute_and_triangle_list
dEQP-VK.ray_tracing_pipeline.capture_replay.*
dEQP-VK.synchronization*.signal_order.*
dEQP-VK.synchronization.timeline_semaphore.*
dEQP-VK.synchronization2.timeline_semaphore.*

Components: Vulkan
VK-GL-CTS issue: 2835

Change-Id: I6e8028428faa69d92ab9a8a0e8ba25540d04810f

external/vulkancts/modules/vulkan/api/vktApiBufferMarkerTests.cpp
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/draw/vktDrawConcurrentTests.cpp
external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp
external/vulkancts/modules/vulkan/ray_tracing/vktRayTracingCaptureReplayTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationSignalOrderTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationTimelineSemaphoreTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiDisplayControlTests.cpp

index 69d6466..7ffd2fa 100644 (file)
@@ -27,6 +27,7 @@
 #include "vktTestCaseUtil.hpp"
 #include "vktTestGroupUtil.hpp"
 #include "vktExternalMemoryUtil.hpp"
+#include "vktCustomInstancesDevices.hpp"
 #include "vkPlatform.hpp"
 #include "vkCmdUtil.hpp"
 #include "vkObjUtil.hpp"
@@ -34,6 +35,7 @@
 #include "vkQueryUtil.hpp"
 #include "vkRefUtil.hpp"
 #include "vkBuilderUtil.hpp"
+#include "tcuCommandLine.hpp"
 #include "deUniquePtr.hpp"
 #include "deSharedPtr.hpp"
 #include "deRandom.hpp"
@@ -106,6 +108,7 @@ void createDeviceWithExtension (Context& context, WorkingDevice& wd, VkQueueFlag
        const VkInstance                        instance                = context.getInstance();
        const InstanceInterface&        instanceDriver  = context.getInstanceInterface();
        const VkPhysicalDevice          physicalDevice  = context.getPhysicalDevice();
+       const auto                                      useValidation   = context.getTestContext().getCommandLine().isValidationEnabled();
 
        // Create a device with extension enabled and a queue with a family which supports the buffer marker extension
        const std::vector<VkQueueFamilyProperties>      queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(instanceDriver, physicalDevice);
@@ -154,7 +157,7 @@ void createDeviceWithExtension (Context& context, WorkingDevice& wd, VkQueueFlag
                &context.getDeviceFeatures(),                                           // const VkPhysicalDeviceFeatures*      pEnabledFeatures;
        };
 
-       wd.logicalDevice        = createDevice(vkp, instance, instanceDriver, physicalDevice, &deviceInfo);
+       wd.logicalDevice        = createCustomDevice(useValidation, vkp, instance, instanceDriver, physicalDevice, &deviceInfo);
        wd.deviceDriver         = MovePtr<DeviceDriver>(new DeviceDriver(vkp, instance, *wd.logicalDevice));
        wd.allocator            = MovePtr<Allocator>(new SimpleAllocator(*wd.deviceDriver, *wd.logicalDevice, getPhysicalDeviceMemoryProperties(instanceDriver, physicalDevice)));
        wd.queueFamilyIdx       = queueCreateInfo.queueFamilyIndex;
index 717aa14..e7b109c 100644 (file)
@@ -1510,9 +1510,10 @@ void checkSupportFeatureBitInfluence (Context& context)
                TCU_THROW(NotSupportedError, "At least Vulkan 1.2 required to run test");
 }
 
-void createDevice (Context& context, void* pNext, const char* const* ppEnabledExtensionNames, deUint32 enabledExtensionCount)
+void createTestDevice (Context& context, void* pNext, const char* const* ppEnabledExtensionNames, deUint32 enabledExtensionCount)
 {
        const PlatformInterface&                                platformInterface               = context.getPlatformInterface();
+       const auto                                                              validationEnabled               = context.getTestContext().getCommandLine().isValidationEnabled();
        const Unique<VkInstance>                                instance                                (createDefaultInstance(platformInterface, context.getUsedApiVersion()));
        const InstanceDriver                                    instanceDriver                  (platformInterface, instance.get());
        const VkPhysicalDevice                                  physicalDevice                  = chooseDevice(instanceDriver, instance.get(), context.getTestContext().getCommandLine());
@@ -1543,7 +1544,7 @@ void createDevice (Context& context, void* pNext, const char* const* ppEnabledEx
                ppEnabledExtensionNames,                                        //  const char* const*                          ppEnabledExtensionNames;
                DE_NULL,                                                                        //  const VkPhysicalDeviceFeatures*     pEnabledFeatures;
        };
-       const Unique<VkDevice>                                  device                                  (createDevice(platformInterface, *instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+       const Unique<VkDevice>                                  device                                  (createCustomDevice(validationEnabled, platformInterface, *instance, instanceDriver, physicalDevice, &deviceCreateInfo));
        const DeviceDriver                                              deviceDriver                    (platformInterface, instance.get(), device.get());
        const VkQueue                                                   queue                                   = getDeviceQueue(deviceDriver, *device,  queueFamilyIndex, queueIndex);
 
@@ -1747,7 +1748,7 @@ tcu::TestStatus featureBitInfluenceOnDeviceCreate (Context& context)
                                        if (featureDependencyTable[featureDependencyTableNdx].featurePtr == featurePtr)
                                                featureDependencyTable[featureDependencyTableNdx].dependOnPtr[0] = DE_TRUE;
 
-                               createDevice(context, &features2, DE_NULL, 0u);
+                               createTestDevice(context, &features2, DE_NULL, 0u);
                        }
                }
 
@@ -1782,7 +1783,7 @@ tcu::TestStatus featureBitInfluenceOnDeviceCreate (Context& context)
                                                if (featureDependencyTable[featureDependencyTableNdx].featurePtr == featurePtr)
                                                        featureDependencyTable[featureDependencyTableNdx].dependOnPtr[0] = DE_TRUE;
 
-                                       createDevice(context, &features2, &extStringPtr, (extStringPtr == DE_NULL) ? 0u : 1u );
+                                       createTestDevice(context, &features2, &extStringPtr, (extStringPtr == DE_NULL) ? 0u : 1u );
                                }
                        }
                }
index 03679c3..b3a38c3 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "vktDrawConcurrentTests.hpp"
 
+#include "vktCustomInstancesDevices.hpp"
 #include "vktTestCaseUtil.hpp"
 #include "vktDrawTestCaseUtil.hpp"
 #include "../compute/vktComputeTestsUtil.hpp"
@@ -106,6 +107,7 @@ tcu::TestStatus ConcurrentDraw::iterate (void)
        const deUint32                                                  numValues               = 1024;
        const InstanceInterface&                                instance                = m_context.getInstanceInterface();
        const VkPhysicalDevice                                  physicalDevice  = m_context.getPhysicalDevice();
+       const auto                                                              validation              = m_context.getTestContext().getCommandLine().isValidationEnabled();
        tcu::TestLog&                                                   log                             = m_context.getTestContext().getLog();
        Move<VkDevice>                                                  computeDevice;
        std::vector<VkQueueFamilyProperties>    queueFamilyProperties;
@@ -156,7 +158,7 @@ tcu::TestStatus ConcurrentDraw::iterate (void)
        deviceInfo.queueCreateInfoCount         = 1;
        deviceInfo.pQueueCreateInfos            = &queueInfos;
 
-       computeDevice = createDevice(m_context.getPlatformInterface(), m_context.getInstance(), instance, physicalDevice, &deviceInfo);
+       computeDevice = createCustomDevice(validation, m_context.getPlatformInterface(), m_context.getInstance(), instance, physicalDevice, &deviceInfo);
 
        vk.getDeviceQueue(*computeDevice, computeQueue.queueFamilyIndex, 0, &computeQueue.queue);
 
index cca45b2..dad6902 100644 (file)
@@ -120,7 +120,7 @@ T roundUpToNextMultiple (T value, T multiple)
 class BaseAllocateTestInstance : public TestInstance
 {
 public:
-                                               BaseAllocateTestInstance                (Context& context, bool useDeviceGroups)
+       BaseAllocateTestInstance                (Context& context, bool useDeviceGroups)
                : TestInstance                          (context)
                , m_useDeviceGroups                     (useDeviceGroups)
                , m_subsetAllocationAllowed     (false)
@@ -130,7 +130,7 @@ public:
                if (m_useDeviceGroups)
                        createDeviceGroup();
                else
-                       createDevice();
+                       createTestDevice();
 
                m_allocFlagsInfo.sType          = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR;
                m_allocFlagsInfo.pNext          = DE_NULL;
@@ -138,7 +138,7 @@ public:
                m_allocFlagsInfo.deviceMask     = 0;
        }
 
-       void                                            createDevice            (void);
+       void                                            createTestDevice        (void);
        void                                            createDeviceGroup       (void);
        const vk::DeviceInterface&      getDeviceInterface      (void) { return m_useDeviceGroups ? *m_deviceDriver : m_context.getDeviceInterface(); }
        vk::VkDevice                            getDevice                       (void) { return m_logicalDevice.get();}
@@ -156,7 +156,7 @@ private:
        de::MovePtr<vk::DeviceDriver>   m_deviceDriver;
 };
 
-void BaseAllocateTestInstance::createDevice (void)
+void BaseAllocateTestInstance::createTestDevice (void)
 {
        VkInstance                                                                              instance                                (m_context.getInstance());
        InstanceDriver                                                                  instanceDriver                  (m_context.getPlatformInterface(), instance);
index fbda652..8992fed 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "vktTestCase.hpp"
 #include "vktTestGroupUtil.hpp"
+#include "vktCustomInstancesDevices.hpp"
 #include "vkCmdUtil.hpp"
 #include "vkObjUtil.hpp"
 #include "vkBuilderUtil.hpp"
@@ -38,6 +39,8 @@
 
 #include "vkRayTracingUtil.hpp"
 
+#include "tcuCommandLine.hpp"
+
 namespace vkt
 {
 namespace RayTracing
@@ -929,6 +932,7 @@ std::vector<deUint32> RayTracingCaptureReplayTestInstance::runTest(bool replay)
        const InstanceInterface&                                vki                                                                     = m_context.getInstanceInterface();
        const VkInstance                                                instance                                                        = m_context.getInstance();
        const VkPhysicalDevice                                  physicalDevice                                          = m_context.getPhysicalDevice();
+       const auto                                                              validationEnabled                                       = m_context.getTestContext().getCommandLine().isValidationEnabled();
 
        VkQueue                                                                 queue                                                           = DE_NULL;
        deUint32                                                                queueFamilyIndex                                        = NO_MATCH_FOUND;
@@ -997,7 +1001,7 @@ std::vector<deUint32> RayTracingCaptureReplayTestInstance::runTest(bool replay)
        deviceInfo.pEnabledFeatures                                                                                                     = DE_NULL;
        deviceInfo.queueCreateInfoCount                                                                                         = 1;
        deviceInfo.pQueueCreateInfos                                                                                            = &queueInfo;
-       Move<VkDevice>                                                  testDevice                                                      = createDevice(vkp, m_context.getInstance(), vki, physicalDevice, &deviceInfo);
+       Move<VkDevice>                                                  testDevice                                                      = createCustomDevice(validationEnabled, vkp, m_context.getInstance(), vki, physicalDevice, &deviceInfo);
        VkDevice                                                                device                                                          = *testDevice;
        DeviceDriver                                                    vkd                                                                     (vkp, instance, device);
 
index d415c04..6e8b640 100644 (file)
@@ -29,6 +29,7 @@
 #include "vktTestCaseUtil.hpp"
 #include "vktSynchronizationUtil.hpp"
 #include "vktExternalMemoryUtil.hpp"
+#include "vktCustomInstancesDevices.hpp"
 #include "vkBarrierUtil.hpp"
 
 #include "vkDefs.hpp"
@@ -40,6 +41,7 @@
 #include "vkTypeUtil.hpp"
 
 #include "tcuTestLog.hpp"
+#include "tcuCommandLine.hpp"
 
 #include "deRandom.hpp"
 #include "deThread.hpp"
@@ -93,7 +95,7 @@ void hostSignal (const DeviceInterface& vk, const VkDevice& device, VkSemaphore
        VK_CHECK(vk.signalSemaphore(device, &ssi));
 }
 
-Move<VkDevice> createDevice (const Context& context)
+Move<VkDevice> createTestDevice (const Context& context)
 {
        const float                                                                     priority                                = 0.0f;
        const std::vector<VkQueueFamilyProperties>      queueFamilyProperties   = getPhysicalDeviceQueueFamilyProperties(context.getInstanceInterface(), context.getPhysicalDevice());
@@ -170,7 +172,8 @@ Move<VkDevice> createDevice (const Context& context)
                        0u
                };
 
-               return createDevice(context.getPlatformInterface(), context.getInstance(), context.getInstanceInterface(), context.getPhysicalDevice(), &createInfo);
+               const auto validation = context.getTestContext().getCommandLine().isValidationEnabled();
+               return createCustomDevice(validation, context.getPlatformInterface(), context.getInstance(), context.getInstanceInterface(), context.getPhysicalDevice(), &createInfo);
        }
        catch (const vk::Error& error)
        {
@@ -185,7 +188,7 @@ Move<VkDevice> createDevice (const Context& context)
 class SingletonDevice
 {
        SingletonDevice (const Context& context)
-               : m_logicalDevice       (createDevice(context))
+               : m_logicalDevice       (createTestDevice(context))
        {
        }
 
index 3f57987..8440274 100644 (file)
@@ -29,6 +29,7 @@
 #include "vktTestCaseUtil.hpp"
 #include "vktSynchronizationUtil.hpp"
 #include "vktExternalMemoryUtil.hpp"
+#include "vktCustomInstancesDevices.hpp"
 #include "vkBarrierUtil.hpp"
 
 #include "vkDefs.hpp"
@@ -41,6 +42,7 @@
 #include "vkBufferWithMemory.hpp"
 
 #include "tcuTestLog.hpp"
+#include "tcuCommandLine.hpp"
 
 #include "deClock.h"
 #include "deRandom.hpp"
@@ -1277,7 +1279,7 @@ std::vector<VkDeviceQueueCreateInfo> getQueueCreateInfo(const std::vector<VkQueu
        return infos;
 }
 
-Move<VkDevice> createDevice(const Context& context, SynchronizationType type)
+Move<VkDevice> createTestDevice(const Context& context, SynchronizationType type)
 {
        const std::vector<VkQueueFamilyProperties>              queueFamilyProperties           = getPhysicalDeviceQueueFamilyProperties(context.getInstanceInterface(), context.getPhysicalDevice());
        std::vector<VkDeviceQueueCreateInfo>                    queueCreateInfos                        = getQueueCreateInfo(queueFamilyProperties);
@@ -1323,8 +1325,10 @@ Move<VkDevice> createDevice(const Context& context, SynchronizationType type)
                queueCreateInfo.pQueuePriorities = &(*queuePriorities.back().get())[0];
        }
 
-       return createDevice(context.getPlatformInterface(), context.getInstance(),
-                                               context.getInstanceInterface(), context.getPhysicalDevice(), &deviceInfo);
+       const auto validation = context.getTestContext().getCommandLine().isValidationEnabled();
+
+       return createCustomDevice(validation, context.getPlatformInterface(), context.getInstance(),
+                                                         context.getInstanceInterface(), context.getPhysicalDevice(), &deviceInfo);
 }
 
 
@@ -1332,7 +1336,7 @@ Move<VkDevice> createDevice(const Context& context, SynchronizationType type)
 class SingletonDevice
 {
        SingletonDevice (const Context& context, SynchronizationType type)
-               : m_logicalDevice       (createDevice(context, type))
+               : m_logicalDevice       (createTestDevice(context, type))
        {
        }
 
index 778a1a8..647695b 100644 (file)
@@ -94,15 +94,15 @@ deUint32 chooseQueueFamilyIndex (const InstanceInterface& vki, VkPhysicalDevice
        return 0;
 }
 
-Move<VkDevice> createDevice (const vk::Platform&               platform,
-                                                        const PlatformInterface&               vkp,
-                                                        const VkInstance                               instance,
-                                                        const InstanceInterface&               vki,
-                                                        VkPhysicalDevice                               physicalDevice,
-                                                        const Extensions&                              supportedExtensions,
-                                                        const deUint32                                 queueFamilyIndex,
-                                                        bool                                                   validationEnabled,
-                                                        const VkAllocationCallbacks*   pAllocator = DE_NULL)
+Move<VkDevice> createTestDevice (const vk::Platform&                   platform,
+                                                                const PlatformInterface&               vkp,
+                                                                const VkInstance                               instance,
+                                                                const InstanceInterface&               vki,
+                                                                VkPhysicalDevice                               physicalDevice,
+                                                                const Extensions&                              supportedExtensions,
+                                                                const deUint32                                 queueFamilyIndex,
+                                                                bool                                                   validationEnabled,
+                                                                const VkAllocationCallbacks*   pAllocator = DE_NULL)
 {
        const float queuePriorities[] = { 1.0f };
        bool displayAvailable = true;
@@ -715,7 +715,7 @@ SwapchainCounterTestInstance::SwapchainCounterTestInstance (Context& context)
 
        , m_queueFamilyIndex            (chooseQueueFamilyIndex(m_vki, m_physicalDevice, m_surface))
        , m_deviceExtensions            (enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                                      (createDevice(context.getTestContext().getPlatform().getVulkanPlatform(), m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, context.getTestContext().getCommandLine().isValidationEnabled()))
+       , m_device                                      (createTestDevice(context.getTestContext().getPlatform().getVulkanPlatform(), m_vkp, m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, context.getTestContext().getCommandLine().isValidationEnabled()))
        , m_vkd                                         (m_vkp, m_instance, *m_device)
        , m_queue                                       (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))