Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions iree/hal/vulkan/extensibility_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -153,23 +153,6 @@ StatusOr<std::vector<const char*>> MatchAvailableInstanceExtensions(
return enabled_extensions;
}

StatusOr<std::vector<const char*>> MatchAvailableDeviceLayers(
VkPhysicalDevice physical_device,
const ExtensibilitySpec& extensibility_spec, const DynamicSymbols& syms) {
uint32_t layer_property_count = 0;
VK_RETURN_IF_ERROR(syms.vkEnumerateDeviceLayerProperties(
physical_device, &layer_property_count, nullptr));
std::vector<VkLayerProperties> layer_properties(layer_property_count);
VK_RETURN_IF_ERROR(syms.vkEnumerateDeviceLayerProperties(
physical_device, &layer_property_count, layer_properties.data()));
ASSIGN_OR_RETURN(auto enabled_layers,
MatchAvailableLayers(extensibility_spec.required_layers,
extensibility_spec.optional_layers,
layer_properties),
_ << "Unable to find all required device layers");
return enabled_layers;
}

StatusOr<std::vector<const char*>> MatchAvailableDeviceExtensions(
VkPhysicalDevice physical_device,
const ExtensibilitySpec& extensibility_spec, const DynamicSymbols& syms) {
Expand Down
6 changes: 0 additions & 6 deletions iree/hal/vulkan/extensibility_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,6 @@ StatusOr<std::vector<const char*>> MatchAvailableInstanceLayers(
StatusOr<std::vector<const char*>> MatchAvailableInstanceExtensions(
const ExtensibilitySpec& extensibility_spec, const DynamicSymbols& syms);

// Returns a list of layer names available for the given |physical_device|.
// Fails if any required_layers are unavailable.
StatusOr<std::vector<const char*>> MatchAvailableDeviceLayers(
VkPhysicalDevice physical_device,
const ExtensibilitySpec& extensibility_spec, const DynamicSymbols& syms);

// Returns a list of extension names available for the given |physical_device|.
// Fails if any required_extensions are unavailable.
StatusOr<std::vector<const char*>> MatchAvailableDeviceExtensions(
Expand Down
17 changes: 10 additions & 7 deletions iree/hal/vulkan/vulkan_device.cc
Original file line number Diff line number Diff line change
Expand Up @@ -208,11 +208,14 @@ StatusOr<ref_ptr<VulkanDevice>> VulkanDevice::Create(
DebugCaptureManager* debug_capture_manager) {
IREE_TRACE_SCOPE0("VulkanDevice::Create");

// Find the layers and extensions we need (or want) that are also available
if (!extensibility_spec.optional_layers.empty() ||
!extensibility_spec.required_layers.empty()) {
return InvalidArgumentErrorBuilder(IREE_LOC)
<< "Device layers are deprecated and unsupported by IREE";
}

// Find the extensions we need (or want) that are also available
// on the device. This will fail when required ones are not present.
ASSIGN_OR_RETURN(
auto enabled_layer_names,
MatchAvailableDeviceLayers(physical_device, extensibility_spec, *syms));
ASSIGN_OR_RETURN(auto enabled_extension_names,
MatchAvailableDeviceExtensions(physical_device,
extensibility_spec, *syms));
Expand Down Expand Up @@ -280,8 +283,8 @@ StatusOr<ref_ptr<VulkanDevice>> VulkanDevice::Create(
// Create device and its queues.
VkDeviceCreateInfo device_create_info = {};
device_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
device_create_info.enabledLayerCount = enabled_layer_names.size();
device_create_info.ppEnabledLayerNames = enabled_layer_names.data();
device_create_info.enabledLayerCount = 0;
device_create_info.ppEnabledLayerNames = nullptr;
device_create_info.enabledExtensionCount = enabled_extension_names.size();
device_create_info.ppEnabledExtensionNames = enabled_extension_names.data();
device_create_info.queueCreateInfoCount = queue_create_info.size();
Expand All @@ -305,7 +308,7 @@ StatusOr<ref_ptr<VulkanDevice>> VulkanDevice::Create(
auto logical_device =
make_ref<VkDeviceHandle>(syms, enabled_device_extensions,
/*owns_device=*/true, /*allocator=*/nullptr);
// The Vulkan loader can leak here, depending on which layers are enabled.
// The Vulkan loader can leak here, depending on which features are enabled.
// This is out of our control, so disable leak checks.
IREE_DISABLE_LEAK_CHECKS();
VK_RETURN_IF_ERROR(syms->vkCreateDevice(physical_device, &device_create_info,
Expand Down