1use std::ops::Deref;
2
3pub struct DxilObject {
5 inner: spirv_to_dxil_sys::dxil_spirv_object,
6}
7
8impl Drop for DxilObject {
9 fn drop(&mut self) {
10 unsafe {
11 spirv_to_dxil_sys::spirv_to_dxil_free(&mut self.inner)
15 }
16 }
17}
18
19impl DxilObject {
20 pub(crate) fn new(raw: spirv_to_dxil_sys::dxil_spirv_object) -> Self {
21 Self { inner: raw }
22 }
23
24 pub fn requires_runtime_data(&self) -> bool {
26 self.inner.metadata.requires_runtime_data
27 }
28}
29
30impl Deref for DxilObject {
31 type Target = [u8];
32
33 fn deref(&self) -> &Self::Target {
34 unsafe {
35 std::slice::from_raw_parts(self.inner.binary.buffer.cast(), self.inner.binary.size)
36 }
37 }
38}