more context
This commit is contained in:
parent
80be0e29b9
commit
c995dd2016
1 changed files with 18 additions and 15 deletions
|
@ -87,7 +87,7 @@ struct DirectComposition {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DirectXDevices {
|
impl DirectXDevices {
|
||||||
pub(crate) fn new(disable_direct_composition: bool) -> Result<Self> {
|
pub(crate) fn new(disable_direct_composition: bool) -> Result<ManuallyDrop<Self>> {
|
||||||
let dxgi_factory = get_dxgi_factory().context("Creating DXGI factory")?;
|
let dxgi_factory = get_dxgi_factory().context("Creating DXGI factory")?;
|
||||||
let adapter = get_adapter(&dxgi_factory).context("Getting DXGI adapter")?;
|
let adapter = get_adapter(&dxgi_factory).context("Getting DXGI adapter")?;
|
||||||
let (device, device_context) = {
|
let (device, device_context) = {
|
||||||
|
@ -121,13 +121,13 @@ impl DirectXDevices {
|
||||||
Some(device.cast().context("Creating DXGI device")?)
|
Some(device.cast().context("Creating DXGI device")?)
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(Self {
|
Ok(ManuallyDrop::new(Self {
|
||||||
adapter,
|
adapter,
|
||||||
dxgi_factory,
|
dxgi_factory,
|
||||||
dxgi_device,
|
dxgi_device,
|
||||||
device,
|
device,
|
||||||
device_context,
|
device_context,
|
||||||
})
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,20 +137,25 @@ impl DirectXRenderer {
|
||||||
log::info!("Direct Composition is disabled.");
|
log::info!("Direct Composition is disabled.");
|
||||||
}
|
}
|
||||||
|
|
||||||
let devices = ManuallyDrop::new(
|
let devices =
|
||||||
DirectXDevices::new(disable_direct_composition).context("Creating DirectX devices")?,
|
DirectXDevices::new(disable_direct_composition).context("Creating DirectX devices")?;
|
||||||
);
|
|
||||||
let atlas = Arc::new(DirectXAtlas::new(&devices.device, &devices.device_context));
|
let atlas = Arc::new(DirectXAtlas::new(&devices.device, &devices.device_context));
|
||||||
|
|
||||||
let resources = DirectXResources::new(&devices, 1, 1, hwnd, disable_direct_composition)?;
|
let resources = DirectXResources::new(&devices, 1, 1, hwnd, disable_direct_composition)
|
||||||
let globals = DirectXGlobalElements::new(&devices.device)?;
|
.context("Creating DirectX resources")?;
|
||||||
let pipelines = DirectXRenderPipelines::new(&devices.device)?;
|
let globals = DirectXGlobalElements::new(&devices.device)
|
||||||
|
.context("Creating DirectX global elements")?;
|
||||||
|
let pipelines = DirectXRenderPipelines::new(&devices.device)
|
||||||
|
.context("Creating DirectX render pipelines")?;
|
||||||
|
|
||||||
let direct_composition = if disable_direct_composition {
|
let direct_composition = if disable_direct_composition {
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
let composition = DirectComposition::new(devices.dxgi_device.as_ref().unwrap(), hwnd)?;
|
let composition = DirectComposition::new(devices.dxgi_device.as_ref().unwrap(), hwnd)
|
||||||
composition.set_swap_chain(&resources.swap_chain)?;
|
.context("Creating DirectComposition")?;
|
||||||
|
composition
|
||||||
|
.set_swap_chain(&resources.swap_chain)
|
||||||
|
.context("Setting swap chain for DirectComposition")?;
|
||||||
Some(composition)
|
Some(composition)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -240,10 +245,8 @@ impl DirectXRenderer {
|
||||||
ManuallyDrop::drop(&mut self.devices);
|
ManuallyDrop::drop(&mut self.devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
let devices = ManuallyDrop::new(
|
let devices = DirectXDevices::new(disable_direct_composition)
|
||||||
DirectXDevices::new(disable_direct_composition)
|
.context("Recreating DirectX devices")?;
|
||||||
.context("Recreating DirectX devices")?,
|
|
||||||
);
|
|
||||||
let resources = DirectXResources::new(
|
let resources = DirectXResources::new(
|
||||||
&devices,
|
&devices,
|
||||||
self.resources.width,
|
self.resources.width,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue