[hal/vulkan] Document more PhysicalDeviceFeatures-related things.

Improve documentation for:
- `PhysicalDeviceFeatures::from_extensions_and_requested_features`
- `PhysicalDeviceFeatures::to_wgpu`
- `Adapter::physical_device_features`
This commit is contained in:
Jim Blandy 2024-03-29 17:19:52 -07:00 committed by Teodor Tanasoaia
parent 7954bb66a5
commit e30e300436

View File

@ -151,9 +151,32 @@ impl PhysicalDeviceFeatures {
info info
} }
/// Create a `PhysicalDeviceFeatures` that will be used to create a logical device. /// Create a `PhysicalDeviceFeatures` that can be used to create a logical
/// device.
/// ///
/// `requested_features` should be the same as what was used to generate `enabled_extensions`. /// Return a `PhysicalDeviceFeatures` value capturing all the Vulkan
/// features needed for the given [`Features`], [`DownlevelFlags`], and
/// [`PrivateCapabilities`]. You can use the returned value's
/// [`add_to_device_create_builder`] method to configure a
/// [`DeviceCreateInfoBuilder`] to build a logical device providing those
/// features.
///
/// To ensure that the returned value is able to select all the Vulkan
/// features needed to express `requested_features`, `downlevel_flags`, and
/// `private_caps`:
///
/// - The given `enabled_extensions` set must include all the extensions
/// selected by [`Adapter::required_device_extensions`] when passed
/// `features`.
///
/// - The given `device_api_version` must be the Vulkan API version of the
/// physical device we will use to create the logical device.
///
/// [`Features`]: wgt::Features
/// [`DownlevelFlags`]: wgt::DownlevelFlags
/// [`PrivateCapabilities`]: super::PrivateCapabilities
/// [`DeviceCreateInfoBuilder`]: vk::DeviceCreateInfoBuilder
/// [`Adapter::required_device_extensions`]: super::Adapter::required_device_extensions
fn from_extensions_and_requested_features( fn from_extensions_and_requested_features(
device_api_version: u32, device_api_version: u32,
enabled_extensions: &[&'static CStr], enabled_extensions: &[&'static CStr],
@ -414,6 +437,11 @@ impl PhysicalDeviceFeatures {
} }
} }
/// Compute the wgpu [`Features`] and [`DownlevelFlags`] supported by a physical device.
///
/// Given `self`, together with the instance and physical device it was
/// built from, and a `caps` also built from those, determine which wgpu
/// features and downlevel flags the device can support.
fn to_wgpu( fn to_wgpu(
&self, &self,
instance: &ash::Instance, instance: &ash::Instance,
@ -1420,7 +1448,20 @@ impl super::Adapter {
supported_extensions supported_extensions
} }
/// `features` must be the same features used to create `enabled_extensions`. /// Create a `PhysicalDeviceFeatures` for opening a logical device with
/// `features` from this adapter.
///
/// The given `enabled_extensions` set must include all the extensions
/// selected by [`required_device_extensions`] when passed `features`.
/// Otherwise, the `PhysicalDeviceFeatures` value may not be able to select
/// all the Vulkan features needed to represent `features` and this
/// adapter's characteristics.
///
/// Typically, you'd simply call `required_device_extensions`, and then pass
/// its return value and the feature set you gave it directly to this
/// function. But it's fine to add more extensions to the list.
///
/// [`required_device_extensions`]: Self::required_device_extensions
pub fn physical_device_features( pub fn physical_device_features(
&self, &self,
enabled_extensions: &[&'static CStr], enabled_extensions: &[&'static CStr],