Skip to content

Commit f728a92

Browse files
committed
[vk] add TextureView::raw_format
1 parent 2d73eb3 commit f728a92

File tree

4 files changed

+18
-27
lines changed

4 files changed

+18
-27
lines changed

wgpu-hal/src/vulkan/command.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -744,18 +744,18 @@ impl crate::CommandEncoder for super::CommandEncoder {
744744
attachments: ArrayVec::default(),
745745
extent: desc.extent,
746746
};
747-
let caps = &self.device.private_caps;
748747

749748
for cat in desc.color_attachments {
750749
if let Some(cat) = cat.as_ref() {
751750
vk_clear_values.push(vk::ClearValue {
752751
color: unsafe { cat.make_vk_clear_color() },
753752
});
754753
let color = super::ColorAttachmentKey {
755-
base: cat.target.make_attachment_key(cat.ops, caps),
756-
resolve: cat.resolve_target.as_ref().map(|target| {
757-
target.make_attachment_key(crate::AttachmentOps::STORE, caps)
758-
}),
754+
base: cat.target.make_attachment_key(cat.ops),
755+
resolve: cat
756+
.resolve_target
757+
.as_ref()
758+
.map(|target| target.make_attachment_key(crate::AttachmentOps::STORE)),
759759
};
760760

761761
rp_key.colors.push(Some(color));
@@ -785,7 +785,7 @@ impl crate::CommandEncoder for super::CommandEncoder {
785785
},
786786
});
787787
rp_key.depth_stencil = Some(super::DepthStencilAttachmentKey {
788-
base: ds.target.make_attachment_key(ds.depth_ops, caps),
788+
base: ds.target.make_attachment_key(ds.depth_ops),
789789
stencil_ops: ds.stencil_ops,
790790
});
791791
fb_key.attachments.push(ds.target.view.raw);

wgpu-hal/src/vulkan/conv.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,10 @@ pub fn map_vk_surface_formats(sf: vk::SurfaceFormatKHR) -> Option<wgt::TextureFo
182182
}
183183

184184
impl crate::Attachment<'_, super::TextureView> {
185-
pub(super) fn make_attachment_key(
186-
&self,
187-
ops: crate::AttachmentOps,
188-
caps: &super::PrivateCapabilities,
189-
) -> super::AttachmentKey {
185+
pub(super) fn make_attachment_key(&self, ops: crate::AttachmentOps) -> super::AttachmentKey {
190186
super::AttachmentKey {
191-
format: caps.map_texture_format(self.view.view_format),
192-
layout: derive_image_layout(self.usage, self.view.view_format),
187+
format: self.view.raw_format,
188+
layout: derive_image_layout(self.usage, self.view.format),
193189
ops,
194190
}
195191
}
@@ -198,13 +194,7 @@ impl crate::Attachment<'_, super::TextureView> {
198194
impl crate::ColorAttachment<'_, super::TextureView> {
199195
pub(super) unsafe fn make_vk_clear_color(&self) -> vk::ClearColorValue {
200196
let cv = &self.clear_value;
201-
match self
202-
.target
203-
.view
204-
.view_format
205-
.sample_type(None, None)
206-
.unwrap()
207-
{
197+
match self.target.view.format.sample_type(None, None).unwrap() {
208198
wgt::TextureSampleType::Float { .. } => vk::ClearColorValue {
209199
float32: [cv.r as f32, cv.g as f32, cv.b as f32, cv.a as f32],
210200
},

wgpu-hal/src/vulkan/device.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,11 +1260,12 @@ impl crate::Device for super::Device {
12601260
desc: &crate::TextureViewDescriptor,
12611261
) -> Result<super::TextureView, crate::DeviceError> {
12621262
let subresource_range = conv::map_subresource_range(&desc.range, texture.format);
1263+
let raw_format = self.shared.private_caps.map_texture_format(desc.format);
12631264
let mut vk_info = vk::ImageViewCreateInfo::default()
12641265
.flags(vk::ImageViewCreateFlags::empty())
12651266
.image(texture.raw)
12661267
.view_type(conv::map_view_dimension(desc.dimension))
1267-
.format(self.shared.private_caps.map_texture_format(desc.format))
1268+
.format(raw_format)
12681269
.subresource_range(subresource_range);
12691270
let layers =
12701271
NonZeroU32::new(subresource_range.layer_count).expect("Unexpected zero layer count");
@@ -1288,7 +1289,8 @@ impl crate::Device for super::Device {
12881289
Ok(super::TextureView {
12891290
raw,
12901291
layers,
1291-
view_format: desc.format,
1292+
format: desc.format,
1293+
raw_format,
12921294
})
12931295
}
12941296
unsafe fn destroy_texture_view(&self, view: super::TextureView) {
@@ -1727,10 +1729,8 @@ impl crate::Device for super::Device {
17271729
(image_infos, local_image_infos) =
17281730
image_infos.extend(desc.textures[start as usize..end as usize].iter().map(
17291731
|binding| {
1730-
let layout = conv::derive_image_layout(
1731-
binding.usage,
1732-
binding.view.view_format,
1733-
);
1732+
let layout =
1733+
conv::derive_image_layout(binding.usage, binding.view.format);
17341734
vk::DescriptorImageInfo::default()
17351735
.image_view(binding.view.raw)
17361736
.image_layout(layout)

wgpu-hal/src/vulkan/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,8 @@ impl Texture {
792792
pub struct TextureView {
793793
raw: vk::ImageView,
794794
layers: NonZeroU32,
795-
view_format: wgt::TextureFormat,
795+
format: wgt::TextureFormat,
796+
raw_format: vk::Format,
796797
}
797798

798799
impl crate::DynTextureView for TextureView {}

0 commit comments

Comments
 (0)