Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc2bdf9d authored by Jason Macnak's avatar Jason Macnak
Browse files

Update VkJson to not visit features based on a specific version

... and instead visit features based on having at least a specific
version. SwiftShader has started to advertise 1.3 with aosp/2132616
but this caused vkjson to not report anything as VK_API_VERSION_1_3
was not explicitly handled.

Bug: b/236772851
Test: `cvd start --gpu_mode=guest_swiftshader`
Test: `cts -m CtsGraphicsTestCases -t android.graphics.cts.VulkanFeaturesTest`
      with aosp/2133694 reverted
Change-Id: I75c352dcc8b5398ef6c902cf5fd77706655dbb34
Merged-In: I6e71a84b85874a71031734004b8e44ee0ea7446f
parent 28a7564a
Loading
Loading
Loading
Loading
+53 −60
Original line number Diff line number Diff line
@@ -840,11 +840,7 @@ inline bool Iterate(Visitor* visitor, VkJsonDeviceGroup* device_group) {
template <typename Visitor>
inline bool Iterate(Visitor* visitor, VkJsonDevice* device) {
  bool ret = true;
  switch (device->properties.apiVersion ^
          VK_VERSION_PATCH(device->properties.apiVersion)) {
    case VK_API_VERSION_1_2:
      FALLTHROUGH_INTENDED;
    case VK_API_VERSION_1_1:
  if (device->properties.apiVersion >= VK_API_VERSION_1_1) {
    ret &=
        visitor->Visit("subgroupProperties", &device->subgroup_properties) &&
        visitor->Visit("pointClippingProperties",
@@ -869,8 +865,8 @@ inline bool Iterate(Visitor* visitor, VkJsonDevice* device) {
                        &device->external_fence_properties) &&
        visitor->Visit("externalSemaphoreProperties",
                        &device->external_semaphore_properties);
      FALLTHROUGH_INTENDED;
    case VK_API_VERSION_1_0:
  }
  if (device->properties.apiVersion >= VK_API_VERSION_1_0) {
    ret &= visitor->Visit("properties", &device->properties) &&
            visitor->Visit("features", &device->features) &&
            visitor->Visit("memory", &device->memory) &&
@@ -897,13 +893,10 @@ inline bool Iterate(Visitor* visitor, VkJsonDevice* device) {
template <typename Visitor>
inline bool Iterate(Visitor* visitor, VkJsonInstance* instance) {
  bool ret = true;
  switch (instance->api_version ^ VK_VERSION_PATCH(instance->api_version)) {
    case VK_API_VERSION_1_2:
      FALLTHROUGH_INTENDED;
    case VK_API_VERSION_1_1:
  if (instance->api_version >= VK_API_VERSION_1_1) {
    ret &= visitor->Visit("deviceGroups", &instance->device_groups);
      FALLTHROUGH_INTENDED;
    case VK_API_VERSION_1_0:
  }
  if (instance->api_version >= VK_API_VERSION_1_0) {
    ret &= visitor->Visit("layers", &instance->layers) &&
           visitor->Visit("extensions", &instance->extensions) &&
           visitor->Visit("devices", &instance->devices);