Files
Cortex_Engine/src/Engine.Graphics.Vulkan/VulkanStructs.cs
T
emil28092005 ab1a2d05c3 fix: enable imageCubeArray feature + transition all 24 shadow layers
Two validation errors fixed:
1. imageCubeArray feature not enabled → added VkPhysicalDeviceImageCubeArrayFeatures
   to device creation chain (pNext: cubeArray → sync2 → dynamicRendering)
2. Shadow layers 18-23 in UNDEFINED layout → transition ALL 24 layers
   (MaxShadowLights * 6) instead of only numShadowLights * 6
   Descriptor references all 24 layers via CubeArray view
2026-06-19 08:59:22 +03:00

1097 lines
32 KiB
C#

using System.Runtime.InteropServices;
namespace Engine.Graphics.Vulkan;
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkExtent2D
{
public uint Width;
public uint Height;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkExtent3D
{
public uint Width;
public uint Height;
public uint Depth;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkOffset2D
{
public int X;
public int Y;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkOffset3D
{
public int X;
public int Y;
public int Z;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkRect2D
{
public VkOffset2D Offset;
public VkExtent2D Extent;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkViewport
{
public float X;
public float Y;
public float Width;
public float Height;
public float MinDepth;
public float MaxDepth;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkComponentMapping
{
public VkComponentSwizzle R;
public VkComponentSwizzle G;
public VkComponentSwizzle B;
public VkComponentSwizzle A;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkImageSubresourceRange
{
public VkImageAspectFlags AspectMask;
public uint BaseMipLevel;
public uint LevelCount;
public uint BaseArrayLayer;
public uint LayerCount;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkClearColorValue
{
public float Float0;
public float Float1;
public float Float2;
public float Float3;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkClearDepthStencilValue
{
public float Depth;
public uint Stencil;
}
[StructLayout(LayoutKind.Explicit)]
public unsafe struct VkClearValue
{
[FieldOffset(0)] public VkClearColorValue Color;
[FieldOffset(0)] public VkClearDepthStencilValue DepthStencil;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkApplicationInfo
{
public VkStructureType sType;
public nint pNext;
public byte* pApplicationName;
public uint applicationVersion;
public byte* pEngineName;
public uint engineVersion;
public uint apiVersion;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkInstanceCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkApplicationInfo* pApplicationInfo;
public uint enabledLayerCount;
public byte** ppEnabledLayerNames;
public uint enabledExtensionCount;
public byte** ppEnabledExtensionNames;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDebugUtilsMessengerCreateInfoEXT
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
public VkDebugUtilsMessageTypeFlagsEXT messageType;
public nint pfnUserCallback;
public nint pUserData;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDeviceQueueCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint queueFamilyIndex;
public uint queueCount;
public float* pQueuePriorities;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceFeatures
{
public VkBool32 robustBufferAccess;
public VkBool32 fullDrawIndexUint32;
public VkBool32 imageCubeArray;
public VkBool32 independentBlend;
public VkBool32 geometryShader;
public VkBool32 tessellationShader;
public VkBool32 sampleRateShading;
public VkBool32 dualSrcBlend;
public VkBool32 logicOp;
public VkBool32 multiDrawIndirect;
public VkBool32 drawIndirectFirstInstance;
public VkBool32 depthClamp;
public VkBool32 depthBiasClamp;
public VkBool32 fillModeNonSolid;
public VkBool32 depthBounds;
public VkBool32 wideLines;
public VkBool32 largePoints;
public VkBool32 alphaToOne;
public VkBool32 multiViewport;
public VkBool32 samplerAnisotropy;
public VkBool32 textureCompressionETC2;
public VkBool32 textureCompressionASTC_LDR;
public VkBool32 textureCompressionBC;
public VkBool32 occlusionQueryPrecise;
public VkBool32 pipelineStatisticsQuery;
public VkBool32 vertexPipelineStoresAndAtomics;
public VkBool32 fragmentStoresAndAtomics;
public VkBool32 shaderTessellationAndGeometryPointSize;
public VkBool32 shaderImageGatherExtended;
public VkBool32 shaderStorageImageExtendedFormats;
public VkBool32 shaderStorageImageMultisample;
public VkBool32 shaderStorageImageReadWithoutFormat;
public VkBool32 shaderStorageImageWriteWithoutFormat;
public VkBool32 shaderUniformBufferArrayDynamicIndexing;
public VkBool32 shaderSampledImageArrayDynamicIndexing;
public VkBool32 shaderStorageBufferArrayDynamicIndexing;
public VkBool32 shaderStorageImageArrayDynamicIndexing;
public VkBool32 shaderClipDistance;
public VkBool32 shaderCullDistance;
public VkBool32 shaderFloat64;
public VkBool32 shaderInt64;
public VkBool32 shaderInt16;
public VkBool32 shaderResourceResidency;
public VkBool32 shaderResourceMinLod;
public VkBool32 sparseBinding;
public VkBool32 sparseResidencyBuffer;
public VkBool32 sparseResidencyImage2D;
public VkBool32 sparseResidencyImage3D;
public VkBool32 sparseResidency2Samples;
public VkBool32 sparseResidency4Samples;
public VkBool32 sparseResidency8Samples;
public VkBool32 sparseResidency16Samples;
public VkBool32 sparseResidencyAliased;
public VkBool32 variableMultisampleRate;
public VkBool32 inheritedQueries;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceDynamicRenderingFeatures
{
public VkStructureType sType;
public nint pNext;
public VkBool32 dynamicRendering;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceImageCubeArrayFeatures
{
public VkStructureType sType;
public nint pNext;
public VkBool32 imageCubeArray;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceSynchronization2Features
{
public VkStructureType sType;
public nint pNext;
public VkBool32 synchronization2;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDeviceCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint queueCreateInfoCount;
public VkDeviceQueueCreateInfo* pQueueCreateInfos;
public uint enabledLayerCount;
public byte** ppEnabledLayerNames;
public uint enabledExtensionCount;
public byte** ppEnabledExtensionNames;
public VkPhysicalDeviceFeatures* pEnabledFeatures;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceProperties
{
public uint apiVersion;
public uint driverVersion;
public uint vendorID;
public uint deviceID;
public VkPhysicalDeviceType deviceType;
public fixed byte deviceName[256];
public fixed byte pipelineCacheUUID[16];
public VkPhysicalDeviceLimits Limits;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceLimits
{
public uint maxImageDimension1D;
public uint maxImageDimension2D;
public uint maxImageDimension3D;
public uint maxImageDimensionCube;
public uint maxImageArrayLayers;
public uint maxTexelBufferElements;
public uint maxUniformBufferRange;
public uint maxStorageBufferRange;
public uint maxPushConstantsSize;
public uint maxMemoryAllocationCount;
public uint maxSamplerAllocationCount;
public uint bufferImageGranularity;
public uint sparseAddressSpaceSize;
public uint maxBoundDescriptorSets;
public uint maxPerStageDescriptorSamplers;
public uint maxPerStageDescriptorUniformBuffers;
public uint maxPerStageDescriptorStorageBuffers;
public uint maxPerStageDescriptorSampledImages;
public uint maxPerStageDescriptorStorageImages;
public uint maxPerStageDescriptorInputAttachments;
public uint maxPerStageResources;
public uint maxDescriptorSetSamplers;
public uint maxDescriptorSetUniformBuffers;
public uint maxDescriptorSetUniformBuffersDynamic;
public uint maxDescriptorSetStorageBuffers;
public uint maxDescriptorSetStorageBuffersDynamic;
public uint maxDescriptorSetSampledImages;
public uint maxDescriptorSetStorageImages;
public uint maxDescriptorSetInputAttachments;
public uint maxVertexInputAttributes;
public uint maxVertexInputBindings;
public uint maxVertexInputAttributeOffset;
public uint maxVertexInputBindingStride;
public uint maxVertexOutputComponents;
public uint maxTessellationGenerationLevel;
public uint maxTessellationPatchSize;
public uint maxTessellationControlPerVertexInputComponents;
public uint maxTessellationControlPerVertexOutputComponents;
public uint maxTessellationControlPerPatchOutputComponents;
public uint maxTessellationControlTotalOutputComponents;
public uint maxTessellationEvaluationInputComponents;
public uint maxTessellationEvaluationOutputComponents;
public uint maxGeometryShaderInvocations;
public uint maxGeometryInputComponents;
public uint maxGeometryOutputComponents;
public uint maxGeometryOutputVertices;
public uint maxGeometryTotalOutputComponents;
public uint maxFragmentInputComponents;
public uint maxFragmentOutputAttachments;
public uint maxFragmentDualSrcAttachments;
public uint maxFragmentCombinedOutputResources;
public uint maxComputeSharedMemorySize;
public uint maxComputeWorkGroupCount0;
public uint maxComputeWorkGroupCount1;
public uint maxComputeWorkGroupCount2;
public uint maxComputeWorkGroupInvocations;
public uint maxComputeWorkGroupSize0;
public uint maxComputeWorkGroupSize1;
public uint maxComputeWorkGroupSize2;
public uint subPixelPrecisionBits;
public uint subTexelPrecisionBits;
public uint mipMapPrecisionBits;
public uint maxDrawIndexedIndexValue;
public uint maxDrawIndirectCount;
public float maxSamplerLodBias;
public float maxSamplerAnisotropy;
public uint maxViewports;
public uint maxViewportDimensions0;
public uint maxViewportDimensions1;
public float viewportBoundsRange0;
public float viewportBoundsRange1;
public uint viewportSubPixelBits;
public ulong minMemoryMapAlignment;
public ulong minTexelBufferOffsetAlignment;
public ulong minUniformBufferOffsetAlignment;
public ulong minStorageBufferOffsetAlignment;
public int minTexelOffset;
public uint maxTexelOffset;
public int minTexelGatherOffset;
public uint maxTexelGatherOffset;
public float minInterpolationOffset;
public float maxInterpolationOffset;
public uint subPixelInterpolationOffsetBits;
public uint maxFramebufferWidth;
public uint maxFramebufferHeight;
public uint maxFramebufferLayers;
public uint maxColorAttachments;
public uint maxSampleMaskWords;
public float timestampPeriod;
public uint maxClipDistances;
public uint maxCullDistances;
public uint maxCombinedClipAndCullDistances;
public uint discreteQueuePriorities;
public float pointSizeRange0;
public float pointSizeRange1;
public float lineWidthRange0;
public float lineWidthRange1;
public float pointSizeGranularity;
public float lineWidthGranularity;
public VkBool32 strictLines;
public VkBool32 standardSampleLocations;
public ulong optimalBufferCopyOffsetAlignment;
public ulong optimalBufferCopyRowPitchAlignment;
public ulong nonCoherentAtomSize;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkQueueFamilyProperties
{
public VkQueueFlags queueFlags;
public uint queueCount;
public uint timestampValidBits;
public VkExtent3D minImageTransferGranularity;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkMemoryType
{
public VkMemoryPropertyFlags propertyFlags;
public uint heapIndex;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkMemoryHeap
{
public ulong size;
public uint flags;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPhysicalDeviceMemoryProperties
{
public uint memoryTypeCount;
public VkMemoryType memoryTypes0;
public VkMemoryType memoryTypes1;
public VkMemoryType memoryTypes2;
public VkMemoryType memoryTypes3;
public VkMemoryType memoryTypes4;
public VkMemoryType memoryTypes5;
public VkMemoryType memoryTypes6;
public VkMemoryType memoryTypes7;
public VkMemoryType memoryTypes8;
public VkMemoryType memoryTypes9;
public VkMemoryType memoryTypes10;
public VkMemoryType memoryTypes11;
public VkMemoryType memoryTypes12;
public VkMemoryType memoryTypes13;
public VkMemoryType memoryTypes14;
public VkMemoryType memoryTypes15;
public VkMemoryType memoryTypes16;
public VkMemoryType memoryTypes17;
public VkMemoryType memoryTypes18;
public VkMemoryType memoryTypes19;
public VkMemoryType memoryTypes20;
public VkMemoryType memoryTypes21;
public VkMemoryType memoryTypes22;
public VkMemoryType memoryTypes23;
public VkMemoryType memoryTypes24;
public VkMemoryType memoryTypes25;
public VkMemoryType memoryTypes26;
public VkMemoryType memoryTypes27;
public VkMemoryType memoryTypes28;
public VkMemoryType memoryTypes29;
public VkMemoryType memoryTypes30;
public VkMemoryType memoryTypes31;
public uint memoryHeapCount;
public VkMemoryHeap memoryHeaps0;
public VkMemoryHeap memoryHeaps1;
public VkMemoryHeap memoryHeaps2;
public VkMemoryHeap memoryHeaps3;
public VkMemoryHeap memoryHeaps4;
public VkMemoryHeap memoryHeaps5;
public VkMemoryHeap memoryHeaps6;
public VkMemoryHeap memoryHeaps7;
public VkMemoryHeap memoryHeaps8;
public VkMemoryHeap memoryHeaps9;
public VkMemoryHeap memoryHeaps10;
public VkMemoryHeap memoryHeaps11;
public VkMemoryHeap memoryHeaps12;
public VkMemoryHeap memoryHeaps13;
public VkMemoryHeap memoryHeaps14;
public VkMemoryHeap memoryHeaps15;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSurfaceCapabilitiesKHR
{
public uint minImageCount;
public uint maxImageCount;
public VkExtent2D currentExtent;
public VkExtent2D minImageExtent;
public VkExtent2D maxImageExtent;
public uint maxImageArrayLayers;
public VkSurfaceTransformFlagsKHR supportedTransforms;
public VkSurfaceTransformFlagsKHR currentTransform;
public VkCompositeAlphaFlagsKHR supportedCompositeAlpha;
public VkImageUsageFlags supportedUsageFlags;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSurfaceFormatKHR
{
public VkFormat format;
public VkColorSpaceKHR colorSpace;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSwapchainCreateInfoKHR
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkSurfaceKHR surface;
public uint minImageCount;
public VkFormat imageFormat;
public VkColorSpaceKHR imageColorSpace;
public VkExtent2D imageExtent;
public uint imageArrayLayers;
public VkImageUsageFlags imageUsage;
public VkSharingMode imageSharingMode;
public uint queueFamilyIndexCount;
public uint* pQueueFamilyIndices;
public VkSurfaceTransformFlagsKHR preTransform;
public VkCompositeAlphaFlagsKHR compositeAlpha;
public VkPresentModeKHR presentMode;
public VkBool32 clipped;
public VkSwapchainKHR oldSwapchain;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkImageViewCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkImage image;
public VkImageViewType viewType;
public VkFormat format;
public VkComponentMapping components;
public VkImageSubresourceRange subresourceRange;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkShaderModuleCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public nuint codeSize;
public uint* pCode;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineShaderStageCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkShaderStageFlags stage;
public VkShaderModule module;
public byte* pName;
public nint pSpecializationInfo;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkVertexInputBindingDescription
{
public uint binding;
public uint stride;
public VkVertexInputRate inputRate;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkVertexInputAttributeDescription
{
public uint location;
public uint binding;
public VkFormat format;
public uint offset;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineVertexInputStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint vertexBindingDescriptionCount;
public VkVertexInputBindingDescription* pVertexBindingDescriptions;
public uint vertexAttributeDescriptionCount;
public VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineInputAssemblyStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkPrimitiveTopology topology;
public VkBool32 primitiveRestartEnable;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineViewportStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint viewportCount;
public VkViewport* pViewports;
public uint scissorCount;
public VkRect2D* pScissors;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineRasterizationStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkBool32 depthClampEnable;
public VkBool32 rasterizerDiscardEnable;
public VkPolygonMode polygonMode;
public VkCullModeFlags cullMode;
public VkFrontFace frontFace;
public VkBool32 depthBiasEnable;
public float depthBiasConstantFactor;
public float depthBiasClamp;
public float depthBiasSlopeFactor;
public float lineWidth;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineMultisampleStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkSampleCountFlags rasterizationSamples;
public VkBool32 sampleShadingEnable;
public float minSampleShading;
public nint pSampleMask;
public VkBool32 alphaToCoverageEnable;
public VkBool32 alphaToOneEnable;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineColorBlendAttachmentState
{
public VkBool32 blendEnable;
public VkBlendFactor srcColorBlendFactor;
public VkBlendFactor dstColorBlendFactor;
public VkBlendOp colorBlendOp;
public VkBlendFactor srcAlphaBlendFactor;
public VkBlendFactor dstAlphaBlendFactor;
public VkBlendOp alphaBlendOp;
public VkColorComponentFlags colorWriteMask;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineColorBlendStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkBool32 logicOpEnable;
public int logicOp;
public uint attachmentCount;
public VkPipelineColorBlendAttachmentState* pAttachments;
public float blendConstants0;
public float blendConstants1;
public float blendConstants2;
public float blendConstants3;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineDynamicStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint dynamicStateCount;
public VkDynamicState* pDynamicStates;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineLayoutCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint setLayoutCount;
public VkDescriptorSetLayout* pSetLayouts;
public uint pushConstantRangeCount;
public nint pPushConstantRanges;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineRenderingCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint viewMask;
public uint colorAttachmentCount;
public VkFormat* pColorAttachmentFormats;
public VkFormat depthAttachmentFormat;
public VkFormat stencilAttachmentFormat;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkGraphicsPipelineCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint stageCount;
public VkPipelineShaderStageCreateInfo* pStages;
public VkPipelineVertexInputStateCreateInfo* pVertexInputState;
public VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
public nint pTessellationState;
public VkPipelineViewportStateCreateInfo* pViewportState;
public VkPipelineRasterizationStateCreateInfo* pRasterizationState;
public VkPipelineMultisampleStateCreateInfo* pMultisampleState;
public VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
public VkPipelineColorBlendStateCreateInfo* pColorBlendState;
public VkPipelineDynamicStateCreateInfo* pDynamicState;
public VkPipelineLayout layout;
public VkRenderPass renderPass;
public uint subpass;
public VkPipeline basePipelineHandle;
public int basePipelineIndex;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkRenderPass { public nint Handle; }
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkCommandPoolCreateInfo
{
public VkStructureType sType;
public nint pNext;
public VkCommandPoolCreateFlags flags;
public uint queueFamilyIndex;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkCommandBufferAllocateInfo
{
public VkStructureType sType;
public nint pNext;
public VkCommandPool commandPool;
public VkCommandBufferLevel level;
public uint commandBufferCount;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkCommandBufferBeginInfo
{
public VkStructureType sType;
public nint pNext;
public VkCommandBufferUsageFlags flags;
public nint pInheritanceInfo;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSemaphoreCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkFenceCreateInfo
{
public VkStructureType sType;
public nint pNext;
public VkFenceCreateFlags flags;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkBufferCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public ulong size;
public VkBufferUsageFlags usage;
public VkSharingMode sharingMode;
public uint queueFamilyIndexCount;
public uint* pQueueFamilyIndices;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkMemoryAllocateInfo
{
public VkStructureType sType;
public nint pNext;
public ulong allocationSize;
public uint memoryTypeIndex;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkMemoryRequirements
{
public ulong size;
public ulong alignment;
public uint memoryTypeBits;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkBufferCopy
{
public ulong srcOffset;
public ulong dstOffset;
public ulong size;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkRenderingAttachmentInfo
{
public VkStructureType sType;
public nint pNext;
public VkImageView imageView;
public VkImageLayout imageLayout;
public int resolveMode;
public VkImageView resolveImageView;
public VkImageLayout resolveImageLayout;
public VkAttachmentLoadOp loadOp;
public VkAttachmentStoreOp storeOp;
public VkClearValue clearValue;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkRenderingInfo
{
public VkStructureType sType;
public nint pNext;
public VkRenderingFlags flags;
public VkRect2D renderArea;
public uint layerCount;
public uint viewMask;
public uint colorAttachmentCount;
public VkRenderingAttachmentInfo* pColorAttachments;
public VkRenderingAttachmentInfo* pDepthAttachment;
public nint pStencilAttachment;
}
[StructLayout(LayoutKind.Explicit)]
public unsafe struct VkImageMemoryBarrier2
{
[FieldOffset(0)] public VkStructureType sType;
[FieldOffset(8)] public nint pNext;
[FieldOffset(16)] public ulong srcStageMask;
[FieldOffset(24)] public ulong srcAccessMask;
[FieldOffset(32)] public ulong dstStageMask;
[FieldOffset(40)] public ulong dstAccessMask;
[FieldOffset(48)] public VkImageLayout oldLayout;
[FieldOffset(52)] public VkImageLayout newLayout;
[FieldOffset(56)] public uint srcQueueFamilyIndex;
[FieldOffset(60)] public uint dstQueueFamilyIndex;
[FieldOffset(64)] public VkImage image;
[FieldOffset(72)] public VkImageSubresourceRange subresourceRange;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkBufferMemoryBarrier2
{
public VkStructureType sType;
public nint pNext;
public VkPipelineStageFlags2 srcStageMask;
public VkAccessFlags2 srcAccessMask;
public VkPipelineStageFlags2 dstStageMask;
public VkAccessFlags2 dstAccessMask;
public uint srcQueueFamilyIndex;
public uint dstQueueFamilyIndex;
public VkBuffer buffer;
public ulong offset;
public ulong size;
}
[StructLayout(LayoutKind.Explicit)]
public unsafe struct VkDependencyInfo
{
[FieldOffset(0)] public VkStructureType sType;
[FieldOffset(8)] public nint pNext;
[FieldOffset(16)] public VkDependencyFlags dependencyFlags;
[FieldOffset(20)] public uint memoryBarrierCount;
[FieldOffset(24)] public nint pMemoryBarriers;
[FieldOffset(32)] public uint bufferMemoryBarrierCount;
[FieldOffset(40)] public VkBufferMemoryBarrier2* pBufferMemoryBarriers;
[FieldOffset(48)] public uint imageMemoryBarrierCount;
[FieldOffset(56)] public VkImageMemoryBarrier2* pImageMemoryBarriers;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSemaphoreSubmitInfo
{
public VkStructureType sType;
public nint pNext;
public VkSemaphore semaphore;
public ulong value;
public ulong stageMask;
public uint deviceIndex;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkCommandBufferSubmitInfo
{
public VkStructureType sType;
public nint pNext;
public VkCommandBuffer commandBuffer;
public uint deviceMask;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSubmitInfo2
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint waitSemaphoreInfoCount;
public VkSemaphoreSubmitInfo* pWaitSemaphoreInfos;
public uint commandBufferInfoCount;
public VkCommandBufferSubmitInfo* pCommandBufferInfos;
public uint signalSemaphoreInfoCount;
public VkSemaphoreSubmitInfo* pSignalSemaphoreInfos;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPresentInfoKHR
{
public VkStructureType sType;
public nint pNext;
public uint waitSemaphoreCount;
public VkSemaphore* pWaitSemaphores;
public uint swapchainCount;
public VkSwapchainKHR* pSwapchains;
public uint* pImageIndices;
public VkResult* pResults;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDebugUtilsMessengerCallbackDataEXT
{
public VkStructureType sType;
public nint pNext;
public uint messageId;
public byte* pMessageIdName;
public uint messageSeverity;
public uint messageTypes;
public byte* pMessage;
public uint queueLabelCount;
public nint pQueueLabels;
public uint cmdBufLabelCount;
public nint pCmdBufLabels;
public uint objectCount;
public nint pObjects;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkStencilOpState
{
public int failOp;
public int passOp;
public int depthFailOp;
public int compareOp;
public uint compareMask;
public uint writeMask;
public uint reference;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPipelineDepthStencilStateCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkBool32 depthTestEnable;
public VkBool32 depthWriteEnable;
public VkCompareOp depthCompareOp;
public VkBool32 depthBoundsTestEnable;
public VkBool32 stencilTestEnable;
public VkStencilOpState front;
public VkStencilOpState back;
public float minDepthBounds;
public float maxDepthBounds;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkImageCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkImageType imageType;
public VkFormat format;
public VkExtent3D extent;
public uint mipLevels;
public uint arrayLayers;
public VkSampleCountFlags samples;
public VkImageTiling tiling;
public VkImageUsageFlags usage;
public VkSharingMode sharingMode;
public uint queueFamilyIndexCount;
public uint* pQueueFamilyIndices;
public VkImageLayout initialLayout;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkImageSubresourceLayers
{
public VkImageAspectFlags aspectMask;
public uint mipLevel;
public uint baseArrayLayer;
public uint layerCount;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkBufferImageCopyRegion
{
public ulong bufferOffset;
public uint bufferRowLength;
public uint bufferImageHeight;
public VkImageSubresourceLayers imageSubresource;
public VkOffset3D imageOffset;
public VkExtent3D imageExtent;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkSamplerCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public VkFilter magFilter;
public VkFilter minFilter;
public VkSamplerMipmapMode mipmapMode;
public VkSamplerAddressMode addressModeU;
public VkSamplerAddressMode addressModeV;
public VkSamplerAddressMode addressModeW;
public float mipLodBias;
public VkBool32 anisotropyEnable;
public float maxAnisotropy;
public VkBool32 compareEnable;
public VkCompareOp compareOp;
public float minLod;
public float maxLod;
public int borderColor;
public VkBool32 unnormalizedCoordinates;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorImageInfo
{
public VkSampler sampler;
public VkImageView imageView;
public VkImageLayout imageLayout;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkPushConstantRange
{
public VkShaderStageFlags stageFlags;
public uint offset;
public uint size;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorSetLayoutBinding
{
public uint binding;
public VkDescriptorType descriptorType;
public uint descriptorCount;
public VkShaderStageFlags stageFlags;
public nint pImmutableSamplers;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorSetLayoutCreateInfo
{
public VkStructureType sType;
public nint pNext;
public uint flags;
public uint bindingCount;
public VkDescriptorSetLayoutBinding* pBindings;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorPoolSize
{
public VkDescriptorType type;
public uint descriptorCount;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorPoolCreateInfo
{
public VkStructureType sType;
public nint pNext;
public VkDescriptorPoolCreateFlags flags;
public uint maxSets;
public uint poolSizeCount;
public VkDescriptorPoolSize* pPoolSizes;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorSetAllocateInfo
{
public VkStructureType sType;
public nint pNext;
public VkDescriptorPool descriptorPool;
public uint descriptorSetCount;
public VkDescriptorSetLayout* pSetLayouts;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkDescriptorBufferInfo
{
public VkBuffer buffer;
public ulong offset;
public ulong range;
}
[StructLayout(LayoutKind.Sequential)]
public unsafe struct VkWriteDescriptorSet
{
public VkStructureType sType;
public nint pNext;
public VkDescriptorSet dstSet;
public uint dstBinding;
public uint dstArrayElement;
public uint descriptorCount;
public VkDescriptorType descriptorType;
public nint pImageInfo;
public VkDescriptorBufferInfo* pBufferInfo;
public nint pTexelBufferView;
}