Si bien la API central de Vulkan no está diseñada para detectar casos de uso incorrecto, algunos casos aún requieren códigos de retorno. Los comandos en Vulkan devuelven su estado a través de códigos de retorno, que se dividen en una de dos categorías:
-
Cuando un comando necesita transmitir información de éxito o estado. Todos los códigos de finalización exitosos no son negativos.
-
Cuando un comando necesita comunicar fallas que solo pueden detectarse en tiempo de ejecución. Todos los códigos de error de tiempo de ejecución son negativos.
Todos los códigos de retorno en Vulkan se informan mediante el valor de retorno de VkResult. Los códigos posibles son:
// Provided by VK_VERSION_1_0
typedef enum VkResult {
VK_SUCCESS = 0,
VK_NOT_READY = 1,
VK_TIMEOUT = 2,
VK_EVENT_SET = 3,
VK_EVENT_RESET = 4,
VK_INCOMPLETE = 5,
VK_ERROR_OUT_OF_HOST_MEMORY = -1,
VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
VK_ERROR_INITIALIZATION_FAILED = -3,
VK_ERROR_DEVICE_LOST = -4,
VK_ERROR_MEMORY_MAP_FAILED = -5,
VK_ERROR_LAYER_NOT_PRESENT = -6,
VK_ERROR_EXTENSION_NOT_PRESENT = -7,
VK_ERROR_FEATURE_NOT_PRESENT = -8,
VK_ERROR_INCOMPATIBLE_DRIVER = -9,
VK_ERROR_TOO_MANY_OBJECTS = -10,
VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
VK_ERROR_FRAGMENTED_POOL = -12,
VK_ERROR_UNKNOWN = -13,
// Provided by VK_VERSION_1_1
VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
// Provided by VK_VERSION_1_1
VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
// Provided by VK_VERSION_1_2
VK_ERROR_FRAGMENTATION = -1000161000,
// Provided by VK_VERSION_1_2
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
// Provided by VK_VERSION_1_3
VK_PIPELINE_COMPILE_REQUIRED = 1000297000,
// Provided by VK_KHR_surface
VK_ERROR_SURFACE_LOST_KHR = -1000000000,
// Provided by VK_KHR_surface
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
// Provided by VK_KHR_swapchain
VK_SUBOPTIMAL_KHR = 1000001003,
// Provided by VK_KHR_swapchain
VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
// Provided by VK_KHR_display_swapchain
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
// Provided by VK_EXT_debug_report
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
// Provided by VK_NV_glsl_shader
VK_ERROR_INVALID_SHADER_NV = -1000012000,
// Provided by VK_KHR_video_queue
VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000,
// Provided by VK_KHR_video_queue
VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001,
// Provided by VK_KHR_video_queue
VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002,
// Provided by VK_KHR_video_queue
VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003,
// Provided by VK_KHR_video_queue
VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004,
// Provided by VK_KHR_video_queue
VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005,
// Provided by VK_EXT_image_drm_format_modifier
VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
// Provided by VK_KHR_global_priority
VK_ERROR_NOT_PERMITTED_KHR = -1000174001,
// Provided by VK_EXT_full_screen_exclusive
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
// Provided by VK_KHR_deferred_host_operations
VK_THREAD_IDLE_KHR = 1000268000,
// Provided by VK_KHR_deferred_host_operations
VK_THREAD_DONE_KHR = 1000268001,
// Provided by VK_KHR_deferred_host_operations
VK_OPERATION_DEFERRED_KHR = 1000268002,
// Provided by VK_KHR_deferred_host_operations
VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,
#ifdef VK_ENABLE_BETA_EXTENSIONS
// Provided by VK_KHR_video_encode_queue
VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000,
#endif
// Provided by VK_EXT_image_compression_control
VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000,
// Provided by VK_EXT_shader_object
VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000,
// Provided by VK_KHR_maintenance1
VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
// Provided by VK_KHR_external_memory
VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
// Provided by VK_EXT_descriptor_indexing
VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
// Provided by VK_EXT_global_priority
VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED_KHR,
// Provided by VK_EXT_buffer_device_address
VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
// Provided by VK_KHR_buffer_device_address
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
// Provided by VK_EXT_pipeline_creation_cache_control
VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED,
// Provided by VK_EXT_pipeline_creation_cache_control
VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED,
} VkResult;
describir
-
VK_SUCCESS
comando completado con éxito -
VK_NOT_READY
Valla o consulta aún no completa -
VK_TIMEOUT
La operación de espera no ha sido dentro del tiempo especificado -
VK_EVENT_SET
señalar un evento -
VK_EVENT_RESET
evento no señalado -
VK_INCOMPLETE
La matriz devuelta es demasiado pequeña para el resultado. -
VK_SUBOPTIMAL_KHR
Ya no es una propiedad que la cadena de intercambio coincida exactamente con la superficie, pero aún se puede usar para renderizar la superficie con éxito. -
VK_THREAD_IDLE_KHR
La operación diferida no está completa, pero este subproceso actualmente no tiene trabajo que hacer en el momento de esta llamada. -
VK_THREAD_DONE_KHR
La operación diferida no se completó, pero no quedó trabajo para distribuir a otros subprocesos. -
VK_OPERATION_DEFERRED_KHR
Se solicitó el aplazamiento de la operación, y se aplazó al menos parte del trabajo. -
VK_OPERATION_NOT_DEFERRED_KHR
Se solicitó una operación aplazada y no se aplazó ninguna operación. -
VK_PIPELINE_COMPILE_REQUIRED
La creación de canalización solicitada requeriría compilación, pero la aplicación solicita que no se realice la compilación.
-
VK_ERROR_OUT_OF_HOST_MEMORY
La asignación de memoria del host falló. -
VK_ERROR_OUT_OF_DEVICE_MEMORY
La asignación de memoria del dispositivo ha fallado. -
VK_ERROR_INITIALIZATION_FAILED
La inicialización de un objeto puede estar incompleta por razones específicas de la implementación. -
VK_ERROR_DEVICE_LOST
Se ha perdido un dispositivo lógico o físico. Ver dispositivos perdidos -
VK_ERROR_MEMORY_MAP_FAILED
La asignación del objeto de memoria falló. -
VK_ERROR_LAYER_NOT_PRESENT
La capa solicitada no existe o no se puede cargar. -
VK_ERROR_EXTENSION_NOT_PRESENT
La extensión solicitada no es compatible. -
VK_ERROR_FEATURE_NOT_PRESENT
La función solicitada no es compatible. -
VK_ERROR_INCOMPATIBLE_DRIVER
La versión solicitada de Vulkan no es compatible con el controlador o es una causa específica de la implementación. -
VK_ERROR_TOO_MANY_OBJECTS
Se han creado demasiados objetos de este tipo. -
VK_ERROR_FORMAT_NOT_SUPPORTED
El formato solicitado no es compatible con este dispositivo. -
VK_ERROR_FRAGMENTED_POOL
La asignación del grupo falló debido a la fragmentación de la memoria del grupo. Esta información debe devolverse solo si no se intentó asignar ningún host o dispositivo y se creó memoria para acomodar la nueva asignación. Esto debe devolverse preferentemente, pero solo si la implementación determina que el error de asignación del grupo se debió a la fragmentación.VK_ERROR_OUT_OF_POOL_MEMORY
-
VK_ERROR_SURFACE_LOST_KHR
Las superficies ya no están disponibles. -
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR
La ventana solicitada ya existe y Vulkan u otras API impiden que se vuelva a utilizar. -
VK_ERROR_OUT_OF_DATE_KHR
La superficie ha cambiado de tal manera que ya no es compatible con la cadena de intercambio, y fallarán las solicitudes de procesamiento adicionales que utilicen la cadena de intercambio. Las aplicaciones deben consultar las nuevas propiedades de la superficie y recrear su cadena de intercambio si desean continuar presentando en la superficie. -
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR
Las pantallas utilizadas por la cadena de intercambio no utilizan el mismo diseño de imagen renderizable, o están de una manera que impide que las imágenes se compartan. -
VK_ERROR_INVALID_SHADER_NV
Uno o más sombreadores no pudieron compilarse o vincularse. Si está habilitado, se informarán más detalles a la aplicación.VK_EXT_debug_report
-
VK_ERROR_OUT_OF_POOL_MEMORY
Falló la asignación de memoria del grupo. Esta información debe devolverse solo si no se intentó asignar ningún host o dispositivo y se creó memoria para acomodar la nueva asignación. Si el error se debe definitivamente a la fragmentación del grupo , debe devolverse en su lugar.VK_ERROR_FRAGMENTED_POOL
-
VK_ERROR_INVALID_EXTERNAL_HANDLE
Identificador externo no válido para el tipo de identificador especificado. -
VK_ERROR_FRAGMENTATION
La creación del grupo de descriptores falló debido a la fragmentación. -
VK_ERROR_INVALID_DEVICE_ADDRESS_EXT
La creación del búfer falló porque la dirección solicitada no está disponible. -
VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
La creación del búfer o la asignación de memoria fallaron porque la dirección solicitada no está disponible. La asignación del identificador del grupo de sombreadores falló porque la información solicitada del identificador del grupo de sombreadores ya no es válida. -
VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
Sin acceso exclusivo a pantalla completa a las cadenas de intercambio que fallaron en la creación. Esto puede ocurrir por razones dependientes de la implementación en los controles de la aplicación.VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
-
VK_ERROR_COMPRESSION_EXHAUSTED_EXT
La creación de la imagen falló porque se agotaron los recursos internos necesarios para la compresión. Este valor solo debe devolverse cuando se solicita una compresión de tasa fija . -
VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR
No se admiten los VkImageUsageFlags solicitados. -
VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR
El diseño de imagen de video solicitado no es compatible. -
VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR
El perfil de video no admite la operación especificada a través de VkVideoProfileInfoKHR ::.videoCodecOperation
-
VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR
El formato del parámetro de configuración no es compatible con la cadena VkVideoProfileInfoKHR solicitada. -
VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR
No se admiten los parámetros de la cadena VkVideoProfileInfoKHR específicos de las solicitudes de códec . -
VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR
El video especificado no es compatible con la versión de encabezado estándar. -
VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR
El parámetro estándar de video especificado no cumple con los requisitos sintácticos o semánticos del estándar de compresión de video utilizado o el valor derivado del parámetro no cumple con el estándar de compresión de video o la implementación de acuerdo con las reglas definidas por el estándar de compresión de video utilizado. -
VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT
El código de sombreado binario proporcionado no es compatible con este dispositivo. -
VK_ERROR_UNKNOWN
Se produjo un error desconocido; la aplicación proporcionó una entrada no válida o se produjo un error de implementación.
Si el comando devuelve un error de tiempo de ejecución, los argumentos de salida tendrán un contenido indefinido a menos que se especifique lo contrario y, a menos que el argumento de salida sea una estructura con campos y, esos campos no se modificarán. Cualquier estructura vinculada también tendrá contenido indefinido, entre otras cosas, y no se modificará.sType
pNext
pNext
sType
pNext
VK_ERROR_OUT_OF_*_MEMORY
Los errores no modificarán ningún objeto Vulcan existente actualmente. La aplicación aún puede utilizar los objetos que se han creado correctamente .
Aviso
Como regla general, los comandos , y no pueden devolver, mientras que cualquier otro con un código de retorno puede devolverlo. Para estos comandos, se describen las excepciones a esta regla. |
VK_ERROR_UNKNOWN
Será devuelto por la implementación cuando ocurra un error inesperado, no imputable a la aplicación e implementación. En estas condiciones, se puede devolver desde cualquier comando que devuelva un VkResult .
Aviso
|
Los comandos críticos para el rendimiento normalmente no tienen códigos de retorno. Si se produce un error de tiempo de ejecución en dicho comando, la implementación retrasará el informe del error hasta el punto especificado. Para los comandos que se registran en commandbuffer(), los errores de tiempo de ejecución se notifican mediante.vkCmd*
vkEndCommandBuffer
Comentarios de la documentación
Para obtener más información, consulte la especificación de Vulkan
Esta página es un extracto de la especificación Vulkan. Las correcciones y los cambios se deben realizar en la especificación, no directamente.