Skip to content

Commit f15e636

Browse files
committed
Deploying to master from @ f918ac1ed139d4d34aa4775f8ea10d4e2b8213fb 🚀
1 parent ba1fe67 commit f15e636

File tree

2 files changed

+53
-68
lines changed

2 files changed

+53
-68
lines changed

‎doc/src/wgpu_hal/vulkan/adapter.rs.html

Lines changed: 52 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,14 +1656,6 @@
16561656
<span id="1656">1656</span>
16571657
<span id="1657">1657</span>
16581658
<span id="1658">1658</span>
1659-
<span id="1659">1659</span>
1660-
<span id="1660">1660</span>
1661-
<span id="1661">1661</span>
1662-
<span id="1662">1662</span>
1663-
<span id="1663">1663</span>
1664-
<span id="1664">1664</span>
1665-
<span id="1665">1665</span>
1666-
<span id="1666">1666</span>
16671659
</pre><pre class="rust"><code><span class="kw">use </span><span class="kw">super</span>::conv;
16681660

16691661
<span class="kw">use </span>ash::{extensions::khr, vk};
@@ -2008,7 +2000,12 @@
20082000
}
20092001
}
20102002

2011-
<span class="kw">fn </span>to_wgpu(<span class="kw-2">&amp;</span><span class="self">self</span>, caps: <span class="kw-2">&amp;</span>PhysicalDeviceCapabilities) -&gt; (wgt::Features, wgt::DownlevelFlags) {
2003+
<span class="kw">fn </span>to_wgpu(
2004+
<span class="kw-2">&amp;</span><span class="self">self</span>,
2005+
instance: <span class="kw-2">&amp;</span>ash::Instance,
2006+
phd: vk::PhysicalDevice,
2007+
caps: <span class="kw-2">&amp;</span>PhysicalDeviceCapabilities,
2008+
) -&gt; (wgt::Features, wgt::DownlevelFlags) {
20122009
<span class="kw">use </span><span class="kw">crate</span>::auxil::db;
20132010
<span class="kw">use </span>wgt::{DownlevelFlags <span class="kw">as </span>Df, Features <span class="kw">as </span>F};
20142011
<span class="kw">let </span><span class="kw-2">mut </span>features = F::empty()
@@ -2198,7 +2195,7 @@
21982195

21992196
features.set(
22002197
F::TEXTURE_FORMAT_16BIT_NORM,
2201-
is_format_16bit_norm_supported(caps),
2198+
is_format_16bit_norm_supported(instance, phd),
22022199
);
22032200

22042201
<span class="kw">if let </span><span class="prelude-val">Some</span>(<span class="kw-2">ref </span>astc_hdr) = <span class="self">self</span>.astc_hdr {
@@ -2219,7 +2216,9 @@
22192216

22202217
features.set(
22212218
F::DEPTH32FLOAT_STENCIL8,
2222-
caps.supports_format(
2219+
supports_format(
2220+
instance,
2221+
phd,
22232222
vk::Format::D32_SFLOAT_S8_UINT,
22242223
vk::ImageTiling::OPTIMAL,
22252224
vk::FormatFeatureFlags::DEPTH_STENCIL_ATTACHMENT,
@@ -2228,7 +2227,9 @@
22282227

22292228
features.set(
22302229
F::DEPTH24UNORM_STENCIL8,
2231-
caps.supports_format(
2230+
supports_format(
2231+
instance,
2232+
phd,
22322233
vk::Format::D24_UNORM_S8_UINT,
22332234
vk::ImageTiling::OPTIMAL,
22342235
vk::FormatFeatureFlags::DEPTH_STENCIL_ATTACHMENT,
@@ -2255,7 +2256,6 @@
22552256
properties: vk::PhysicalDeviceProperties,
22562257
vulkan_1_2: <span class="prelude-ty">Option</span>&lt;vk::PhysicalDeviceVulkan12Properties&gt;,
22572258
descriptor_indexing: <span class="prelude-ty">Option</span>&lt;vk::PhysicalDeviceDescriptorIndexingPropertiesEXT&gt;,
2258-
formats: Vec&lt;vk::FormatProperties&gt;,
22592259
}
22602260

22612261
<span class="comment">// This is safe because the structs have `p_next: *mut c_void`, which we null out/never read.
@@ -2273,22 +2273,6 @@
22732273
.any(|ep| <span class="kw">unsafe </span>{ CStr::from_ptr(ep.extension_name.as_ptr()) } == extension)
22742274
}
22752275

2276-
<span class="kw">fn </span>supports_format(
2277-
<span class="kw-2">&amp;</span><span class="self">self</span>,
2278-
format: vk::Format,
2279-
tiling: vk::ImageTiling,
2280-
features: vk::FormatFeatureFlags,
2281-
) -&gt; bool {
2282-
<span class="self">self</span>.formats
2283-
.get(format.as_raw() <span class="kw">as </span>usize)
2284-
.map(|properties| <span class="kw">match </span>tiling {
2285-
vk::ImageTiling::LINEAR =&gt; properties.linear_tiling_features.contains(features),
2286-
vk::ImageTiling::OPTIMAL =&gt; properties.optimal_tiling_features.contains(features),
2287-
<span class="kw">_ </span>=&gt; <span class="bool-val">false</span>,
2288-
})
2289-
.unwrap()
2290-
}
2291-
22922276
<span class="doccomment">/// Map `requested_features` to the list of Vulkan extension strings required to create the logical device.
22932277
</span><span class="kw">fn </span>get_required_extensions(<span class="kw-2">&amp;</span><span class="self">self</span>, requested_features: wgt::Features) -&gt; Vec&lt;<span class="kw-2">&amp;</span><span class="lifetime">&#39;static </span>CStr&gt; {
22942278
<span class="kw">let </span><span class="kw-2">mut </span>extensions = Vec::new();
@@ -2534,7 +2518,6 @@
25342518
} <span class="kw">else </span>{
25352519
<span class="kw">unsafe </span>{ <span class="self">self</span>.raw.get_physical_device_properties(phd) }
25362520
};
2537-
capabilities.formats = query_format_properties(<span class="kw-2">&amp;</span><span class="self">self</span>.raw, phd);
25382521

25392522
capabilities
25402523
};
@@ -2662,7 +2645,8 @@
26622645
backend: wgt::Backend::Vulkan,
26632646
};
26642647

2665-
<span class="kw">let </span>(available_features, downlevel_flags) = phd_features.to_wgpu(<span class="kw-2">&amp;</span>phd_capabilities);
2648+
<span class="kw">let </span>(available_features, downlevel_flags) =
2649+
phd_features.to_wgpu(<span class="kw-2">&amp;</span><span class="self">self</span>.shared.raw, phd, <span class="kw-2">&amp;</span>phd_capabilities);
26662650
<span class="kw">let </span><span class="kw-2">mut </span>workarounds = <span class="kw">super</span>::Workarounds::empty();
26672651
{
26682652
<span class="comment">// see https://github.com/gfx-rs/gfx/issues/1930
@@ -2965,7 +2949,6 @@
29652949
}
29662950
};
29672951

2968-
<span class="macro">log::info!</span>(<span class="string">&quot;Private capabilities: {:?}&quot;</span>, <span class="self">self</span>.private_caps);
29692952
<span class="kw">let </span>raw_queue = {
29702953
<span class="macro">profiling::scope!</span>(<span class="string">&quot;vkGetDeviceQueue&quot;</span>);
29712954
raw_device.get_device_queue(family_index, queue_index)
@@ -3115,13 +3098,9 @@
31153098

31163099
<span class="kw">let </span>vk_format = <span class="self">self</span>.private_caps.map_texture_format(format);
31173100
<span class="kw">let </span>properties = <span class="self">self
3118-
</span>.phd_capabilities
3119-
.formats
3120-
.get(vk_format.as_raw() <span class="kw">as </span>usize);
3121-
<span class="kw">let </span>properties = <span class="kw">match </span>properties {
3122-
<span class="prelude-val">Some</span>(p) =&gt; p,
3123-
<span class="prelude-val">None </span>=&gt; <span class="kw">return </span>Tfc::empty(),
3124-
};
3101+
</span>.instance
3102+
.raw
3103+
.get_physical_device_format_properties(<span class="self">self</span>.raw, vk_format);
31253104
<span class="kw">let </span>features = properties.optimal_tiling_features;
31263105

31273106
<span class="kw">let </span><span class="kw-2">mut </span>flags = Tfc::empty();
@@ -3293,42 +3272,47 @@
32933272
}
32943273
}
32953274

3296-
<span class="doccomment">/// Querys properties of all known image formats. The raw value of `vk::Format` corresponds
3297-
/// to the index of the returned Vec.
3298-
</span><span class="kw">fn </span>query_format_properties(
3299-
instance: <span class="kw-2">&amp;</span>ash::Instance,
3300-
physical_device: vk::PhysicalDevice,
3301-
) -&gt; Vec&lt;vk::FormatProperties&gt; {
3302-
<span class="comment">// vk::Format::UNDEFINED
3303-
</span><span class="kw">const </span>FORMAT_MIN: i32 = <span class="number">0</span>;
3304-
3305-
<span class="comment">// vk::Format::ASTC_12X12_SRGB_BLOCK
3306-
</span><span class="kw">const </span>FORMAT_MAX: i32 = <span class="number">184</span>;
3307-
3308-
<span class="macro">debug_assert_eq!</span>(FORMAT_MAX, vk::Format::ASTC_12X12_SRGB_BLOCK.as_raw());
3309-
3310-
(FORMAT_MIN..(FORMAT_MAX + <span class="number">1</span>))
3311-
.map(|raw| {
3312-
<span class="kw">let </span>image_format = vk::Format::from_raw(raw);
3313-
<span class="kw">unsafe </span>{ instance.get_physical_device_format_properties(physical_device, image_format) }
3314-
})
3315-
.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;()
3316-
}
3317-
3318-
<span class="kw">fn </span>is_format_16bit_norm_supported(caps: <span class="kw-2">&amp;</span>PhysicalDeviceCapabilities) -&gt; bool {
3275+
<span class="kw">fn </span>is_format_16bit_norm_supported(instance: <span class="kw-2">&amp;</span>ash::Instance, phd: vk::PhysicalDevice) -&gt; bool {
33193276
<span class="kw">let </span>tiling = vk::ImageTiling::OPTIMAL;
33203277
<span class="kw">let </span>features = vk::FormatFeatureFlags::SAMPLED_IMAGE
33213278
| vk::FormatFeatureFlags::STORAGE_IMAGE
33223279
| vk::FormatFeatureFlags::TRANSFER_SRC
33233280
| vk::FormatFeatureFlags::TRANSFER_DST;
3324-
<span class="kw">let </span>r16unorm = caps.supports_format(vk::Format::R16_UNORM, tiling, features);
3325-
<span class="kw">let </span>r16snorm = caps.supports_format(vk::Format::R16_SNORM, tiling, features);
3326-
<span class="kw">let </span>rg16unorm = caps.supports_format(vk::Format::R16G16_UNORM, tiling, features);
3327-
<span class="kw">let </span>rg16snorm = caps.supports_format(vk::Format::R16G16_SNORM, tiling, features);
3328-
<span class="kw">let </span>rgba16unorm = caps.supports_format(vk::Format::R16G16B16A16_UNORM, tiling, features);
3329-
<span class="kw">let </span>rgba16snorm = caps.supports_format(vk::Format::R16G16B16A16_SNORM, tiling, features);
3281+
<span class="kw">let </span>r16unorm = supports_format(instance, phd, vk::Format::R16_UNORM, tiling, features);
3282+
<span class="kw">let </span>r16snorm = supports_format(instance, phd, vk::Format::R16_SNORM, tiling, features);
3283+
<span class="kw">let </span>rg16unorm = supports_format(instance, phd, vk::Format::R16G16_UNORM, tiling, features);
3284+
<span class="kw">let </span>rg16snorm = supports_format(instance, phd, vk::Format::R16G16_SNORM, tiling, features);
3285+
<span class="kw">let </span>rgba16unorm = supports_format(
3286+
instance,
3287+
phd,
3288+
vk::Format::R16G16B16A16_UNORM,
3289+
tiling,
3290+
features,
3291+
);
3292+
<span class="kw">let </span>rgba16snorm = supports_format(
3293+
instance,
3294+
phd,
3295+
vk::Format::R16G16B16A16_SNORM,
3296+
tiling,
3297+
features,
3298+
);
33303299

33313300
r16unorm &amp;&amp; r16snorm &amp;&amp; rg16unorm &amp;&amp; rg16snorm &amp;&amp; rgba16unorm &amp;&amp; rgba16snorm
33323301
}
3302+
3303+
<span class="kw">fn </span>supports_format(
3304+
instance: <span class="kw-2">&amp;</span>ash::Instance,
3305+
phd: vk::PhysicalDevice,
3306+
format: vk::Format,
3307+
tiling: vk::ImageTiling,
3308+
features: vk::FormatFeatureFlags,
3309+
) -&gt; bool {
3310+
<span class="kw">let </span>properties = <span class="kw">unsafe </span>{ instance.get_physical_device_format_properties(phd, format) };
3311+
<span class="kw">match </span>tiling {
3312+
vk::ImageTiling::LINEAR =&gt; properties.linear_tiling_features.contains(features),
3313+
vk::ImageTiling::OPTIMAL =&gt; properties.optimal_tiling_features.contains(features),
3314+
<span class="kw">_ </span>=&gt; <span class="bool-val">false</span>,
3315+
}
3316+
}
33333317
</code></pre></div>
33343318
</section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="wgpu_hal" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.65.0-nightly (e1b28cd2f 2022-08-19)" ></div></body></html>

‎doc/wgpu/struct.Features.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@
352352
<p>Supported Platforms:</p>
353353
<ul>
354354
<li>Metal</li>
355+
<li>Vulkan</li>
355356
</ul>
356357
<p>This is a native-only feature.</p>
357358
</div></details><details class="rustdoc-toggle" open><summary><section id="associatedconstant.WRITE_TIMESTAMP_INSIDE_PASSES" class="associatedconstant has-srclink"><h4 class="code-header">pub const <a href="#associatedconstant.WRITE_TIMESTAMP_INSIDE_PASSES" class="constant">WRITE_TIMESTAMP_INSIDE_PASSES</a>: <a class="struct" href="struct.Features.html" title="struct wgpu::Features">Features</a> = Self{ bits: 1 &lt;&lt; 41,}</h4></section></summary><div class="docblock"><p>Allows for timestamp queries inside renderpasses. Metal does not allow this

0 commit comments

Comments
 (0)