vulkan_raw 0.1.9

A raw Vulkan API bindings for Rust.
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]

use std::os::raw::c_void;
use std::ptr;

use crate::*;

enums! {
    enum VkRayTracingShaderGroupTypeKHR {
        GENERAL_KHR = 0,
        TRIANGLES_HIT_GROUP_KHR = 1,
        PROCEDURAL_HIT_GROUP_KHR = 2,
    },
    enum VkShaderGroupShaderKHR {
        GENERAL_KHR = 0,
        CLOSEST_HIT_KHR = 1,
        ANY_HIT_KHR = 2,
        INTERSECTION_KHR = 3,
    },
}

#[repr(C)]
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct VkRayTracingPipelineCreateInfoKHR {
    pub sType: VkStructureType,
    pub pNext: *const c_void,
    pub flags: VkPipelineCreateFlags,
    pub stageCount: u32,
    pub pStages: *const VkPipelineShaderStageCreateInfo,
    pub groupCount: u32,
    pub pGroups: *const VkRayTracingShaderGroupCreateInfoKHR,
    pub maxPipelineRayRecursionDepth: u32,
    pub pLibraryInfo: *const VkPipelineLibraryCreateInfoKHR,
    pub pLibraryInterface: *const VkRayTracingPipelineInterfaceCreateInfoKHR,
    pub pDynamicState: *const VkPipelineDynamicStateCreateInfo,
    pub layout: VkPipelineLayout,
    pub basePipelineHandle: VkPipeline,
    pub basePipelineIndex: i32,
}
impl Default for VkRayTracingPipelineCreateInfoKHR {
    fn default() -> Self {
        Self {
            sType: VkStructureType::RAY_TRACING_PIPELINE_CREATE_INFO_KHR,
            pNext: ptr::null(),
            flags: Default::default(),
            stageCount: Default::default(),
            pStages: ptr::null(),
            groupCount: Default::default(),
            pGroups: ptr::null(),
            maxPipelineRayRecursionDepth: Default::default(),
            pLibraryInfo: ptr::null(),
            pLibraryInterface: ptr::null(),
            pDynamicState: ptr::null(),
            layout: Default::default(),
            basePipelineHandle: Default::default(),
            basePipelineIndex: -1,
        }
    }
}

#[repr(C)]
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct VkRayTracingPipelineInterfaceCreateInfoKHR {
    pub sType: VkStructureType,
    pub pNext: *const c_void,
    pub maxPipelineRayPayloadSize: u32,
    pub maxPipelineRayHitAttributeSize: u32,
}
impl Default for VkRayTracingPipelineInterfaceCreateInfoKHR {
    fn default() -> Self {
        Self {
            sType: VkStructureType::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR,
            pNext: ptr::null(),
            maxPipelineRayPayloadSize: Default::default(),
            maxPipelineRayHitAttributeSize: Default::default(),
        }
    }
}

#[repr(C)]
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct VkRayTracingShaderGroupCreateInfoKHR {
    pub sType: VkStructureType,
    pub pNext: *const c_void,
    pub r#type: VkRayTracingShaderGroupTypeKHR,
    pub generalShader: u32,
    pub closestHitShader: u32,
    pub anyHitShader: u32,
    pub intersectionShader: u32,
    pub pShaderGroupCaptureReplayHandle: *const c_void,
}
impl Default for VkRayTracingShaderGroupCreateInfoKHR {
    fn default() -> Self {
        Self {
            sType: VkStructureType::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR,
            pNext: ptr::null(),
            r#type: VkRayTracingShaderGroupTypeKHR::GENERAL_KHR,
            generalShader: VK_SHADER_UNUSED_KHR,
            closestHitShader: VK_SHADER_UNUSED_KHR,
            anyHitShader: VK_SHADER_UNUSED_KHR,
            intersectionShader: VK_SHADER_UNUSED_KHR,
            pShaderGroupCaptureReplayHandle: ptr::null(),
        }
    }
}

#[repr(C)]
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub struct VkStridedDeviceAddressRegionKHR {
    pub deviceAddress: VkDeviceAddress,
    pub stride: VkDeviceSize,
    pub size: VkDeviceSize,
}

#[repr(C)]
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default)]
pub struct VkTraceRaysIndirectCommandKHR {
    pub width: u32,
    pub height: u32,
    pub depth: u32,
}

#[repr(C)]
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
    pub sType: VkStructureType,
    pub pNext: *mut c_void,
    pub rayTracingPipeline: VkBool32,
    pub rayTracingPipelineShaderGroupHandleCaptureReplay: VkBool32,
    pub rayTracingPipelineShaderGroupHandleCaptureReplayMixed: VkBool32,
    pub rayTracingPipelineTraceRaysIndirect: VkBool32,
    pub rayTraversalPrimitiveCulling: VkBool32,
}
impl Default for VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
    fn default() -> Self {
        Self {
            sType: VkStructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR,
            pNext: ptr::null_mut(),
            rayTracingPipeline: Default::default(),
            rayTracingPipelineShaderGroupHandleCaptureReplay: Default::default(),
            rayTracingPipelineShaderGroupHandleCaptureReplayMixed: Default::default(),
            rayTracingPipelineTraceRaysIndirect: Default::default(),
            rayTraversalPrimitiveCulling: Default::default(),
        }
    }
}

#[repr(C)]
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
    pub sType: VkStructureType,
    pub pNext: *mut c_void,
    pub shaderGroupHandleSize: u32,
    pub maxRayRecursionDepth: u32,
    pub maxShaderGroupStride: u32,
    pub shaderGroupBaseAlignment: u32,
    pub shaderGroupHandleCaptureReplaySize: u32,
    pub maxRayDispatchInvocationCount: u32,
    pub shaderGroupHandleAlignment: u32,
    pub maxRayHitAttributeSize: u32,
}
impl Default for VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
    fn default() -> Self {
        Self {
            sType: VkStructureType::PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR,
            pNext: ptr::null_mut(),
            shaderGroupHandleSize: Default::default(),
            maxRayRecursionDepth: Default::default(),
            maxShaderGroupStride: Default::default(),
            shaderGroupBaseAlignment: Default::default(),
            shaderGroupHandleCaptureReplaySize: Default::default(),
            maxRayDispatchInvocationCount: Default::default(),
            shaderGroupHandleAlignment: Default::default(),
            maxRayHitAttributeSize: Default::default(),
        }
    }
}