Código de retorno de comando de Vulkan, colección de códigos de error de Vulkan, explicación detallada del código de error de Vulkan

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

código de éxito
  • VK_SUCCESScomando completado con éxito

  • VK_NOT_READYValla o consulta aún no completa

  • VK_TIMEOUTLa operación de espera no ha sido dentro del tiempo especificado

  • VK_EVENT_SETseñalar un evento

  • VK_EVENT_RESETevento no señalado

  • VK_INCOMPLETELa matriz devuelta es demasiado pequeña para el resultado.

  • VK_SUBOPTIMAL_KHRYa 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_KHRLa operación diferida no está completa, pero este subproceso actualmente no tiene trabajo que hacer en el momento de esta llamada.

  • VK_THREAD_DONE_KHRLa operación diferida no se completó, pero no quedó trabajo para distribuir a otros subprocesos.

  • VK_OPERATION_DEFERRED_KHRSe solicitó el aplazamiento de la operación, y se aplazó al menos parte del trabajo.

  • VK_OPERATION_NOT_DEFERRED_KHRSe solicitó una operación aplazada y no se aplazó ninguna operación.

  • VK_PIPELINE_COMPILE_REQUIREDLa creación de canalización solicitada requeriría compilación, pero la aplicación solicita que no se realice la compilación.

código de error
  • VK_ERROR_OUT_OF_HOST_MEMORYLa asignación de memoria del host falló.

  • VK_ERROR_OUT_OF_DEVICE_MEMORYLa asignación de memoria del dispositivo ha fallado.

  • VK_ERROR_INITIALIZATION_FAILEDLa inicialización de un objeto puede estar incompleta por razones específicas de la implementación.

  • VK_ERROR_DEVICE_LOSTSe ha perdido un dispositivo lógico o físico. Ver dispositivos perdidos

  • VK_ERROR_MEMORY_MAP_FAILEDLa asignación del objeto de memoria falló.

  • VK_ERROR_LAYER_NOT_PRESENTLa capa solicitada no existe o no se puede cargar.

  • VK_ERROR_EXTENSION_NOT_PRESENTLa extensión solicitada no es compatible.

  • VK_ERROR_FEATURE_NOT_PRESENTLa función solicitada no es compatible.

  • VK_ERROR_INCOMPATIBLE_DRIVERLa 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_OBJECTSSe han creado demasiados objetos de este tipo.

  • VK_ERROR_FORMAT_NOT_SUPPORTEDEl formato solicitado no es compatible con este dispositivo.

  • VK_ERROR_FRAGMENTED_POOLLa 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_KHRLas superficies ya no están disponibles.

  • VK_ERROR_NATIVE_WINDOW_IN_USE_KHRLa ventana solicitada ya existe y Vulkan u otras API impiden que se vuelva a utilizar.

  • VK_ERROR_OUT_OF_DATE_KHRLa 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_KHRLas 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_NVUno 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_MEMORYFalló 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_HANDLEIdentificador externo no válido para el tipo de identificador especificado.

  • VK_ERROR_FRAGMENTATIONLa creación del grupo de descriptores falló debido a la fragmentación.

  • VK_ERROR_INVALID_DEVICE_ADDRESS_EXTLa creación del búfer falló porque la dirección solicitada no está disponible.

  • VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESSLa 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_EXTSin 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_EXTLa 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_KHREl diseño de imagen de video solicitado no es compatible.

  • VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHREl perfil de video no admite  la operación especificada a través de VkVideoProfileInfoKHR ::.videoCodecOperation

  • VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHREl 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_KHREl video especificado no es compatible con la versión de encabezado estándar.

  • VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHREl 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_EXTEl código de sombreado binario proporcionado no es compatible con este dispositivo.

  • VK_ERROR_UNKNOWNSe 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á.sTypepNextpNextsTypepNext

VK_ERROR_OUT_OF_*_MEMORYLos 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.FreeReleaseResetVK_ERROR_OUT_OF_HOST_MEMORY

VK_ERROR_UNKNOWNSerá 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

VK_ERROR_UNKNOWNSe espera que nunca regrese, si el comportamiento de la aplicación es válido y la implementación está libre de errores. Si se recibe, la aplicación debe verificarse con la última capa de autenticación para verificar que es posible el comportamiento correcto. Si no se encuentran problemas, puede haber un problema de implementación y se debe contactar al implementador para obtener asistencia.VK_ERROR_UNKNOWN

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.

Supongo que te gusta

Origin blog.csdn.net/a2831942318/article/details/129928762
Recomendado
Clasificación