// Copyright 2019-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// Common Valid Usage
// Common to trace rays indirect commands

  * [[VUID-{refpage}-indirectDeviceAddress-03632]]
    If the buffer from which pname:indirectDeviceAddress was queried is
    non-sparse then it must: be bound completely and contiguously to a
    single sname:VkDeviceMemory object
  * [[VUID-{refpage}-indirectDeviceAddress-03633]]
    The buffer from which pname:indirectDeviceAddress was queried must: have
    been created with the ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
  * [[VUID-{refpage}-indirectDeviceAddress-03634]]
    pname:indirectDeviceAddress must: be a multiple of `4`
  * [[VUID-{refpage}-indirectDeviceAddress-03636]]
    All device addresses between pname:indirectDeviceAddress and
    [eq]#pname:indirectDeviceAddress {plus} code:sizeof(sname:{cmdstruct}) -
    1# must: be in the buffer device address range of the same buffer
  * [[VUID-{refpage}-{feature}-03637]]
    The <<features-{feature}, pname:{feature}>> feature must: be enabled
ifdef::VK_NV_ray_tracing_motion_blur[]
  * [[VUID-{refpage}-rayTracingMotionBlurPipelineTraceRaysIndirect-04951]]
    If the bound ray tracing pipeline was created with
    ename:VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
    sname:VkPhysicalDeviceRayTracingMotionBlurFeaturesNV::pname:rayTracingMotionBlurPipelineTraceRaysIndirect
    feature must: be enabled
endif::VK_NV_ray_tracing_motion_blur[]

// Common Valid Usage
