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

Commit 31ec0bd5 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "[vkjson] Add support of VK_KHR_shader_float16_int8." into rvc-dev am:...

Merge "[vkjson] Add support of VK_KHR_shader_float16_int8." into rvc-dev am: d9eff75a am: 32c222f5

Change-Id: I9dcdb7e7c0e5fa45545874010c71e2ee2da78c24
parents 40dc82b5 32c222f5
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -590,6 +590,13 @@ inline bool Iterate(Visitor* visitor,
                        &features->variable_pointer_features_khr);
}

template <typename Visitor>
inline bool Iterate(Visitor* visitor,
                    VkJsonExtShaderFloat16Int8Features* features) {
  return visitor->Visit("shaderFloat16Int8FeaturesKHR",
                        &features->shader_float16_int8_features_khr);
}

template <typename Visitor>
inline bool Iterate(Visitor* visitor, VkMemoryType* type) {
  return
@@ -690,6 +697,13 @@ inline bool Iterate(Visitor* visitor,
         visitor->Visit("variablePointers", &features->variablePointers);
}

template <typename Visitor>
inline bool Iterate(Visitor* visitor,
                    VkPhysicalDeviceShaderFloat16Int8FeaturesKHR* features) {
  return visitor->Visit("shaderFloat16", &features->shaderFloat16) &&
         visitor->Visit("shaderInt8", &features->shaderInt8);
}

template <typename Visitor>
inline bool Iterate(Visitor* visitor,
                    VkPhysicalDeviceProtectedMemoryFeatures* features) {
@@ -824,6 +838,10 @@ inline bool Iterate(Visitor* visitor, VkJsonDevice* device) {
        ret &= visitor->Visit("VK_KHR_variable_pointers",
                            &device->ext_variable_pointer_features);
      }
      if (device->ext_shader_float16_int8_features.reported) {
        ret &= visitor->Visit("VK_KHR_shader_float16_int8",
                              &device->ext_shader_float16_int8_features);
      }
  }
  return ret;
}
+11 −0
Original line number Diff line number Diff line
@@ -72,6 +72,16 @@ struct VkJsonExtVariablePointerFeatures {
  VkPhysicalDeviceVariablePointerFeaturesKHR variable_pointer_features_khr;
};

struct VkJsonExtShaderFloat16Int8Features {
  VkJsonExtShaderFloat16Int8Features() {
    reported = false;
    memset(&shader_float16_int8_features_khr, 0,
           sizeof(VkPhysicalDeviceShaderFloat16Int8FeaturesKHR));
  }
  bool reported;
  VkPhysicalDeviceShaderFloat16Int8FeaturesKHR shader_float16_int8_features_khr;
};

struct VkJsonDevice {
  VkJsonDevice() {
    memset(&properties, 0, sizeof(VkPhysicalDeviceProperties));
@@ -101,6 +111,7 @@ struct VkJsonDevice {
  VkPhysicalDeviceFeatures features;
  VkJsonExtDriverProperties ext_driver_properties;
  VkJsonExtVariablePointerFeatures ext_variable_pointer_features;
  VkJsonExtShaderFloat16Int8Features ext_shader_float16_int8_features;
  VkPhysicalDeviceMemoryProperties memory;
  std::vector<VkQueueFamilyProperties> queues;
  std::vector<VkExtensionProperties> extensions;
+10 −0
Original line number Diff line number Diff line
@@ -136,6 +136,16 @@ VkJsonDevice VkJsonGetDevice(VkInstance instance,
      features.pNext =
          &device.ext_variable_pointer_features.variable_pointer_features_khr;
    }
    if (HasExtension("VK_KHR_shader_float16_int8", device.extensions)) {
      device.ext_shader_float16_int8_features.reported = true;
      device.ext_shader_float16_int8_features.shader_float16_int8_features_khr
          .sType =
          VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR;
      device.ext_shader_float16_int8_features.shader_float16_int8_features_khr
          .pNext = features.pNext;
      features.pNext = &device.ext_shader_float16_int8_features
                            .shader_float16_int8_features_khr;
    }
    vkpGetPhysicalDeviceFeatures2KHR(physical_device, &features);
    device.features = features.features;
  } else {