amerkoleci / Vortice.Vulkan

Cross platform .NET bindings for Vulkan, VMA, SPIRV-Cross and shaderc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VkAccelerationStructureMatrixMotionInstanceNV is a bit-field structure

CLOWREAD opened this issue · comments

auto size_cpp = sizeof(VkAccelerationStructureMatrixMotionInstanceNV);
size_cpp == 112

var vortice_s = sizeof(Vortice.Vulkan.VkAccelerationStructureMatrixMotionInstanceNV);
vortice_s == 120

typedef struct VkAccelerationStructureMatrixMotionInstanceNV {
    VkTransformMatrixKHR          transformT0;
    VkTransformMatrixKHR          transformT1;
    uint32_t                      instanceCustomIndex:24;
    uint32_t                      mask:8;
    uint32_t                      instanceShaderBindingTableRecordOffset:24;
    VkGeometryInstanceFlagsKHR    flags:8;
    uint64_t                      accelerationStructureReference;
} 

The struct might be handled manually

// Handled manually.
if (cppClass.Name == "VkClearColorValue"
    || cppClass.Name == "VkTransformMatrixKHR"
    || cppClass.Name == "VkAccelerationStructureInstanceKHR"
    )
{
    continue;
}

The struct "VkAccelerationStructureSRTMotionInstanceNV" has similar problem;

[StructLayout(LayoutKind.Explicit)]
public partial struct VkAccelerationStructureSRTMotionInstanceNV
{
    [FieldOffset(0)]
	public VkSRTDataNV transformT0;
    [FieldOffset(64)]
	public VkSRTDataNV transformT1;
    [FieldOffset(128)]
	public uint instanceCustomIndex;
    [FieldOffset(131)]
	public uint mask;
    [FieldOffset(132)]
	public uint instanceShaderBindingTableRecordOffset;
    [FieldOffset(135)]
	public VkGeometryInstanceFlagsKHR flags;
    [FieldOffset(136)]
	public ulong accelerationStructureReference;
}

	[StructLayout(LayoutKind.Explicit)]
public partial struct VkAccelerationStructureMatrixMotionInstanceNV
{
    [FieldOffset(0)]
	public VkTransformMatrixKHR transformT0;
    [FieldOffset(48)]
	public VkTransformMatrixKHR transformT1;
    [FieldOffset(96)]
	public uint instanceCustomIndex;
    [FieldOffset(99)]
	public uint mask;
    [FieldOffset(100)]
	public uint instanceShaderBindingTableRecordOffset;
    [FieldOffset(103)]
	public VkGeometryInstanceFlagsKHR flags;
    [FieldOffset(104)]
	public ulong accelerationStructureReference;
}

Thanks for bringing this issue, commit 69b5d41 fixes this and version 1.4.2 will contain the fix.