Don't panic on pipeline creation errors

This commit is contained in:
Dzmitry Malyshau 2021-03-09 22:24:57 -05:00
parent 37dbe5e32e
commit 4f7cd45ea7

View File

@ -1932,15 +1932,16 @@ impl<B: GfxBackend> Device<B> {
parent, parent,
}; };
let raw = match unsafe { self.raw.create_compute_pipeline(&pipeline_desc, None) } { let raw =
Ok(pipeline) => pipeline, unsafe { self.raw.create_compute_pipeline(&pipeline_desc, None) }.map_err(|err| {
Err(hal::pso::CreationError::OutOfMemory(_)) => { match err {
return Err(pipeline::CreateComputePipelineError::Device( hal::pso::CreationError::OutOfMemory(_) => DeviceError::OutOfMemory,
DeviceError::OutOfMemory, _ => {
)) tracing::error!("failed to create compute pipeline: {}", err);
DeviceError::OutOfMemory
} }
other => panic!("Compute pipeline creation error: {:?}", other), }
}; })?;
let pipeline = pipeline::ComputePipeline { let pipeline = pipeline::ComputePipeline {
raw, raw,
@ -2366,14 +2367,16 @@ impl<B: GfxBackend> Device<B> {
parent, parent,
}; };
// TODO: cache // TODO: cache
let raw = unsafe { let raw =
self.raw unsafe { self.raw.create_graphics_pipeline(&pipeline_desc, None) }.map_err(|err| {
.create_graphics_pipeline(&pipeline_desc, None) match err {
.map_err(|err| match err {
hal::pso::CreationError::OutOfMemory(_) => DeviceError::OutOfMemory, hal::pso::CreationError::OutOfMemory(_) => DeviceError::OutOfMemory,
_ => panic!("failed to create graphics pipeline: {}", err), _ => {
})? tracing::error!("failed to create graphics pipeline: {}", err);
}; DeviceError::OutOfMemory
}
}
})?;
let pass_context = RenderPassContext { let pass_context = RenderPassContext {
attachments: AttachmentData { attachments: AttachmentData {