use ext_debug_report;
use libc;
use std::ffi::CString;
use vks;
gen_chain_struct! {
name: DebugMarkerObjectNameInfoChainExt [DebugMarkerObjectNameInfoChainExtWrapper],
query: DebugMarkerObjectNameInfoChainQueryExt [DebugMarkerObjectNameInfoChainQueryExtWrapper],
vks: vks::ext_debug_marker::VkDebugMarkerObjectNameInfoEXT,
input: true,
output: false,
}
#[derive(Debug, Clone, PartialEq)]
pub struct DebugMarkerObjectNameInfoExt {
pub object_type: ext_debug_report::DebugReportObjectTypeExt,
pub object: u64,
pub object_name: String,
pub chain: Option<DebugMarkerObjectNameInfoChainExt>,
}
#[derive(Debug)]
pub(crate) struct VkDebugMarkerObjectNameInfoEXTWrapper {
pub vks_struct: vks::ext_debug_marker::VkDebugMarkerObjectNameInfoEXT,
object_name: CString,
chain: Option<DebugMarkerObjectNameInfoChainExtWrapper>,
}
impl VkDebugMarkerObjectNameInfoEXTWrapper {
pub fn new(info: &DebugMarkerObjectNameInfoExt, with_chain: bool) -> Self {
let object_name = CString::new(info.object_name.as_str()).unwrap();
let (pnext, chain) = DebugMarkerObjectNameInfoChainExtWrapper::new_optional(&info.chain, with_chain);
VkDebugMarkerObjectNameInfoEXTWrapper {
vks_struct: vks::ext_debug_marker::VkDebugMarkerObjectNameInfoEXT {
sType: vks::core::VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
pNext: pnext,
objectType: info.object_type.into(),
object: info.object,
pObjectName: object_name.as_ptr(),
},
object_name: object_name,
chain: chain,
}
}
}
gen_chain_struct! {
name: DebugMarkerObjectTagInfoChainExt [DebugMarkerObjectTagInfoChainExtWrapper],
query: DebugMarkerObjectTagInfoChainQueryExt [DebugMarkerObjectTagInfoChainQueryExtWrapper],
vks: vks::ext_debug_marker::VkDebugMarkerObjectTagInfoEXT,
input: true,
output: false,
}
#[derive(Debug, Clone, PartialEq)]
pub struct DebugMarkerObjectTagInfoExt {
pub object_type: ext_debug_report::DebugReportObjectTypeExt,
pub object: u64,
pub tag_name: u64,
pub tag: Vec<u8>,
pub chain: Option<DebugMarkerObjectTagInfoChainExt>,
}
#[derive(Debug)]
pub(crate) struct VkDebugMarkerObjectTagInfoEXTWrapper {
pub vks_struct: vks::ext_debug_marker::VkDebugMarkerObjectTagInfoEXT,
tag: Vec<u8>,
chain: Option<DebugMarkerObjectTagInfoChainExtWrapper>,
}
impl VkDebugMarkerObjectTagInfoEXTWrapper {
pub fn new(info: &DebugMarkerObjectTagInfoExt, with_chain: bool) -> Self {
let tag = info.tag.clone();
let (pnext, chain) = DebugMarkerObjectTagInfoChainExtWrapper::new_optional(&info.chain, with_chain);
VkDebugMarkerObjectTagInfoEXTWrapper {
vks_struct: vks::ext_debug_marker::VkDebugMarkerObjectTagInfoEXT {
sType: vks::core::VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
pNext: pnext,
objectType: info.object_type.into(),
object: info.object,
tagName: info.tag_name,
tagSize: tag.len(),
pTag: tag.as_ptr() as *const libc::c_void,
},
tag: tag,
chain: chain,
}
}
}
gen_chain_struct! {
name: DebugMarkerMarkerInfoChainExt [DebugMarkerMarkerInfoChainExtWrapper],
query: DebugMarkerMarkerInfoChainQueryExt [DebugMarkerMarkerInfoChainQueryExtWrapper],
vks: vks::ext_debug_marker::VkDebugMarkerMarkerInfoEXT,
input: true,
output: false,
}
#[derive(Debug, Clone, PartialEq)]
pub struct DebugMarkerMarkerInfoExt {
pub marker_name: String,
pub color: [f32; 4],
pub chain: Option<DebugMarkerMarkerInfoChainExt>,
}
#[derive(Debug)]
pub(crate) struct VkDebugMarkerMarkerInfoEXTWrapper {
pub vks_struct: vks::ext_debug_marker::VkDebugMarkerMarkerInfoEXT,
marker_name: CString,
chain: Option<DebugMarkerMarkerInfoChainExtWrapper>,
}
impl VkDebugMarkerMarkerInfoEXTWrapper {
pub fn new(info: &DebugMarkerMarkerInfoExt, with_chain: bool) -> Self {
let marker_name = CString::new(info.marker_name.as_str()).unwrap();
let (pnext, chain) = DebugMarkerMarkerInfoChainExtWrapper::new_optional(&info.chain, with_chain);
VkDebugMarkerMarkerInfoEXTWrapper {
vks_struct: vks::ext_debug_marker::VkDebugMarkerMarkerInfoEXT {
sType: vks::core::VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
pNext: pnext,
pMarkerName: marker_name.as_ptr(),
color: info.color,
},
marker_name: marker_name,
chain: chain,
}
}
}