Minor fix and doc improvement to debug callbacks

This commit is contained in:
Pierre Krieger 2016-12-10 12:59:46 +01:00
parent 27e19de9c4
commit 76622f6376

View File

@ -7,11 +7,12 @@
// notice may not be copied, modified, or distributed except // notice may not be copied, modified, or distributed except
// according to those terms. // according to those terms.
//! Debug callback called by validation layers. //! Debug callback called by intermediate layers or by the driver.
//! //!
//! When working on an application, it is recommended to register a debug callback. This callback //! When working on an application, it is recommended to register a debug callback. For example if
//! will be called by validation layers whenever necessary to warn you about invalid API usages //! you enable the validation layers provided by the official Vulkan SDK, they will warn you about
//! or performance problems. //! invalid API usages or performance problems by calling this callback. The callback can also
//! be called by the driver or by whatever intermediate layer is activated.
//! //!
//! Note that the vulkano library can also emit messages to warn you about performance issues. //! Note that the vulkano library can also emit messages to warn you about performance issues.
//! TODO: ^ that's not the case yet, need to choose whether we keep this idea //! TODO: ^ that's not the case yet, need to choose whether we keep this idea
@ -29,6 +30,8 @@
//! }).ok(); //! }).ok();
//! ``` //! ```
//! //!
//! The type of `msg` in the callback is [`Message`](struct.Message.html).
//!
//! Note that you must keep the `_callback` object alive for as long as you want your callback to //! Note that you must keep the `_callback` object alive for as long as you want your callback to
//! be callable. If you don't store the return value of `DebugCallback`'s constructor in a //! be callable. If you don't store the return value of `DebugCallback`'s constructor in a
//! variable, it will be immediately destroyed and your callback will not work. //! variable, it will be immediately destroyed and your callback will not work.
@ -68,7 +71,7 @@ impl DebugCallback {
/// Panics generated by calling `user_callback` are ignored. /// Panics generated by calling `user_callback` are ignored.
pub fn new<F>(instance: &Arc<Instance>, messages: MessageTypes, user_callback: F) pub fn new<F>(instance: &Arc<Instance>, messages: MessageTypes, user_callback: F)
-> Result<DebugCallback, DebugCallbackCreationError> -> Result<DebugCallback, DebugCallbackCreationError>
where F: Fn(&Message) + 'static + panic::RefUnwindSafe where F: Fn(&Message) + 'static + Send + panic::RefUnwindSafe
{ {
if !instance.loaded_extensions().ext_debug_report { if !instance.loaded_extensions().ext_debug_report {
return Err(DebugCallbackCreationError::MissingExtension); return Err(DebugCallbackCreationError::MissingExtension);
@ -156,7 +159,7 @@ impl DebugCallback {
#[inline] #[inline]
pub fn errors_and_warnings<F>(instance: &Arc<Instance>, user_callback: F) pub fn errors_and_warnings<F>(instance: &Arc<Instance>, user_callback: F)
-> Result<DebugCallback, DebugCallbackCreationError> -> Result<DebugCallback, DebugCallbackCreationError>
where F: Fn(&Message) + 'static + panic::RefUnwindSafe where F: Fn(&Message) + Send + 'static + panic::RefUnwindSafe
{ {
DebugCallback::new(instance, MessageTypes::errors_and_warnings(), user_callback) DebugCallback::new(instance, MessageTypes::errors_and_warnings(), user_callback)
} }