diff options
author | Jesse Hall <jessehall@google.com> | 2017-08-28 22:15:05 -0700 |
---|---|---|
committer | Jesse Hall <jessehall@google.com> | 2017-08-28 22:18:31 -0700 |
commit | 73bf24cb361d3b2163cd0e124aff01b5308ad9d5 (patch) | |
tree | 86f43922a290672c30b9b32ce9fd7a4384a372f1 | |
parent | 365754e951120dddb07d6f818897282766f52265 (diff) | |
download | vulkan-validation-layers-73bf24cb361d3b2163cd0e124aff01b5308ad9d5.tar.gz |
vkjson: Add VK_KHR_variable_pointersoreo-mr1-dev
Test: adb shell cmd gpu vkjson
bit CtsGraphicsTestCases:.VulkanFeaturesTest
Bug: 34745152
Change-Id: If9006cb232595740f46cd026a150373dc66e4bac
-rw-r--r-- | libs/vkjson/vkjson.cc | 10 | ||||
-rw-r--r-- | libs/vkjson/vkjson.h | 3 | ||||
-rw-r--r-- | libs/vkjson/vkjson_instance.cc | 6 |
3 files changed, 19 insertions, 0 deletions
diff --git a/libs/vkjson/vkjson.cc b/libs/vkjson/vkjson.cc index 4eed94569..a1068f18e 100644 --- a/libs/vkjson/vkjson.cc +++ b/libs/vkjson/vkjson.cc @@ -270,6 +270,14 @@ inline bool Iterate(Visitor* visitor, VkPhysicalDeviceFeatures* features) { } template <typename Visitor> +inline bool Iterate(Visitor* visitor, + VkPhysicalDeviceVariablePointerFeaturesKHR* features) { + return visitor->Visit("variablePointersStorageBuffer", + &features->variablePointersStorageBuffer) && + visitor->Visit("variablePointers", &features->variablePointers); +} + +template <typename Visitor> inline bool Iterate(Visitor* visitor, VkMemoryType* type) { return visitor->Visit("propertyFlags", &type->propertyFlags) && @@ -335,6 +343,8 @@ template <typename Visitor> inline bool Iterate(Visitor* visitor, VkJsonDevice* device) { return visitor->Visit("properties", &device->properties) && visitor->Visit("features", &device->features) && + visitor->Visit("variablePointersFeaturesKHR", + &device->variable_pointer_features) && visitor->Visit("memory", &device->memory) && visitor->Visit("queues", &device->queues) && visitor->Visit("extensions", &device->extensions) && diff --git a/libs/vkjson/vkjson.h b/libs/vkjson/vkjson.h index 24e1979bd..af3b37f6b 100644 --- a/libs/vkjson/vkjson.h +++ b/libs/vkjson/vkjson.h @@ -42,10 +42,13 @@ struct VkJsonDevice { VkJsonDevice() { memset(&properties, 0, sizeof(VkPhysicalDeviceProperties)); memset(&features, 0, sizeof(VkPhysicalDeviceFeatures)); + memset(&variable_pointer_features, 0, + sizeof(VkPhysicalDeviceVariablePointerFeaturesKHR)); memset(&memory, 0, sizeof(VkPhysicalDeviceMemoryProperties)); } VkPhysicalDeviceProperties properties; VkPhysicalDeviceFeatures features; + VkPhysicalDeviceVariablePointerFeaturesKHR variable_pointer_features; VkPhysicalDeviceMemoryProperties memory; std::vector<VkQueueFamilyProperties> queues; std::vector<VkExtensionProperties> extensions; diff --git a/libs/vkjson/vkjson_instance.cc b/libs/vkjson/vkjson_instance.cc index 22b037703..c3b9e47d4 100644 --- a/libs/vkjson/vkjson_instance.cc +++ b/libs/vkjson/vkjson_instance.cc @@ -104,6 +104,12 @@ VkJsonDevice VkJsonGetDevice(VkInstance instance, nullptr, {} // features }; + if (HasExtension("VK_KHR_variable_pointers", device.extensions)) { + device.variable_pointer_features.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR; + device.variable_pointer_features.pNext = features.pNext; + features.pNext = &device.variable_pointer_features; + } vkpGetPhysicalDeviceFeatures2KHR(physical_device, &features); device.features = features.features; } else { |