Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/gpu-alloc/src/   (Firefox Browser Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  error.rs

  Sprache: Rust
 

use {
    core::fmt::{self, Display},
    gpu_alloc_types::{DeviceMapError, OutOfMemory},
};

/// Enumeration of possible errors that may occur during memory allocation.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum AllocationError {
    /// Backend reported that device memory has been exhausted.\
    /// Deallocating device memory from the same heap may increase chance
    /// that another allocation would succeed.
    OutOfDeviceMemory,

    /// Backend reported that host memory has been exhausted.\
    /// Deallocating host memory may increase chance that another allocation would succeed.
    OutOfHostMemory,

    /// Allocation request cannot be fulfilled as no available memory types allowed
    /// by `Request.memory_types` mask is compatible with `request.usage`.
    NoCompatibleMemoryTypes,

    /// Reached limit on allocated memory objects count.\
    /// Deallocating device memory may increase chance that another allocation would succeed.
    /// Especially dedicated memory blocks.
    ///
    /// If this error is returned when memory heaps are far from exhausted
    /// `Config` should be tweaked to allocate larger memory objects.
    TooManyObjects,
}

impl From<OutOfMemory> for AllocationError {
    fn from(err: OutOfMemory) -> Self {
        match err {
            OutOfMemory::OutOfDeviceMemory => AllocationError::OutOfDeviceMemory,
            OutOfMemory::OutOfHostMemory => AllocationError::OutOfHostMemory,
        }
    }
}

impl Display for AllocationError {
    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            AllocationError::OutOfDeviceMemory => fmt.write_str("Device memory exhausted"),
            AllocationError::OutOfHostMemory => fmt.write_str("Host memory exhausted"),
            AllocationError::NoCompatibleMemoryTypes => fmt.write_str(
                "No compatible memory types from requested types support requested usage",
            ),
            AllocationError::TooManyObjects => {
                fmt.write_str("Reached limit on allocated memory objects count")
            }
        }
    }
}

#[cfg(feature = "std")]
impl std::error::Error for AllocationError {}

/// Enumeration of possible errors that may occur during memory mapping.
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum MapError {
    /// Backend reported that device memory has been exhausted.\
    /// Deallocating device memory from the same heap may increase chance
    /// that another mapping would succeed.
    OutOfDeviceMemory,

    /// Backend reported that host memory has been exhausted.\
    /// Deallocating host memory may increase chance that another mapping would succeed.
    OutOfHostMemory,

    /// Attempt to map memory block with non-host-visible memory type.\
    /// Ensure to include `UsageFlags::HOST_ACCESS` into allocation request
    /// when memory mapping is intended.
    NonHostVisible,

    /// Map failed for implementation specific reason.\
    /// For Vulkan backend this includes failed attempt
    /// to allocate large enough virtual address space.
    MapFailed,

    /// Mapping failed due to block being already mapped.
    AlreadyMapped,
}

impl From<DeviceMapError> for MapError {
    fn from(err: DeviceMapError) -> Self {
        match err {
            DeviceMapError::OutOfDeviceMemory => MapError::OutOfDeviceMemory,
            DeviceMapError::OutOfHostMemory => MapError::OutOfHostMemory,
            DeviceMapError::MapFailed => MapError::MapFailed,
        }
    }
}

impl From<OutOfMemory> for MapError {
    fn from(err: OutOfMemory) -> Self {
        match err {
            OutOfMemory::OutOfDeviceMemory => MapError::OutOfDeviceMemory,
            OutOfMemory::OutOfHostMemory => MapError::OutOfHostMemory,
        }
    }
}

impl Display for MapError {
    fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            MapError::OutOfDeviceMemory => fmt.write_str("Device memory exhausted"),
            MapError::OutOfHostMemory => fmt.write_str("Host memory exhausted"),
            MapError::MapFailed => fmt.write_str("Failed to map memory object"),
            MapError::NonHostVisible => fmt.write_str("Impossible to map non-host-visible memory"),
            MapError::AlreadyMapped => fmt.write_str("Block is already mapped"),
        }
    }
}

#[cfg(feature = "std")]
impl std::error::Error for MapError {}

Messung V0.5 in Prozent
C=75 H=93 G=84

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet am  2026-06-18) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.