Add getInstanceExtensions() to Context
authorArkadiusz Sarwa <arkadiusz.sarwa@mobica.com>
Tue, 15 Nov 2016 12:38:12 +0000 (13:38 +0100)
committerPyry Haulos <phaulos@google.com>
Wed, 16 Nov 2016 00:19:50 +0000 (19:19 -0500)
Change-Id: I7d442578c3dbea007bbf77bdeac0177fde9b87cd

external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/modules/vulkan/vktTestCase.hpp

index cc4268f..1962958 100644 (file)
@@ -106,12 +106,10 @@ vector<string> filterExtensions(const vector<VkExtensionProperties>& deviceExten
        return enabledExtensions;
 }
 
-Move<VkInstance> createInstance (const PlatformInterface& vkp, const tcu::CommandLine& cmdLine)
+Move<VkInstance> createInstance (const PlatformInterface& vkp, const vector<string>& enabledExtensions, const tcu::CommandLine& cmdLine)
 {
        const bool                                                      isValidationEnabled     = cmdLine.isValidationEnabled();
        vector<string>                                          enabledLayers;
-       const vector<VkExtensionProperties>     extensionProperties     = enumerateInstanceExtensionProperties(vkp, DE_NULL);
-       const vector<string>                            enabledExtensions       = filterExtensions(extensionProperties);
 
        if (isValidationEnabled)
        {
@@ -201,6 +199,7 @@ public:
 
        VkInstance                                                      getInstance                                             (void) const    { return *m_instance;                                   }
        const InstanceInterface&                        getInstanceInterface                    (void) const    { return m_instanceInterface;                   }
+       const vector<string>&                           getInstanceExtensions                   (void) const    { return m_instanceExtensions;                  }
 
        VkPhysicalDevice                                        getPhysicalDevice                               (void) const    { return m_physicalDevice;                              }
        const VkPhysicalDeviceFeatures&         getDeviceFeatures                               (void) const    { return m_deviceFeatures;                              }
@@ -214,8 +213,8 @@ public:
 
 private:
        static VkPhysicalDeviceFeatures         filterDefaultDeviceFeatures             (const VkPhysicalDeviceFeatures& deviceFeatures);
-       static vector<string>                           filterDefaultDeviceExtensions   (const vector<VkExtensionProperties>& deviceExtensions);
 
+       const vector<string>                            m_instanceExtensions;
        const Unique<VkInstance>                        m_instance;
        const InstanceDriver                            m_instanceInterface;
 
@@ -231,13 +230,14 @@ private:
 };
 
 DefaultDevice::DefaultDevice (const PlatformInterface& vkPlatform, const tcu::CommandLine& cmdLine)
-       : m_instance                                    (createInstance(vkPlatform, cmdLine))
+       : m_instanceExtensions                  (filterExtensions(enumerateInstanceExtensionProperties(vkPlatform, DE_NULL)))
+       , m_instance                                    (createInstance(vkPlatform, m_instanceExtensions, cmdLine))
        , m_instanceInterface                   (vkPlatform, *m_instance)
        , m_physicalDevice                              (chooseDevice(m_instanceInterface, *m_instance, cmdLine))
        , m_universalQueueFamilyIndex   (findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT))
        , m_deviceFeatures                              (filterDefaultDeviceFeatures(getPhysicalDeviceFeatures(m_instanceInterface, m_physicalDevice)))
        , m_deviceProperties                    (getPhysicalDeviceProperties(m_instanceInterface, m_physicalDevice))
-       , m_deviceExtensions                    (filterDefaultDeviceExtensions(enumerateDeviceExtensionProperties(m_instanceInterface, m_physicalDevice, DE_NULL)))
+       , m_deviceExtensions                    (filterExtensions(enumerateDeviceExtensionProperties(m_instanceInterface, m_physicalDevice, DE_NULL)))
        , m_device                                              (createDefaultDevice(m_instanceInterface, m_physicalDevice, m_universalQueueFamilyIndex, m_deviceFeatures, m_deviceExtensions, cmdLine))
        , m_deviceInterface                             (m_instanceInterface, *m_device)
 {
@@ -264,11 +264,6 @@ VkPhysicalDeviceFeatures DefaultDevice::filterDefaultDeviceFeatures (const VkPhy
        return enabledDeviceFeatures;
 }
 
-vector<string> DefaultDevice::filterDefaultDeviceExtensions (const vector<VkExtensionProperties>& deviceExtensions)
-{
-       return filterExtensions(deviceExtensions);
-}
-
 // Allocator utilities
 
 vk::Allocator* createAllocator (DefaultDevice* device)
@@ -296,6 +291,7 @@ Context::~Context (void)
 {
 }
 
+const vector<string>&                                  Context::getInstanceExtensions                  (void) const { return m_device->getInstanceExtensions();                }
 vk::VkInstance                                                 Context::getInstance                                    (void) const { return m_device->getInstance();                                  }
 const vk::InstanceInterface&                   Context::getInstanceInterface                   (void) const { return m_device->getInstanceInterface();                 }
 vk::VkPhysicalDevice                                   Context::getPhysicalDevice                              (void) const { return m_device->getPhysicalDevice();                    }
index 379d86c..9c6f71a 100644 (file)
@@ -60,6 +60,7 @@ public:
        vk::ProgramCollection<vk::ProgramBinary>&       getBinaryCollection                             (void) const { return m_progCollection;         }
 
        // Default instance & device, selected with --deqp-vk-device-id=N
+       const std::vector<std::string>&                         getInstanceExtensions                   (void) const;
        vk::VkInstance                                                          getInstance                                             (void) const;
        const vk::InstanceInterface&                            getInstanceInterface                    (void) const;
        vk::VkPhysicalDevice                                            getPhysicalDevice                               (void) const;