Vulkan命令返回代码,Vulkan错误码大全,Vulkan错误码详细解释

虽然核心 Vulkan API 并非旨在捕获不正确的使用情况,但一些 情况仍然需要返回代码。 Vulkan 中的命令通过返回代码返回其状态,这些返回代码位于以下之一中 两类:

  • 当命令需要 传达成功或状态信息。 所有成功的完成代码都是非负值。

  • 当命令需要传达 只能在运行时检测到的故障。 所有运行时错误代码均为负值。

Vulkan 中的所有返回代码都通过 VkResult 返回值报告。 可能的代码是:

// 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;

描述

成功代码
  • VK_SUCCESS命令已成功完成

  • VK_NOT_READY栅栏或查询尚未完成

  • VK_TIMEOUT等待操作尚未在指定的 时间

  • VK_EVENT_SET发出事件信号

  • VK_EVENT_RESET事件未发出信号

  • VK_INCOMPLETE返回数组对于结果来说太小

  • VK_SUBOPTIMAL_KHR交换链不再与表面匹配 完全是属性,但仍可用于呈现到表面 成功。

  • VK_THREAD_IDLE_KHR延迟的操作未完成,但存在 在此调用时,此线程当前没有工作要做。

  • VK_THREAD_DONE_KHR延迟的操作未完成,但存在 没有剩余的工作分配给其他线程。

  • VK_OPERATION_DEFERRED_KHR请求推迟操作,并且 至少有一些工作被推迟了。

  • VK_OPERATION_NOT_DEFERRED_KHR请求延迟操作 并且没有推迟任何操作。

  • VK_PIPELINE_COMPILE_REQUIRED请求的管道创建将 需要编译,但应用程序请求编译为 不执行。

错误代码
  • VK_ERROR_OUT_OF_HOST_MEMORY主机内存分配失败。

  • VK_ERROR_OUT_OF_DEVICE_MEMORY设备内存分配具有 失败。

  • VK_ERROR_INITIALIZATION_FAILED对象的初始化可以 由于特定于实现的原因而未完成。

  • VK_ERROR_DEVICE_LOST逻辑或物理设备已丢失。 查看丢失的设备

  • VK_ERROR_MEMORY_MAP_FAILED内存对象的映射失败。

  • VK_ERROR_LAYER_NOT_PRESENT请求的图层不存在或 无法加载。

  • VK_ERROR_EXTENSION_NOT_PRESENT请求的扩展不是 支持。

  • VK_ERROR_FEATURE_NOT_PRESENT不支持请求的功能。

  • VK_ERROR_INCOMPATIBLE_DRIVER请求的 Vulkan 版本是 驱动程序不支持或与 特定于实现的原因。

  • VK_ERROR_TOO_MANY_OBJECTS该类型的对象过多 已创建。

  • VK_ERROR_FORMAT_NOT_SUPPORTED不支持请求的格式 在此设备上。

  • VK_ERROR_FRAGMENTED_POOL池分配由于以下原因而失败 池内存碎片。 仅当未尝试分配主机或设备时,才必须返回此信息 已创建内存以适应新的分配。 这应该优先返回 ,但前提是实现 确定池分配失败是由于碎片造成的。VK_ERROR_OUT_OF_POOL_MEMORY

  • VK_ERROR_SURFACE_LOST_KHR曲面不再可用。

  • VK_ERROR_NATIVE_WINDOW_IN_USE_KHR请求的窗口已存在 被 Vulkan 或其他 API 以阻止其 再次使用。

  • VK_ERROR_OUT_OF_DATE_KHR表面发生了变化,使得 它不再与交换链兼容,并进一步呈现 使用交换链的请求将失败。 应用程序必须查询新的图面属性并重新创建其 交换链,如果他们希望继续向表面展示。

  • VK_ERROR_INCOMPATIBLE_DISPLAY_KHR交换链使用的显示 不使用相同的可呈现图像布局,或者在 阻止共享图像的方式。

  • VK_ERROR_INVALID_SHADER_NV一个或多个着色器编译失败 或链接。 如果启用,更多详细信息将报告回应用程序。VK_EXT_debug_report

  • VK_ERROR_OUT_OF_POOL_MEMORY池内存分配失败。 仅当未尝试分配主机或设备时,才必须返回此信息 已创建内存以适应新的分配。 如果失败肯定是由于池碎片造成的,则应改为返回。VK_ERROR_FRAGMENTED_POOL

  • VK_ERROR_INVALID_EXTERNAL_HANDLE外部句柄无效 指定类型的句柄。

  • VK_ERROR_FRAGMENTATION描述符池创建失败,原因 到碎片化。

  • VK_ERROR_INVALID_DEVICE_ADDRESS_EXT缓冲区创建失败 因为请求的地址不可用。

  • VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS缓冲区创建 或内存分配 失败,因为请求的地址不可用。 着色器组句柄分配失败,因为请求的着色器 组句柄信息不再有效。

  • VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT对 创建时出现故障的交换链 没有独占全屏访问权限。 这可能是由于依赖于实现的原因而发生的, 应用程序的控件。VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT

  • VK_ERROR_COMPRESSION_EXHAUSTED_EXT映像创建失败 因为压缩所需的内部资源已耗尽。 仅当请求固定速率压缩时,才必须返回此值。

  • VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR请求的 VkImageUsageFlags 不受支持。

  • VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR请求的 不支持视频图片布局。

  • VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR视频配置文件 不支持通过 VkVideoProfileInfoKHR:: 指定的操作。videoCodecOperation

  • VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR设置参数格式 在请求的 VkVideoProfileInfoKHR 链中不受支持。

  • VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR特定于编解码器 请求的 VkVideoProfileInfoKHR 链中的参数不是 支持。

  • VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR指定的视频 不支持标准标头版本。

  • VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR指定的视频标准 参数不符合 的句法或语义要求 使用的视频压缩标准或从参数派生的值 根据使用的视频压缩标准定义的规则做 不遵守视频压缩标准或 实现。

  • VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT提供的二进制着色器 代码与此设备不兼容。

  • VK_ERROR_UNKNOWN发生未知错误;要么 应用程序提供了无效的输入,或者实现失败 发生。

如果命令返回运行时错误,除非另有指定,否则任何输出 参数将具有未定义的内容,除非输出 参数是一个结构,带有和字段,那些 字段将不被修改。 任何链接的结构也将具有未定义的内容, 除此之外,并且将不被修改。sTypepNextpNextsTypepNext

VK_ERROR_OUT_OF_*_MEMORY错误不会修改任何当前存在的 火神对象。 已成功创建的对象仍由 应用程序。

注意

作为一般规则,、 和命令可以 不返回 ,而任何其他带有 返回代码可能会返回它。 对于这些命令,描述了此规则的任何例外情况。FreeReleaseResetVK_ERROR_OUT_OF_HOST_MEMORY

VK_ERROR_UNKNOWN将由实现返回,当 发生意外错误,不能归因于 应用和实施。 在这些条件下,可以从任何返回 VkResult 的命令返回它。

注意

VK_ERROR_UNKNOWN预计永远不会返回,如果 应用程序行为有效,并且实现没有错误。 如果收到,应检查申请 针对最新的验证层,以验证正确的行为 可能。 如果未发现问题,则可能是实现问题,并且 应联系实施者以获得支持。VK_ERROR_UNKNOWN

性能关键型命令通常没有返回代码。 如果此类命令中发生运行时错误,则实现将延迟 报告错误,直到指定点。 对于记录到命令缓冲区 () 运行时错误的命令 由 报告。vkCmd*vkEndCommandBuffer

文档注释

有关更多信息,请参阅 Vulkan 规范

此页面摘自 Vulkan 规范。 修复和更改应对规范进行,而不是直接进行。

猜你喜欢

转载自blog.csdn.net/a2831942318/article/details/129928762