#[cfg(feature = "submit_d3d11")]
use windows::Win32::Graphics::Direct3D11::ID3D11Texture2D;
#[cfg(feature = "submit_d3d12")]
use windows::Win32::Graphics::Direct3D12::{ID3D12CommandQueue, ID3D12Resource};
use super::{sys, VkDevice_T, VkInstance_T, VkPhysicalDevice_T, VkQueue_T};
#[derive(Debug, Copy, Clone)]
pub struct Texture {
pub handle: Handle,
pub color_space: ColorSpace,
}
#[repr(C)]
pub struct Bounds {
pub min: (f32, f32),
pub max: (f32, f32),
}
pub mod vulkan {
use super::*;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Texture {
pub image: u64,
pub device: *mut VkDevice_T,
pub physical_device: *mut VkPhysicalDevice_T,
pub instance: *mut VkInstance_T,
pub queue: *mut VkQueue_T,
pub queue_family_index: u32,
pub width: u32,
pub height: u32,
pub format: u32,
pub sample_count: u32,
}
unsafe impl Send for Texture {}
unsafe impl Sync for Texture {}
}
#[cfg(feature = "submit_d3d12")]
pub mod d3d12 {
use super::*;
#[derive(Debug, Copy, Clone)]
pub struct Texture {
pub resource: *mut ID3D12Resource,
pub command_queue: *mut ID3D12CommandQueue,
pub node_mask: u32,
}
}
#[derive(Debug, Copy, Clone)]
pub enum Handle {
Vulkan(vulkan::Texture),
OpenGLTexture(usize),
OpenGLRenderBuffer(usize),
#[cfg(feature = "submit_d3d11")]
DirectX(*mut ID3D11Texture2D),
#[cfg(feature = "submit_d3d12")]
DirectX12(d3d12::Texture),
}
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum ColorSpace {
Auto = sys::EColorSpace_ColorSpace_Auto as isize,
Gamma = sys::EColorSpace_ColorSpace_Gamma as isize,
Linear = sys::EColorSpace_ColorSpace_Linear as isize,
}