vulkan: add get_ub_descriptor macro
This commit is contained in:
parent
a2e089d9e3
commit
6d28bfd4e2
1 changed files with 22 additions and 22 deletions
|
|
@ -567,24 +567,35 @@ impl VulkanRenderer {
|
||||||
.get_or_insert_with(|| {
|
.get_or_insert_with(|| {
|
||||||
vec![0u8; self.device.uniform_buffer_descriptor_size].into_boxed_slice()
|
vec![0u8; self.device.uniform_buffer_descriptor_size].into_boxed_slice()
|
||||||
});
|
});
|
||||||
if let Some(bb) = bb {
|
macro_rules! get_ub_descriptor {
|
||||||
let layout = self.out_descriptor_set_layout.as_ref().unwrap();
|
($addr:expr, $ty:ty, $descriptor:expr $(,)?) => {{
|
||||||
memory.blend_buffer_descriptor_buffer_offset = resource_writer.next_offset();
|
|
||||||
let mut writer = resource_writer.add_set(layout);
|
|
||||||
writer.write(layout.offsets[0], &bb.sampled_image_descriptor);
|
|
||||||
if let Some(addr) = memory.blend_buffer_color_management_data_address {
|
|
||||||
let uniform_buffer = DescriptorAddressInfoEXT::default()
|
let uniform_buffer = DescriptorAddressInfoEXT::default()
|
||||||
.address(addr)
|
.address($addr)
|
||||||
.range(size_of::<ColorManagementData>() as _);
|
.range(size_of::<$ty>() as _);
|
||||||
let info = DescriptorGetInfoEXT::default()
|
let info = DescriptorGetInfoEXT::default()
|
||||||
.ty(DescriptorType::UNIFORM_BUFFER)
|
.ty(DescriptorType::UNIFORM_BUFFER)
|
||||||
.data(DescriptorDataEXT {
|
.data(DescriptorDataEXT {
|
||||||
p_uniform_buffer: &uniform_buffer,
|
p_uniform_buffer: &uniform_buffer,
|
||||||
});
|
});
|
||||||
unsafe {
|
unsafe {
|
||||||
db.get_descriptor(&info, uniform_buffer_descriptor_cache);
|
db.get_descriptor(&info, $descriptor);
|
||||||
}
|
}
|
||||||
writer.write(layout.offsets[1], uniform_buffer_descriptor_cache);
|
&*$descriptor
|
||||||
|
}};
|
||||||
|
($addr:expr, $ty:ty $(,)?) => {
|
||||||
|
get_ub_descriptor!($addr, $ty, uniform_buffer_descriptor_cache)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if let Some(bb) = bb {
|
||||||
|
let layout = self.out_descriptor_set_layout.as_ref().unwrap();
|
||||||
|
memory.blend_buffer_descriptor_buffer_offset = resource_writer.next_offset();
|
||||||
|
let mut writer = resource_writer.add_set(layout);
|
||||||
|
writer.write(layout.offsets[0], &bb.sampled_image_descriptor);
|
||||||
|
if let Some(addr) = memory.blend_buffer_color_management_data_address {
|
||||||
|
writer.write(
|
||||||
|
layout.offsets[1],
|
||||||
|
get_ub_descriptor!(addr, ColorManagementData),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let tex_descriptor_set_layout = &self.tex_descriptor_set_layouts[1];
|
let tex_descriptor_set_layout = &self.tex_descriptor_set_layouts[1];
|
||||||
|
|
@ -601,20 +612,9 @@ impl VulkanRenderer {
|
||||||
&tex.sampled_image_descriptor,
|
&tex.sampled_image_descriptor,
|
||||||
);
|
);
|
||||||
if let Some(addr) = c.color_management_data_address {
|
if let Some(addr) = c.color_management_data_address {
|
||||||
let uniform_buffer = DescriptorAddressInfoEXT::default()
|
|
||||||
.address(addr)
|
|
||||||
.range(size_of::<ColorManagementData>() as _);
|
|
||||||
let info = DescriptorGetInfoEXT::default()
|
|
||||||
.ty(DescriptorType::UNIFORM_BUFFER)
|
|
||||||
.data(DescriptorDataEXT {
|
|
||||||
p_uniform_buffer: &uniform_buffer,
|
|
||||||
});
|
|
||||||
unsafe {
|
|
||||||
db.get_descriptor(&info, uniform_buffer_descriptor_cache);
|
|
||||||
}
|
|
||||||
writer.write(
|
writer.write(
|
||||||
tex_descriptor_set_layout.offsets[1],
|
tex_descriptor_set_layout.offsets[1],
|
||||||
uniform_buffer_descriptor_cache,
|
get_ub_descriptor!(addr, ColorManagementData),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue