aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2017-08-28 22:15:05 -0700
committerJesse Hall <jessehall@google.com>2017-08-28 22:18:31 -0700
commit73bf24cb361d3b2163cd0e124aff01b5308ad9d5 (patch)
tree86f43922a290672c30b9b32ce9fd7a4384a372f1
parent365754e951120dddb07d6f818897282766f52265 (diff)
downloadvulkan-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.cc10
-rw-r--r--libs/vkjson/vkjson.h3
-rw-r--r--libs/vkjson/vkjson_instance.cc6
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 {