d3d11: export runtime in root lib
This commit is contained in:
parent
cbfe76928e
commit
a64d0b0a96
|
@ -8,7 +8,8 @@ edition = "2021"
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
opengl = ["gl"]
|
opengl = ["gl"]
|
||||||
d3d11 = ["windows"]
|
d3d11 = ["windows", "dxgi"]
|
||||||
|
dxgi = ["windows"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
gl = { version = "0.14.0", optional = true }
|
gl = { version = "0.14.0", optional = true }
|
||||||
|
|
|
@ -1,84 +1,5 @@
|
||||||
use crate::{FilterMode, ImageFormat, WrapMode};
|
use crate::{FilterMode, WrapMode};
|
||||||
use windows::Win32::Graphics::Direct3D11;
|
use windows::Win32::Graphics::Direct3D11;
|
||||||
use windows::Win32::Graphics::Dxgi::Common as dxgi;
|
|
||||||
use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT;
|
|
||||||
|
|
||||||
impl From<ImageFormat> for dxgi::DXGI_FORMAT {
|
|
||||||
fn from(format: ImageFormat) -> Self {
|
|
||||||
match format {
|
|
||||||
ImageFormat::Unknown => dxgi::DXGI_FORMAT_UNKNOWN,
|
|
||||||
ImageFormat::R8Unorm => dxgi::DXGI_FORMAT_R8_UNORM,
|
|
||||||
ImageFormat::R8Uint => dxgi::DXGI_FORMAT_R8_UINT,
|
|
||||||
ImageFormat::R8Sint => dxgi::DXGI_FORMAT_R8_SINT,
|
|
||||||
ImageFormat::R8G8Unorm => dxgi::DXGI_FORMAT_R8G8_UNORM,
|
|
||||||
ImageFormat::R8G8Uint => dxgi::DXGI_FORMAT_R8G8_UINT,
|
|
||||||
ImageFormat::R8G8Sint => dxgi::DXGI_FORMAT_R8G8_SINT,
|
|
||||||
ImageFormat::R8G8B8A8Unorm => dxgi::DXGI_FORMAT_R8G8B8A8_UNORM,
|
|
||||||
ImageFormat::R8G8B8A8Uint => dxgi::DXGI_FORMAT_R8G8B8A8_UINT,
|
|
||||||
ImageFormat::R8G8B8A8Sint => dxgi::DXGI_FORMAT_R8G8B8A8_SINT,
|
|
||||||
ImageFormat::R8G8B8A8Srgb => dxgi::DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
|
|
||||||
ImageFormat::A2B10G10R10UnormPack32 => dxgi::DXGI_FORMAT_R10G10B10A2_UNORM,
|
|
||||||
ImageFormat::A2B10G10R10UintPack32 => dxgi::DXGI_FORMAT_R10G10B10A2_UINT,
|
|
||||||
ImageFormat::R16Uint => dxgi::DXGI_FORMAT_R16_UINT,
|
|
||||||
ImageFormat::R16Sint => dxgi::DXGI_FORMAT_R16_SINT,
|
|
||||||
ImageFormat::R16Sfloat => dxgi::DXGI_FORMAT_R16_FLOAT,
|
|
||||||
ImageFormat::R16G16Uint => dxgi::DXGI_FORMAT_R16G16_UINT,
|
|
||||||
ImageFormat::R16G16Sint => dxgi::DXGI_FORMAT_R16G16_SINT,
|
|
||||||
ImageFormat::R16G16Sfloat => dxgi::DXGI_FORMAT_R16G16_FLOAT,
|
|
||||||
ImageFormat::R16G16B16A16Uint => dxgi::DXGI_FORMAT_R16G16B16A16_UINT,
|
|
||||||
ImageFormat::R16G16B16A16Sint => dxgi::DXGI_FORMAT_R16G16B16A16_SINT,
|
|
||||||
ImageFormat::R16G16B16A16Sfloat => dxgi::DXGI_FORMAT_R16G16B16A16_FLOAT,
|
|
||||||
ImageFormat::R32Uint => dxgi::DXGI_FORMAT_R32_UINT,
|
|
||||||
ImageFormat::R32Sint => dxgi::DXGI_FORMAT_R32_SINT,
|
|
||||||
ImageFormat::R32Sfloat => dxgi::DXGI_FORMAT_R32_FLOAT,
|
|
||||||
ImageFormat::R32G32Uint => dxgi::DXGI_FORMAT_R32G32_UINT,
|
|
||||||
ImageFormat::R32G32Sint => dxgi::DXGI_FORMAT_R32G32_SINT,
|
|
||||||
ImageFormat::R32G32Sfloat => dxgi::DXGI_FORMAT_R32G32_FLOAT,
|
|
||||||
ImageFormat::R32G32B32A32Uint => dxgi::DXGI_FORMAT_R32G32B32A32_UINT,
|
|
||||||
ImageFormat::R32G32B32A32Sint => dxgi::DXGI_FORMAT_R32G32B32A32_SINT,
|
|
||||||
ImageFormat::R32G32B32A32Sfloat => dxgi::DXGI_FORMAT_R32G32B32A32_FLOAT,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<DXGI_FORMAT> for ImageFormat {
|
|
||||||
fn from(format: DXGI_FORMAT) -> Self {
|
|
||||||
match format {
|
|
||||||
dxgi::DXGI_FORMAT_UNKNOWN => ImageFormat::Unknown,
|
|
||||||
dxgi::DXGI_FORMAT_R8_UNORM => ImageFormat::R8Unorm,
|
|
||||||
dxgi::DXGI_FORMAT_R8_UINT => ImageFormat::R8Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R8_SINT => ImageFormat::R8Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8_UNORM => ImageFormat::R8G8Unorm,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8_UINT => ImageFormat::R8G8Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8_SINT => ImageFormat::R8G8Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8B8A8_UNORM => ImageFormat::R8G8B8A8Unorm,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8B8A8_UINT => ImageFormat::R8G8B8A8Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8B8A8_SINT => ImageFormat::R8G8B8A8Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R8G8B8A8_UNORM_SRGB => ImageFormat::R8G8B8A8Srgb,
|
|
||||||
dxgi::DXGI_FORMAT_R10G10B10A2_UNORM => ImageFormat::A2B10G10R10UnormPack32,
|
|
||||||
dxgi::DXGI_FORMAT_R10G10B10A2_UINT => ImageFormat::A2B10G10R10UintPack32,
|
|
||||||
dxgi::DXGI_FORMAT_R16_UINT => ImageFormat::R16Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R16_SINT => ImageFormat::R16Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R16_FLOAT => ImageFormat::R16Sfloat,
|
|
||||||
dxgi::DXGI_FORMAT_R16G16_UINT => ImageFormat::R16G16Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R16G16_SINT => ImageFormat::R16G16Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R16G16_FLOAT => ImageFormat::R16G16Sfloat,
|
|
||||||
dxgi::DXGI_FORMAT_R16G16B16A16_UINT => ImageFormat::R16G16B16A16Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R16G16B16A16_SINT => ImageFormat::R16G16B16A16Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R16G16B16A16_FLOAT => ImageFormat::R16G16B16A16Sfloat,
|
|
||||||
dxgi::DXGI_FORMAT_R32_UINT => ImageFormat::R32Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R32_SINT => ImageFormat::R32Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R32_FLOAT => ImageFormat::R32Sfloat,
|
|
||||||
dxgi::DXGI_FORMAT_R32G32_UINT => ImageFormat::R32G32Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R32G32_SINT => ImageFormat::R32G32Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R32G32_FLOAT => ImageFormat::R32G32Sfloat,
|
|
||||||
dxgi::DXGI_FORMAT_R32G32B32A32_UINT => ImageFormat::R32G32B32A32Uint,
|
|
||||||
dxgi::DXGI_FORMAT_R32G32B32A32_SINT => ImageFormat::R32G32B32A32Sint,
|
|
||||||
dxgi::DXGI_FORMAT_R32G32B32A32_FLOAT => ImageFormat::R32G32B32A32Sfloat,
|
|
||||||
_ => ImageFormat::Unknown,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl From<WrapMode> for Direct3D11::D3D11_TEXTURE_ADDRESS_MODE {
|
impl From<WrapMode> for Direct3D11::D3D11_TEXTURE_ADDRESS_MODE {
|
||||||
fn from(value: WrapMode) -> Self {
|
fn from(value: WrapMode) -> Self {
|
||||||
|
|
80
librashader-common/src/dxgi.rs
Normal file
80
librashader-common/src/dxgi.rs
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
use windows::Win32::Graphics::Dxgi::Common as dxgi;
|
||||||
|
use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT;
|
||||||
|
use crate::ImageFormat;
|
||||||
|
|
||||||
|
impl From<ImageFormat> for dxgi::DXGI_FORMAT {
|
||||||
|
fn from(format: ImageFormat) -> Self {
|
||||||
|
match format {
|
||||||
|
ImageFormat::Unknown => dxgi::DXGI_FORMAT_UNKNOWN,
|
||||||
|
ImageFormat::R8Unorm => dxgi::DXGI_FORMAT_R8_UNORM,
|
||||||
|
ImageFormat::R8Uint => dxgi::DXGI_FORMAT_R8_UINT,
|
||||||
|
ImageFormat::R8Sint => dxgi::DXGI_FORMAT_R8_SINT,
|
||||||
|
ImageFormat::R8G8Unorm => dxgi::DXGI_FORMAT_R8G8_UNORM,
|
||||||
|
ImageFormat::R8G8Uint => dxgi::DXGI_FORMAT_R8G8_UINT,
|
||||||
|
ImageFormat::R8G8Sint => dxgi::DXGI_FORMAT_R8G8_SINT,
|
||||||
|
ImageFormat::R8G8B8A8Unorm => dxgi::DXGI_FORMAT_R8G8B8A8_UNORM,
|
||||||
|
ImageFormat::R8G8B8A8Uint => dxgi::DXGI_FORMAT_R8G8B8A8_UINT,
|
||||||
|
ImageFormat::R8G8B8A8Sint => dxgi::DXGI_FORMAT_R8G8B8A8_SINT,
|
||||||
|
ImageFormat::R8G8B8A8Srgb => dxgi::DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,
|
||||||
|
ImageFormat::A2B10G10R10UnormPack32 => dxgi::DXGI_FORMAT_R10G10B10A2_UNORM,
|
||||||
|
ImageFormat::A2B10G10R10UintPack32 => dxgi::DXGI_FORMAT_R10G10B10A2_UINT,
|
||||||
|
ImageFormat::R16Uint => dxgi::DXGI_FORMAT_R16_UINT,
|
||||||
|
ImageFormat::R16Sint => dxgi::DXGI_FORMAT_R16_SINT,
|
||||||
|
ImageFormat::R16Sfloat => dxgi::DXGI_FORMAT_R16_FLOAT,
|
||||||
|
ImageFormat::R16G16Uint => dxgi::DXGI_FORMAT_R16G16_UINT,
|
||||||
|
ImageFormat::R16G16Sint => dxgi::DXGI_FORMAT_R16G16_SINT,
|
||||||
|
ImageFormat::R16G16Sfloat => dxgi::DXGI_FORMAT_R16G16_FLOAT,
|
||||||
|
ImageFormat::R16G16B16A16Uint => dxgi::DXGI_FORMAT_R16G16B16A16_UINT,
|
||||||
|
ImageFormat::R16G16B16A16Sint => dxgi::DXGI_FORMAT_R16G16B16A16_SINT,
|
||||||
|
ImageFormat::R16G16B16A16Sfloat => dxgi::DXGI_FORMAT_R16G16B16A16_FLOAT,
|
||||||
|
ImageFormat::R32Uint => dxgi::DXGI_FORMAT_R32_UINT,
|
||||||
|
ImageFormat::R32Sint => dxgi::DXGI_FORMAT_R32_SINT,
|
||||||
|
ImageFormat::R32Sfloat => dxgi::DXGI_FORMAT_R32_FLOAT,
|
||||||
|
ImageFormat::R32G32Uint => dxgi::DXGI_FORMAT_R32G32_UINT,
|
||||||
|
ImageFormat::R32G32Sint => dxgi::DXGI_FORMAT_R32G32_SINT,
|
||||||
|
ImageFormat::R32G32Sfloat => dxgi::DXGI_FORMAT_R32G32_FLOAT,
|
||||||
|
ImageFormat::R32G32B32A32Uint => dxgi::DXGI_FORMAT_R32G32B32A32_UINT,
|
||||||
|
ImageFormat::R32G32B32A32Sint => dxgi::DXGI_FORMAT_R32G32B32A32_SINT,
|
||||||
|
ImageFormat::R32G32B32A32Sfloat => dxgi::DXGI_FORMAT_R32G32B32A32_FLOAT,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<DXGI_FORMAT> for ImageFormat {
|
||||||
|
fn from(format: DXGI_FORMAT) -> Self {
|
||||||
|
match format {
|
||||||
|
dxgi::DXGI_FORMAT_UNKNOWN => ImageFormat::Unknown,
|
||||||
|
dxgi::DXGI_FORMAT_R8_UNORM => ImageFormat::R8Unorm,
|
||||||
|
dxgi::DXGI_FORMAT_R8_UINT => ImageFormat::R8Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R8_SINT => ImageFormat::R8Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8_UNORM => ImageFormat::R8G8Unorm,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8_UINT => ImageFormat::R8G8Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8_SINT => ImageFormat::R8G8Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8B8A8_UNORM => ImageFormat::R8G8B8A8Unorm,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8B8A8_UINT => ImageFormat::R8G8B8A8Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8B8A8_SINT => ImageFormat::R8G8B8A8Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R8G8B8A8_UNORM_SRGB => ImageFormat::R8G8B8A8Srgb,
|
||||||
|
dxgi::DXGI_FORMAT_R10G10B10A2_UNORM => ImageFormat::A2B10G10R10UnormPack32,
|
||||||
|
dxgi::DXGI_FORMAT_R10G10B10A2_UINT => ImageFormat::A2B10G10R10UintPack32,
|
||||||
|
dxgi::DXGI_FORMAT_R16_UINT => ImageFormat::R16Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R16_SINT => ImageFormat::R16Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R16_FLOAT => ImageFormat::R16Sfloat,
|
||||||
|
dxgi::DXGI_FORMAT_R16G16_UINT => ImageFormat::R16G16Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R16G16_SINT => ImageFormat::R16G16Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R16G16_FLOAT => ImageFormat::R16G16Sfloat,
|
||||||
|
dxgi::DXGI_FORMAT_R16G16B16A16_UINT => ImageFormat::R16G16B16A16Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R16G16B16A16_SINT => ImageFormat::R16G16B16A16Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R16G16B16A16_FLOAT => ImageFormat::R16G16B16A16Sfloat,
|
||||||
|
dxgi::DXGI_FORMAT_R32_UINT => ImageFormat::R32Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R32_SINT => ImageFormat::R32Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R32_FLOAT => ImageFormat::R32Sfloat,
|
||||||
|
dxgi::DXGI_FORMAT_R32G32_UINT => ImageFormat::R32G32Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R32G32_SINT => ImageFormat::R32G32Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R32G32_FLOAT => ImageFormat::R32G32Sfloat,
|
||||||
|
dxgi::DXGI_FORMAT_R32G32B32A32_UINT => ImageFormat::R32G32B32A32Uint,
|
||||||
|
dxgi::DXGI_FORMAT_R32G32B32A32_SINT => ImageFormat::R32G32B32A32Sint,
|
||||||
|
dxgi::DXGI_FORMAT_R32G32B32A32_FLOAT => ImageFormat::R32G32B32A32Sfloat,
|
||||||
|
_ => ImageFormat::Unknown,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,9 @@ pub mod gl;
|
||||||
pub mod image;
|
pub mod image;
|
||||||
pub mod runtime;
|
pub mod runtime;
|
||||||
|
|
||||||
|
#[cfg(feature = "dxgi")]
|
||||||
|
pub mod dxgi;
|
||||||
|
|
||||||
use num_traits::AsPrimitive;
|
use num_traits::AsPrimitive;
|
||||||
use std::convert::Infallible;
|
use std::convert::Infallible;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
|
@ -16,6 +16,10 @@ mod texture;
|
||||||
mod util;
|
mod util;
|
||||||
mod viewport;
|
mod viewport;
|
||||||
|
|
||||||
|
pub use filter_chain::FilterChain;
|
||||||
|
pub use viewport::Viewport;
|
||||||
|
pub use texture::DxImageView;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
|
|
|
@ -15,3 +15,4 @@ librashader-runtime-gl = { path = "../librashader-runtime-gl" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
gl = [ "librashader-common/opengl" ]
|
gl = [ "librashader-common/opengl" ]
|
||||||
|
d3d11 = [ "librashader-common/d3d11" ]
|
Loading…
Reference in a new issue